问题描述
想在Azure上部署一个高可用的Docker Swarm。他在3个位置(巴西南部,东部美国和西欧)创建了一个虚拟网络(VNet),然后启用了网络对等连接,以便这些位置的虚拟机可以像在同一个VNet中一样相互通信。集群似乎工作正常。问题是这些位置之间的延迟很高,大约为190毫秒。
用户有以下问题:
1. 这是一个推荐的高可用拓扑结构吗?有没有办法改进它?
2. 这种延迟会对(未来的)性能产生限制吗?
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
在Docker Swarm模式中,有一些超时设置无法很好地处理高延迟,并且可能开始假设集群中的节点已关闭、失去仲裁或存在网络问题。对于高可用性,标准建议是在一个集群中使用多个可用区(AZ),但不要使用多个地区。对于需要多个地区的用例,您可以部署多个Swarm集群,每个地区一个。如果您确实需要在单个Swarm集群中使用多个地区,请考虑将所有管理节点放在同一个地区,并只将工作节点部署到其他地区。
方案2
使用多个Swarm集群可能会增加管理复杂性,并且需要确保管理节点和工作节点之间的连接正常。
另一种方法是在每个地区部署一个Swarm集群。这样,每个地区的管理节点和工作节点都在同一个地区,可以减少延迟和网络问题的影响。这种方法可以提供高可用性,并且更容易管理每个地区的集群。
请根据您的需求选择适合您的方案。如果您需要多个地区的高可用性,方案1可能更适合您。如果您更关注每个地区的性能和管理简单性,方案2可能更适合您。
请注意,以上解决方案是基于一般的最佳实践和经验。具体的实施方法可能因您的环境和需求而有所不同。在进行任何更改之前,请确保在测试环境中进行充分的测试,并备份重要的数据和配置。