Rancher中的WebSocket连接断开';负载平衡器

Rancher中的WebSocket连接断开';负载平衡器,websocket,rancher,Websocket,Rancher,我有一个从浏览器到Rancher内部服务的简单WebSocket连接。 我尝试通过两种方式连接到该服务: 1) 直接发送到服务: browser ---> service 2) 通过Rancher的负载平衡器: browser ---> Load Balancer ---> service 在第一种情况下,一切正常:建立连接并通过它发送消息 在第二种情况下,连接在~50秒后断开。消息通过连接向两个方向正确发送 原因是什么 编辑:我测试了ws和wss协议。在这两种情况下都存在

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

1) 直接发送到服务:

browser ---> service
2) 通过Rancher的负载平衡器:

browser ---> Load Balancer ---> service
在第一种情况下,一切正常:建立连接并通过它发送消息

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

原因是什么


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

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
全局
maxconn 4096
ssl服务器验证无
默认值
模式http
平衡循环赛
选项重新修补
选择转发
超时连接5s
超时队列5s
客户端超时36000s
服务器超时36000s
中的前端http
模式http
bind*:443 ssl crt/etc/haproxy/certificate.pem
默认\u后端rancher\u服务器
#添加用于SSL卸载的标头
http请求集头X-Forwarded-Proto https if{ssl_fc}
如果{Ssl_fc}上的http请求集标头X-Forwarded-Ssl
acl是\u websocket hdr(升级)-i websocket
acl是websocket hdr\u beg(主机)-i ws
如果是websocket,请使用\u后端rancher\u服务器
后端rancher_服务器
服务器websrv1:8080重量1 maxconn 1024
服务器websrv2:8080重量1 maxconn 1024
服务器WebServ3:8080重量1 maxconn 1024
参考:

LB的“Custom haproxy.cfg”部分只能使用相关配置。 请参见屏幕截图:

以下是Rancher中定制haproxy的更多文档链接: