Swarm 模式入門
本教程向您介紹 Docker Engine Swarm 模式的功能。在開始之前,您可能需要熟悉關鍵概念。
本教程將指導您完成以下內容:
- 在 Swarm 模式下初始化一個 Docker Engine 叢集
- 向 Swarm 新增節點
- 向 Swarm 部署應用程式服務
- 在一切執行後管理 Swarm
本教程使用在終端視窗命令列中輸入的 Docker Engine CLI 命令。
如果您是 Docker 新手,請參閱關於 Docker Engine。
設定
要執行本教程,您需要:
三臺聯網的主機
本教程需要三臺已安裝 Docker 且可以透過網路通訊的 Linux 主機。這些可以是物理機、虛擬機器、Amazon EC2 例項或其他託管方式。請檢視部署到 Swarm,瞭解一種可能的主機設定方案。
其中一臺機器是管理器(稱為 manager1
),另外兩臺是工作節點(worker1
和 worker2
)。
注意您也可以按照教程中的許多步驟來測試單節點 Swarm,這種情況下您只需要一臺主機。多節點命令無法工作,但您可以初始化一個 Swarm、建立服務並對其進行擴充套件。
在 Linux 機器上安裝 Docker Engine
如果您使用基於 Linux 的物理計算機或雲服務商提供的計算機作為主機,只需按照您平臺的Linux 安裝說明操作。啟動三臺機器,即可準備就緒。您可以在 Linux 機器上測試單節點和多節點 Swarm 場景。
管理器機器的 IP 地址
IP 地址必須分配給主機作業系統可用的網路介面。Swarm 中的所有節點都需要透過該 IP 地址連線到管理器。
因為其他節點會透過其 IP 地址聯絡管理器節點,所以您應該使用一個固定的 IP 地址。
您可以在 Linux 或 macOS 上執行 ifconfig
來檢視可用網路介面的列表。
本教程使用 manager1
: 192.168.99.100
。
在主機之間開放協議和埠
以下埠必須可用。在某些系統上,這些埠預設是開放的。
- 埠
2377
TCP,用於管理器節點之間以及與管理器節點的通訊 - 埠
7946
TCP/UDP,用於覆蓋網路節點發現 - 埠
4789
UDP(可配置),用於覆蓋網路流量
如果您計劃建立一個帶有加密功能(--opt encrypted
)的覆蓋網路,您還需要確保允許 IP 協議 50(IPSec ESP)的流量。
埠 4789
是 Swarm 資料路徑埠(也稱為 VXLAN 埠)的預設值。防止任何不受信任的流量到達此埠非常重要,因為 VXLAN 不提供身份驗證。此埠只應對受信任的網路開放,絕不應在邊界防火牆上開放。
如果 Swarm 流量經過的網路不完全受信任,強烈建議使用加密的覆蓋網路。如果只使用加密的覆蓋網路,建議進行一些額外的加固:
- 自定義預設的 ingress 網路以使用加密
- 僅在資料路徑埠上接受加密的資料包
# Example iptables rule (order and other tools may require customization)
iptables -I INPUT -m udp --dport 4789 -m policy --dir in --pol none -j DROP
後續步驟
接下來,您將建立一個 Swarm。
建立 swarm