Skip to content

ZeroMQ support in NLB #4188

Open
Open
@bozhang-hpc

Description

@bozhang-hpc

Hi,

I'm trying to send messages between a client outside k8s cluster and a broker inside the cluster using PyZMQ.

  1. I tried using conventional load balancer and gives me a handshake error.
DEBUG:root:Client Socket Event: {'event': <Event.ACCEPTED: 32>, 'value': <Event.CONNECT_RETRIED|BIND_FAILED: 20>, 'endpoint': b'tcp://192.168.0.68:5559', 'description': 'EVENT_ACCEPTED'}
DEBUG:root:Client Socket Event: {'event': <Event.HANDSHAKE_FAILED_NO_DETAIL: 2048>, 'value': <Event.ACCEPTED: 32>, 'endpoint': b'tcp://192.168.0.68:5559', 'description': 'EVENT_HANDSHAKE_FAILED_NO_DETAIL'}
DEBUG:root:Client Socket Event: {'event': <Event.DISCONNECTED: 512>, 'value': <Event.CONNECT_RETRIED|BIND_FAILED: 20>, 'endpoint': b'tcp://192.168.0.68:5559', 'description': 'EVENT_DISCONNECTED'}
  1. Then I tried the nlb with the manifest below but still got same handshake error
apiVersion: v1
kind: Service
metadata:
  name: rexec-broker-external-ip
  labels:
    app: rexec-broker
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-type: external
    service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: instance
    service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
spec:
  selector:
    app: rexec-broker
  ports:
    - name: "client-port"
      port: 5559
      targetPort: 5559
    - name: "control-port-external"
      port: 5561
      targetPort: 5561
  type: LoadBalancer
  loadBalancerClass: service.k8s.aws/nlb
  1. The final workaround is to use the NodePort to directly route my traffics.

So I'm wondering if the AWS nlb supports the ZMQ protocol or I was misconfiguring anything?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions