在Rancher的LoadBalancer中删除了WebSocket连接

时间:2018-07-16 11:06:32

标签: websocket rancher

我有从浏览器到Rancher内部服务的简单WebSocket连接。 我尝试通过两种方式连接到该服务:

1)直接转到服务:

browser ---> service

2)通过Rancher的负载均衡器:

browser ---> Load Balancer ---> service

在第一种情况下,一切都很好:建立连接并通过它发送消息。

在第二种情况下,连接在约50秒后断开。通过连接正确地在两个方向上发送消息。

是什么原因?

编辑:我在ws和wss协议中进行了测试。在这两种情况下,都有相同的问题。

1 个答案:

答案 0 :(得分:0)

Rancher负载均衡器内部使用HAProxy,可以根据需要进行自定义。

以下是用于websocket的示例HAProxy配置:

global
  maxconn 4096
  ssl-server-verify none

defaults
  mode http
  balance roundrobin
  option redispatch
  option forwardfor

  timeout connect 5s
  timeout queue 5s
  timeout client 36000s
  timeout server 36000s

frontend http-in
  mode http
  bind *:443 ssl crt /etc/haproxy/certificate.pem
  default_backend rancher_servers

  # Add headers for SSL offloading
  http-request set-header X-Forwarded-Proto https if { ssl_fc }
  http-request set-header X-Forwarded-Ssl on if { ssl_fc }

  acl is_websocket hdr(Upgrade) -i WebSocket
  acl is_websocket hdr_beg(Host) -i ws
  use_backend rancher_servers if is_websocket

backend rancher_servers
  server websrv1 <rancher_server_1_IP>:8080 weight 1 maxconn 1024
  server websrv2 <rancher_server_2_IP>:8080 weight 1 maxconn 1024
  server websrv3 <rancher_server_3_IP>:8080 weight 1 maxconn 1024

参考:https://rancher.com/docs/rancher/v1.6/en/installing-rancher/installing-server/basic-ssl-config/#example-haproxy-configuration

仅相关配置可以在LB的“自定义haproxy.cfg”部分中使用。 看截图: enter image description here

以下是有关Rancher中自定义haproxy的更多文档的链接:https://rancher.com/docs/rancher/v1.6/en/cattle/adding-load-balancers/#custom-haproxy-configuration