2016-11-18 64 views
7

我正在嘗試使用DC/OS協調器的ACS,並且在單個區域內旋轉羣集似乎很簡單,但我不太確定最佳實踐將用於在多個地區進行部署。多區域Azure容器服務DC/OS羣集

Azure本身似乎不支持現在部署到多個區域。有了這個假設,我想我唯一的選擇是在我希望可用的所有區域創建多個相同的羣集,然後使用Azure流量管理器將傳入流量路由到最近的可用羣集。

雖然此解決方案有效,但它也會導致一些問題,我不能100%確定我應該如何解決問題。

  1. 我們的部署管道在部署新版本的服務時必須確保部署到所有地區。如果我們擁有美國東部和北歐地區,在部署CI工具時,我必須連接兩個地區的Marathon API才能觸發新的部署。如果部署在一個地區失敗,並在另一個地區取得成功,我突然在兩個地區之間出現差距。
  2. 如果我有一個使用本地持久卷部署的服務,讓我們說PostgreSQL或ElasticSearch,它需要在兩個區域都有實例,因爲服務發現只會查找本地區域的服務。這帶來了區域之間複製的問題,以保持所有區域的所有州;這似乎需要一些/大量的手動配置才能工作。

有沒有人曾經使用過的設置有點像這樣使用Azure的集裝箱服務(或真亞馬遜集裝箱服務,我認爲同樣的挑戰,在那裏可以找到),並有一些指針如何處理呢?

回答

0

您是對的ACS目前不支持多區域部署。

你的第一個問題是特定於DC/OS中的馬拉松,我會ping一些在那裏的工程人員,看他們是否對最佳實踐有任何意見。

你的第二點是我們(我是ACS PM)正在看的東西。您可以在某些情況下使用某些解決方案(例如,ArangoDB位於DC/OS領域並將提供複製)。 DC/OS團隊也可以在這裏說些什麼。在ACS中,我們正在評估爲此用例提供解決方案的最佳方法,但恐怕我無法給出時間表的任何說明。

另一種解決方案是將您的數據庫放在SaaS產品中。這消除了管理冗餘和複製的所有複雜性。

1

你有多個選項可以在不同區域之間旋轉。我會爲每個人使用自定義安裝和terraform。這是一個很好的起點:https://github.com/bernadinm/terraform-dcos

分佈在不同地區的代理應該沒有問題,確保您的服務在失敗後仍能繼續運行。

分佈式主人(讓您可以控制失敗期間的服務)有點更加不尋常,因爲它涉及在高延遲鏈接上分發動物園管理員仲裁,所以您在選擇區域之間的「距離」時應該小心。

查看documentation瞭解更多詳情。