多区域Azure容器服务DC / OS群集

时间:2016-11-18 18:44:14

标签: azure dcos azure-container-service

我正在使用DC / OS协调器对ACS进行一些实验,虽然在单个区域内启动集群似乎很简单,但我不确定在多个地区进行部署的最佳做法是什么

Azure本身现在似乎不支持部署到多个区域。有了这个假设,我想我唯一的另一个选择是在我希望可用的所有区域中创建多个相同的集群,然后使用Azure Traffic Manager将传入流量路由到最近的可用集群。

虽然这个解决方案有效,但它也会导致一些我不能100%确定应该解决的问题。

  1. 在部署新版本的服务时,我们的部署管道必须确保部署到所有区域。如果我们有一个美国东部和北欧地区,在我们的CI工具部署期间,我必须连接到两个地区的Marathon API以触发新的部署。如果部署在一个地区失败,而在另一个地区取得成功,我突然间两个地区之间存在差异。
  2. 如果我有一个使用本地持久性卷部署的服务,比如PostgreSQL或ElasticSearch,它需要在两个区域都有实例,因为服务发现只会找到该地区的本地服务。这就产生了区域之间复制的问题,以保持所有区域的所有状态;这似乎需要一些/大量的手动配置才能开始工作。
  3. 有没有人曾经使用Azure容器服务(或者真正的亚马逊容器服务,因为我认为可以在那里找到相同的挑战)使用类似的设置,并且有一些关于如何处理这个问题的指示?

2 个答案:

答案 0 :(得分:1)

您可以通过多种方式在不同地区进行调整。我会为每个人使用自定义安装和terraform。这是一个很好的起点:https://github.com/bernadinm/terraform-dcos

在不同地区分发代理应该没有问题,确保您的服务尽管失败仍会继续运行。

分发主服务器(让您在失败期间控制服务)更加困难,因为它涉及在高延迟链路上分配动物园管理员仲裁,因此您应该谨慎选择区域之间的“距离”。

有关详细信息,请查看documentation

答案 1 :(得分:0)

您是对的ACS目前不支持多区域部署。

你的第一个问题是特定于DC / OS中的Marathon,我会对那里的一些工程人员进行检查,看看他们是否对最佳实践有任何意见。

你的第二点是我们(我是ACS PM)正在关注的事情。您可以在某些情况下使用某些解决方案(例如,ArangoDB位于DC / OS领域,并将提供复制)。 DC / OS团队也可以在这里说些什么。在ACS中,我们正在评估为此用例提供解决方案的最佳方法,但我担心我无法给出时间表的任何指示。

另一种解决方案是将您的数据库放在SaaS产品中。这消除了管理冗余和复制的所有复杂性。