2017-06-22 132 views
1

這可能是一個簡單的問題,但我想知道其他人如何做到這一點。集羣Docker Swarm主機

我有一個3個管理器的Docker Swarm模式集羣。比方說他們有IP的

  • 192.168.1.10
  • 192.168.1.20
  • 192.168.1.30

我可以通過任意IP的訪問我的Web容器,通過內部路由網等等。但是,當主機停下來時,我訪問我的Web容器,我顯然不會再被路由到容器。所以我需要某種單一的DNS記錄或者是指向我的集羣中的一個活動地址的東西。

你們如何做到這一點?我應該將所有三個IP作爲A記錄添加到DNS嗎?或者有一個負載均衡器/反向代理服務器集羣?

我想有一個以上的解決方案,將是很好聽到別人是如何解決這個:-)

非常感謝

回答

0

假設你的Web服務器開始是這樣的:

docker service create --replicas=1 -p 80:80 nginx:alpine 

如果副本由於某種原因停止運行,羣集將嘗試重新計劃該副本。只有1個副本,您可能會在舊任務消失之間經歷一些停機時間,而新任務會在其他任何地方出現。

路由網格功能的設計目標的一部分的確是爲了簡化負載均衡配置。由於在我的示例中羣集的所有成員都在端口80上進行偵聽,因此您的負載平衡器可以簡單配置爲偵聽所有三個IPS。假設負載平衡器可以正確檢測到一個節點停止運行,那麼該任務將重新安排在集羣某處,剩下的兩個節點中的任何一個都可以通過路由網格路由流量。

+0

這就是我們即將設置的。 我想知道什麼樣的「外部」負載平衡器或羣體前面的反向代理最常見? HAProxy,nginx還是NLB? 任何建議什麼是「最佳實踐」? – Matteo

+0

一般來說,我會建議在羣模式路由網格之前放置一個第3層負載平衡器。我發現haproxy和nginx在羣集模式羣集內運行更爲常見。 – programmerq