单机 docker 多个容器负载均衡的最简单办法是什么

2018-11-25 14:02:06 +08:00
 wangxiaoaer
不考虑 swarm,因为我们就一台装了 docker demaon 的机器,感觉 swarm 有点复杂。

也不考虑手动写 Nginx 等配置文件的方式,这样把容器个数限死了。

之前找到了 Dockercloud 的一个借助 haproxy 的 docker-haproxy 可以自动发现容器实例的个数并自动配置,运行时只需要

Docker run --scale=4

但这个项目停止维护了。

有没有别的办法?
2239 次点击
所在节点    问与答
7 条回复
momocraft
2018-11-25 14:14:12 +08:00
nginx 配置裏寫 500 個 upstream, 實際上有幾個後端就 link 幾個
kslr
2018-11-25 15:04:37 +08:00
不想写 nginx 配置?你又没有自动缩放
大不了写个 shell 自动添加,其他办法只会更麻烦

或者付钱买
gamexg
2018-11-25 16:28:34 +08:00
https://github.com/jwilder/nginx-proxy

这个?
单机用比较合适,作者还有另外一个项目可以支持多机。
feverzsj
2018-11-25 16:47:40 +08:00
nginx-proxy 是最简单的,设置 2 个环境变量就可以了
wangxiaoaer
2018-11-26 08:50:44 +08:00
@gamexg #3 不错,不错,可能真是我想要的。
wangxiaoaer
2018-11-26 09:03:46 +08:00
@gamexg

刚看了下那个项目,中间有一句话:

Provided your DNS is setup to forward foo.bar.com to the host running nginx-proxy, the request will be routed to a container with the VIRTUAL_HOST env var set.

也就是说需要本地配置 host 以便把 VIRTUAL_HOST 转发到 nginx-proxy 运行的容器中,但是怎么知道 nginx-proxy 运行的实例的 ip 呢?每次的 ip 可能不一样啊。
gamexg
2018-11-26 09:13:07 +08:00
他指的是主机,不是 docker 容器。
nginx-proxy 使用 docker -p 参数接管主机的 80、443 端口,docker 负责管理这个端口映射,不需要 dns 知道容器 ip。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/511307

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX