如何使用haproxy公开暴露mongodb

时间:2020-07-30 19:05:58

标签: mongodb kubernetes haproxy

我有一个Kubernetes集群,该集群运行在端口27017上运行的mongodb服务。此外,我在k8上还有另一个负载均衡器类型的haproxy服务。现在,我想通过此haproxy服务公开公开mongodb。

haproxy.cfg

listen mongo
  bind *:27017
  mode tcp
  server prod-mongodb-svc prod-mongodb-svc.mongodb:27017

每当我尝试连接时,都会出现以下错误:

mongo --host mongo.<redacted>.com:27017

2020-07-30T20:03:29.689 + 0100 E查询[js]错误:无法连接 到服务器mongo。

我已经设置了一条记录,该记录指向mongo.<redacted>.com到AWS上的负载均衡器dns

我检查了haproxy容器,没有日志,似乎根本没有击中haproxy

haproxy.yml

apiVersion: v1
kind: Service
metadata: 
  name: cgg-lb-service
  annotations:
    # Note that the backend talks over HTTP.
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:us-east-2:<redacted>f
    service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "https"
spec: 
  ports: 
  - port: 80
    name: http
    targetPort: 80
    protocol: "TCP"
  - port: 443
    name: https
    targetPort: 80
    protocol: "TCP"
  selector: 
    app: cgg-haproxy
  type: LoadBalancer
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: cgg-haproxy-deployment
  labels:
    app: cgg-haproxy
spec:
  replicas: 5
  selector:
    matchLabels:
      app: cgg-haproxy
  template:
    metadata:
      labels:
        app: cgg-haproxy
    spec:
      containers:
      - name: cgg-haproxy
        image: <redacted>.dkr.ecr.us-east-2.amazonaws.com/haproxy:$TAG
        imagePullPolicy: Always
        ports:
        - containerPort: 80
        resources:
          limits:
            cpu: "50m"
          requests:
            cpu: "25m"

已更新

上述yml现在包括:

  - port: 27017
    name: mongo
    targetPort: 80
    protocol: "TCP"

但是,连接后出现新错误:

2020-07-30T21:48:52.581 + 0100我网络[js] DBClientConnection 无法从mongo.redacted.com:27017接收消息-ProtocolError: recv():消息msgLen 1347703880无效。最小16最大:48000000 2020-07-30T21:48:52.582 + 0100 E查询[js]错误:网络错误 尝试在主机上运行命令“ isMaster”时 'mongo.redacted.com:27017':connect@src/mongo/shell/mongo.js:341:17

0 个答案:

没有答案