在我的微服务系统中,我计划使用 docker swarm 和 Consul。为了确保 Consul 的高可用性,我将构建一个由 3 个服务器代理组成的集群(以及每个节点的客户端代理),但这并不能让我免于本地 consul 代理故障。
我错过了什么吗?如果没有,我如何配置 swarm 以了解超过 1 个领事代理?
在我的微服务系统中,我计划使用 docker swarm 和 Consul。为了确保 Consul 的高可用性,我将构建一个由 3 个服务器代理组成的集群(以及每个节点的客户端代理),但这并不能让我免于本地 consul 代理故障。
我错过了什么吗?如果没有,我如何配置 swarm 以了解超过 1 个领事代理?
Consul 是唯一一个在使用 swarm 时不支持多个端点的服务发现后端。
zookeeper 和 etcd 都支持 etcd://10.0.0.4,10.0.0.5 格式,在使用 Swarm 时为发现后端的“集群”提供多个 Ip。
要回答您的问题,您如何配置 Swarm 以支持超过 1 个领事(服务器) - 我对此没有明确的答案,但可以为您指明一个方向以及您可以测试的内容(不保证):
一个值得测试的建议(不推荐用于生产)是使用负载均衡器,它可以将您的请求从 Swarm 管理器传递到三个 consul 服务器之一。
因此,当启动 swarm 管理器时,您可以指向 consul://ip_of_loadbalancer:port
然而,这将导致 LB 成为瓶颈(如果它出现故障)。
我没有测试上述内容,也无法回答它是否有效 - 这只是一个建议。