簡體   English   中英

如何通過公共IP將整個docker swarm集群暴露給外部世界?

[英]How to expose the entire docker swarm cluster to the external world via a public IP?

我正在嘗試在swarm模式下使用docker在生產中實現一組容器化應用程序。

讓我描述一個非常簡約的場景。 我所擁有的只是5個AWS-EC2實例。 這些節點都沒有分配公共IP,也沒有為子網的一部分分配私有IP。

例如,

管理者節點

  • 172.16.50.1
  • 172.16.50.2

工作節點

  • 172.16.50.3
  • 172.16.50.4
  • 172.16.50.5

通過上述基礎架構, 創建了一個 Docker 群集 ,其中第一個節點的IP(172.16.50.1)作為--advertise-addr,以便其他4個節點以其管理者或工作人員的身份加入群集,並帶有各自的令牌。

我不想通過使管理者節點也充當工作程序節點的角色來使它們過載。 (這是個好主意還是資源利用不足?)。

作為節點,每個節點有4個核心,因此托管了9個我的Web應用程序副本,這些副本分布在3個工作節點中,每個工作節點運行3個容器來托管我的Web應用程序。

現在有了這個設置,我應該如何將整個帶有VIP(虛擬IP)的docker swarm集群暴露給外部環境進行消費?

請驗證我的以下想法:

1.我是否應該擁有經典的負載均衡器設置,例如保持基於httpd或nginx或基於haproxy的反向代理(已分配了公共IP),並使它平衡負載到部署了docker-swarm的上述5個節點上?

我在這里看到的一個缺點是上述反向代理將是單點故障 有什么想法可以使容錯/高度可用嗎? 我應該嘗試AnyCast解決方案嗎?

2.選擇一個AWS ALB / ELB,它將流量路由到我們群集所在的上述5個節點。

3.如果要保持單獨的負載均衡器是路要走,那么docker-swarm負載均衡和服務發現到底有什么用呢?

docker swarm的答案是什么,將1個虛擬IP或主機名公開給外部客戶端以訪問swarm集群中的服務?

Docker-swarm大力宣傳覆蓋網絡,但不確定它與我通過VIP向Internet客戶端公開群集的問題有何關系。 我們是否應該始終讓負載均衡器知道以后加入docker swarm的節點的IP地址?

請說明一下!

進一步閱讀后,我了解到我們在群體管理器節點中創建的覆蓋網絡僅用於容器間通信。

與其他網絡模式(例如網橋,主機,macvlan)的唯一區別在於,其他模式可以使具有單個主機的容器之間進行通信,而覆蓋網絡也可以促進部署在不同子網中的容器之間的通信。 即多主機容器通信。

以此知識為首,通過分配給負載均衡器的單個公共IP將集群暴露給世界,該負載均衡器會將請求分發給所有集群節點。 這只是我的高級理解。

這是我需要您的意見和想法的地方...解釋如何處理此行業標准?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM