2017-06-08 20 views
3

我目前正試圖瞭解創建碼頭羣以使某些服務高度可用的必要條件。我通讀了很多docker swarm文檔,但是如果我的理解是正確的,docker swarm只會在任何主機上執行一項服務。如果主機出現故障會發生什麼? swarm管理器會重啓在另一臺主機/節點上運行的服務嗎?有沒有比在原始文件here中有更好的解釋?在高可用性方面瞭解碼頭羣

回答

2

沒有比這更真實的了。就像它說的那樣,Swarm(和kubernetes以及這個空間中的大多數其他工具)是聲明式的,這意味着你告訴它你想要的狀態(即'我想要redis的4個實例'),並且Swarm會收斂系統到那個狀態。如果您有3個節點,那麼它將在節點1上安排1次redis,在節點2上安排1次,在節點3上安排2次。如果節點2死亡,則系統現在不符合您聲明的狀態,並且Swarm將安排節點1或3上的另一個redis(取決於策略等)。

現在這種容器/任務/實例調度的動態帶來了另一個問題,即發現。 Swarm通過維護內部DNS註冊表併爲每個服務創建VIP(虛擬IP)來處理此問題。我不需要處理/跟蹤每個redis實例,而是可以指向一個服務別名,Swarm會自動將流量路由到它需要去的地方。

當然也有其他方面的考慮:

  • 可你的服務支持多個後端實例?它是無國籍的嗎?會議?緩存?等等...
  • 'HA'是什麼?多節點?多AZ?多區域?等等...