【发布时间】:2016-03-31 05:00:22
【问题描述】:
过去几天我一直致力于在 Digtital Ocean 上创建一个 docker swarm。注意:我不想使用-link 与其他应用程序/容器进行通信,因为它们在技术上被认为已弃用并且不能很好地与 docker swarm 一起使用(即,如果没有,我无法向负载均衡器添加更多应用程序实例重新组成整个群体)
根据this guide,我正在使用一台服务器作为运行控制台的 kv-store 服务器。因为我在 Digital Ocean 上,所以我在 DO 上使用私有网络,以便机器可以相互通信。
然后我创建一个 hive master 和 slave,并启动在所有机器上运行的覆盖网络。这是我的 docker-compose.yml
proxy:
image: tutum/haproxy
ports:
- "1936:1936"
- "80:80"
web:
image: tutum/hello-world
expose:
- "80"
所以当我这样做时,它会创建 2 个容器。 HAProxy 正在运行,因为我可以通过http://<ip-address>:1936 访问端口 1936 的统计信息,但是,当我尝试在端口 80 访问 Web 服务器/负载平衡器时,连接被拒绝。不过,当我运行docker-compose ps 时,我的一切似乎 都已连接:
Name Command State Ports
--------------------------------------------------------------------------------------------------------------------------------
splashcloud_proxy_1 python /haproxy/main.py Up 104.236.109.58:1936->1936/tcp, 443/tcp, 104.236.109.58:80->80/tcp
splashcloud_web_1 /bin/sh -c php-fpm -d vari ... Up 80/tcp
我唯一能想到的是它没有链接到网络容器,但我不知道如何解决这个问题。
如果能提供任何帮助,我将不胜感激。
【问题讨论】:
-
这只是指向related discussion for the dockerized nginx-reverseproxy 的链接。我没有创建答案,因为它与 haproxy 无关,但它可能是一种替代方案。
-
谢谢@schmunk。这可能很有用。在这种情况下我不能使用 Nginx,因为我需要 HAProxy 的排队功能——只有 Ngjnx 的付费版本支持排队。
-
我试图在 docker 文档中找到链接被视为已弃用的声明,但我找不到任何东西,请您指出您在哪里读到的?
-
我看到它是从 docker 1.9 开始编写的,因为网络现在是自动设置的,而在网络还没有那么自动化之前。即撰写文件中的任何内容都会自动将机器名称上的网络获取到主机文件。我暂时找不到参考资料。
-
为您(和@SalvadorJuanMartinez)找到了参考 在多主机网络声明中,blog.docker.com/2015/11/docker-multi-host-networking-ga 您在启动容器之前创建了一个命名网络。
标签: docker haproxy docker-compose docker-swarm