Docker Swarm 服务 IP 高可用性

4
我已经构建了一个Docker Swarm集群(6个节点)。虽然我能够构建弹性服务(多个节点为同一服务提供多个实例的请求响应),但当管理节点故障时,我找不到一种构建高可用性IP级别服务的方法(使用单个公共IP地址)。
Docker Swarm集群参考架构是始终在外部负载均衡(IP或DNS)或反向代理后面构建的吗?还是基于软件的老式虚拟IP(Pacemaker)?
我有一种感觉,我的集群不是自我弹性的(就像我的vSphere集群为VM提供高可用性那样),我总是在某个地方放置我的单点故障。
是否有一种方法可以桥接Docker Swarm主机的公共网络?

嗨@Fabio,你能解决这个问题吗? - Munish Dhiman
1个回答

3
  1. 要实现高可用性,您需要至少有3个管理者。
  2. 您没有提及您的托管环境,但是将一个IP地址共享给多个主机是操作系统级别的功能,大多数云主机不支持此功能。
  3. 如果您只是向Swarm外部用户发布Web应用程序,则可以依靠多个A记录(每个Swarm主机的公共IP地址一个)进行DNS轮询故障转移。所有现代浏览器都支持这种高可用性方法,并且客户端会拉取所有A记录,并在列表中自动重试新的记录,如果其中一个变得无响应。
  4. 大多数云主机都有一个负载均衡器选项,该选项提供单一IP以路由到您的Swarm节点。这似乎是大多数人所做的事情,并且是使用Docker for AWS / Azure模板(从https://store.docker.com)使用的内容。

我在DockerCon EU 2017年的"Taking Docker to Production"会议上谈到了许多这些话题(很抱歉,该网站需要邮件才能观看)。


谢谢。正如我在帖子中所说,我几乎确定Docker本身没有提供操作系统级容错。您问了我的托管环境:我安装了两个由vCenter管理的ESXi主机。出于非常特定的原因,我没有节点之间的共享存储,因此无法启用vSphere HA。我认为,通过glusterfs和高可用性,Docker编排解决方案可以为传统应用程序的基本服务(老式DNS服务器、DHCP、LDAP等)提供优雅的解决方案。 - Fabio Barcelos
对于使用 Docker 共享存储,您可以查看卷插件,这些插件列在 https://store.docker.com 上。 - Bret Fisher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接