使用HAProxy的Websockets负载平衡

时间:2019-02-14 14:52:42

标签: websocket kubernetes haproxy kubernetes-ingress

我正在尝试配置HAProxy入口控制器以正确平衡与websocket的连接。我尝试提高timeout-client,timeout-server和timeout-connect的值,但没有成功。

ingress.yaml

kind: Ingress
metadata:
  namespace: test-deploy
  name: app-test
  labels:
    app: app-test
  annotations:
    ingress.kubernetes.io/rewrite-target: /
    ingress.kubernetes.io/timeout-connect: "5000"
    ingress.kubernetes.io/timeout-client: "5000"
    ingress.kubernetes.io/timeout-server: "5000"
    ingress.kubernetes.io/timeout-tunnel: "3600"
spec:
  rules:
    - host: k8s-test.local.lan
      http:
        paths:
          - path: /app-test
            backend:
              serviceName: app-test
              servicePort: 9000



1 个答案:

答案 0 :(得分:0)

我在HAProxy文档中没有找到有关Websockets支持的确认,但是Quora上的this post表示它的效果很好。您可能需要调整客户端/服务器/隧道超时,有时还需要将网络套接字流量匹配并路由到正确的后端目标。

您可以使用以下命令检查实际的haproxy-inress配向:

kubectl exec -ti haproxy-ingress-pod-name -n ingress-controller -- cat /etc/haproxy/haproxy.cfg

如果集群中有多个入口,则可能需要在注释中为HAProxy入口应使用的每个Ingress对象指定一个代理类:

kubernetes.io/ingress.class: "haproxy"

HAProxy入口与HAProxy几乎相同,可以使用Kubernetes入口对象更新其配置。 您可以在文章中找到有关配置HAProxy和HAProxy Ingress的更多信息:

希望对您有帮助。