网络的情况
- service 是通过swarm下的ingress网络 对外暴露端口3000,对内是80端口
- swarm ingress 3000端口 是通过nginx 代理流量转发过来的
- service 下有多个container, container是提供websocket连接的主体
操作
使用socketio 连接Nginx,Nginx转发到3000端口,接着通过swarm ingress 网络转发到对应service的80端口,然后websocket 连接成功。 当client发一个消息给server时,就显示已经断开连接。
希望了解的问题
- 这样的代理来连接websocket是否可行?
- 在swarm下入和提供稳定的websokcet服务?
docker swarm 集群通过service对外暴露的端口,接收流量,随机分配给service下的container,这是在iso网络模型第四层的流量代理,所以无法使用会话粘性(不懂百度名称).
笔者解决方式:在swarm集群内部署一个类似nginx的service,作为代理然后转发流量给对用的container,这样就可以实现会话层的会话粘性代理了