docker swarm 下service中的contain 提供websocket服务,连接老是断开?

网络的情况

  • service 是通过swarm下的ingress网络 对外暴露端口3000,对内是80端口
  • swarm ingress 3000端口 是通过nginx 代理流量转发过来的
  • service 下有多个container, container是提供websocket连接的主体

操作

使用socketio 连接Nginx,Nginx转发到3000端口,接着通过swarm ingress 网络转发到对应service的80端口,然后websocket 连接成功。 当client发一个消息给server时,就显示已经断开连接。

希望了解的问题

  1. 这样的代理来连接websocket是否可行?
  2. 在swarm下入和提供稳定的websokcet服务?
阅读 3.2k
1 个回答
✓ 已被采纳新手上路,请多包涵

docker swarm 集群通过service对外暴露的端口,接收流量,随机分配给service下的container,这是在iso网络模型第四层的流量代理,所以无法使用会话粘性(不懂百度名称).

笔者解决方式:在swarm集群内部署一个类似nginx的service,作为代理然后转发流量给对用的container,这样就可以实现会话层的会话粘性代理了