【发布时间】:2017-02-05 22:51:02
【问题描述】:
我有一个在生产中需要 websocket 连接的网络服务器。我使用 docker-compose 和 nginx 作为代理来部署它。 所以我的撰写文件看起来像这样:
version: '2'
services:
app:
restart: always
nginx:
restart: always
ports:
- "80:80"
现在,如果我将“app”服务扩展到多个实例,docker-compose 将在每次调用内部 dns“app”时执行 round robin。
有没有办法告诉 docker-compose 负载均衡器应用粘性会话?
另一种解决方案 - 有没有办法使用 nginx 解决它?
我不喜欢的可能解决方案:
应用的多种定义
version: '2'
services:
app1:
restart: always
app2:
restart: always
nginx:
restart: always
ports:
- "80:80"
(然后在 nginx 配置文件中,我可以定义 app1 和 app2 之间的粘性会话)。
我从搜索中得到的最佳结果: https://github.com/docker/dockercloud-haproxy
但这需要我添加另一个服务(也许替换 nginx?)并且文档对于那里的粘性会话非常差。
我希望 docker 只允许在撰写文件中使用简单的行来配置它。
谢谢!
【问题讨论】:
-
有办法用 kubernetes 解决这个问题。
-
@Gabbax0r 谢谢!如果我用尽其他选项,我会尝试这样做,因为我的基础设施是基于 Docker Swarm
标签: nginx docker proxy docker-compose sticky-session