2017-06-22 211 views
1

这可能是一个简单的问题,但我想知道其他人如何做到这一点。集群Docker Swarm主机

我有一个3个管理器的Docker Swarm模式集群。比方说他们有IP的

  • 192.168.1.10
  • 192.168.1.20
  • 192.168.1.30

我可以通过任意IP的访问我的Web容器,通过内部路由网等等。但是,当主机停下来时,我访问我的Web容器,我显然不会再被路由到容器。所以我需要某种单一的DNS记录或者是指向我的集群中的一个活动地址的东西。

你们如何做到这一点?我应该将所有三个IP作为A记录添加到DNS吗?或者有一个负载均衡器/反向代理服务器集群?

我想有一个以上的解决方案,将是很好听到别人是如何解决这个:-)

非常感谢

回答

0

假设你的Web服务器开始是这样的:

docker service create --replicas=1 -p 80:80 nginx:alpine 

如果副本由于某种原因停止运行,群集将尝试重新计划该副本。只有1个副本,您可能会在旧任务消失之间经历一些停机时间,而新任务会在其他任何地方出现。

路由网格功能的设计目标的一部分的确是为了简化负载均衡配置。由于在我的示例中群集的所有成员都在端口80上进行侦听,因此您的负载平衡器可以简单配置为侦听所有三个IPS。假设负载平衡器可以正确检测到一个节点停止运行,那么该任务将重新安排在集群某处,剩下的两个节点中的任何一个都可以通过路由网格路由流量。

+0

这就是我们即将设置的。 我想知道什么样的“外部”负载平衡器或群体前面的反向代理最常见? HAProxy,nginx还是NLB? 任何建议什么是“最佳实践”? – Matteo

+0

一般来说,我会建议在群模式路由网格之前放置一个第3层负载平衡器。我发现haproxy和nginx在群集模式群集内运行更为常见。 – programmerq