我想为我编写的Web服务设置故障转移。
我到处都读到docker swarm 1.12会执行自动故障转移,但我认为仅适用于发生故障的容器。

我应如何为服务配置公共(public)DNS?

如果主机关闭,故障转移如何工作?

如果使用普通的dns轮询和节点IP,它将无法正常工作。每n个请求将对n个服务器失败。如果一台主机出现故障,则docker route mesh无法提供帮助。还是我想念这里的东西?

仅供参考:目前我不使用docker swarm,但我打算这样做。

最佳答案

您有两种选择:

  • 如果您正在使用amazonaws之类的云提供程序,则可以使用ELB或您的cloudprovider提供的负载均衡器,它们通常支持模式TCP和运行状况检查。然后,您会将dns指向负载均衡器。这样,当节点发生故障时,将通过运行状况检查将其从负载平衡器中删除,并在再次恢复运行状态时将其恢复。
  • 您可以使用自己的负载均衡器。 HAproxy和Nginx支持TCP模式,您可以设置运行状况检查规则。每当一个节点发生故障时,它将通过运行状况检查从负载均衡器中删除,并在再次恢复运行状态时将其恢复。确保通过诸如keepalived之类的工具提供HighAvailablity,以便负载均衡器不会成为故障点。

  • 请注意,这适用于TCP通信,因为许多负载平衡器不支持UDP通信。

    关于docker - 使用Docker Swarm 1.12进行DNS故障转移,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42764120/

    10-16 23:01