我正在使用 DC/OS 协调器对 ACS 进行一些实验,虽然在单个区域内启动集群似乎很简单,但我不太确定跨多个区域进行部署的最佳实践是什么.
Azure 本身目前似乎不支持部署到多个区域。有了这个假设,我想我唯一的其他选择是在我希望可用的所有区域中创建多个相同的集群,然后使用 Azure 流量管理器将传入流量路由到最近的可用集群。
虽然此解决方案有效,但它也会导致一些问题,我不能 100% 确定应该如何解决。
- 我们的部署管道必须确保在部署新版本的服务时部署到所有区域。如果我们有美国东部和北欧区域,则在通过 CI 工具进行部署期间,我必须连接到这两个区域中的 Marathon API 以触发新部署。如果部署在一个区域失败,而在另一个区域成功,我就会突然发现两个区域之间存在差异。
- 如果我部署了一个使用本地持久卷的服务,比如 PostgreSQL 或 ElasticSearch,它需要在两个区域都有实例,因为服务发现只能找到该区域本地的服务。这就带来了区域之间的复制问题,以保持所有区域的所有状态;这似乎需要一些/大量的手动配置才能工作。
是否有人曾经使用 Azure 容器服务(或者真正的 Amazon 容器服务,因为我认为在那里可以找到相同的挑战)使用过类似的设置,并且对如何解决这个问题有一些指导?
最佳答案
您有多种跨区域旋转的选择。我会为每个项目使用自定义安装和 terraform。这是一个很好的起点:https://github.com/bernadinm/terraform-dcos
跨区域分布代理应该没有问题,确保您的服务在出现故障时仍能继续运行。
分配masters(让你在故障期间控制服务)有点困难,因为它涉及在高延迟链路上分配zookeeper仲裁,所以你应该小心选择区域之间的“距离”。
看看 documentation了解更多详情。
关于azure - 多区域 Azure 容器服务 DC/OS 集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40684041/