Docker Swarm 服务 IP 高可用性

Docker Swarm Service IP High-availability

我构建了一个 docker swarm 集群(6 个节点)。 尽管我能够构建弹性服务(多个节点使用多个实例响应对同一服务的请求),但我找不到构建高可用性 IP 级服务(使用单个 public IP 地址)的方法,以防万一管理器节点故障。

docker swarm 集群参考架构是否构建为始终位于外部负载平衡器(IP 或 DNS)或反向代理之后?还是基于软件的老式 vIP(心脏起搏器)?

我感觉我的集群没有自我弹性(就像我的 vSphere 集群为 VM 提供高可用性一样),而且我总是把我的单点故障放在某个地方。

有没有办法桥接 docker swarm hosts public 网络?

  1. 您应该至少有 3 位经理才能成为 HA。
  2. 您没有提到您的托管环境,但在许多主机之间共享一个 IP 是大多数云托管商不支持的 OS 级功能。
  3. 如果您只是向 Swarm 外部的用户发布 Web 应用程序,您可以依赖多个 A 记录(每个 public 您想要接收流量的 Swarm 主机的 IP 一个记录)用于 DNS 循环故障转移。所有现代浏览器都支持将此作为一种 HA 方法,客户端将提取所有 A 记录并在列表中的新记录变得无响应时自动重试。
  4. 大多数云主机都有一个负载均衡器选项,它提供一个单一 IP 来路由到您的 Swarm 节点。这似乎是大多数人所做的,也是 Docker 用于 AWS/Azure 模板(来自 https://store.docker.com

我在 "Taking Docker to Production" session from DockerCon EU 2017 中谈论了很多这些主题(抱歉,该网站需要电子邮件才能观看)。