將節點加入叢集
目錄
當您首次建立 Swarm 時,您會將單一 Docker Engine 置於 Swarm 模式中。為了充分利用 Swarm 模式,您可以將更多節點加入 Swarm。
- 增加工作節點可以提升容量。當您將服務部署到 Swarm 時,引擎會在可用節點(無論是工作節點還是管理節點)上排程任務。當您為 Swarm 加入工作節點時,您就擴展了 Swarm 的規模,可以在不影響管理節點 Raft 一致性的情況下處理更多任務。
- 管理節點可提升容錯能力。管理節點負責 Swarm 的編排和叢集管理功能。在管理節點中,由單一領導者節點 (Leader) 執行編排任務。如果領導者節點離線,剩餘的管理節點會選出新的領導者,並恢復編排與維持 Swarm 狀態。預設情況下,管理節點也會執行任務。
Docker Engine 會根據您提供給 docker swarm join 指令的 join-token 加入 Swarm。節點僅在加入時使用此 Token。如果您隨後輪換 (rotate) 了 Token,並不會影響現有的 Swarm 節點。請參閱 以 Swarm 模式執行 Docker Engine。
以工作節點 (Worker node) 加入
若要取得包含工作節點加入 Token 的加入指令,請在管理節點上執行以下指令:
$ docker swarm join-token worker
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \
192.168.99.100:2377
在工作節點上執行輸出中的指令以加入 Swarm:
$ docker swarm join \
--token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \
192.168.99.100:2377
This node joined a swarm as a worker.
docker swarm join 指令會執行以下操作:
- 將目前節點上的 Docker Engine 切換為 Swarm 模式。
- 向管理節點請求 TLS 憑證。
- 以機器的主機名稱為該節點命名。
- 根據 Swarm Token,將目前節點加入管理節點監聽位址所在的 Swarm。
- 將目前節點的可用性設為
Active,這意味著它現在可以從排程器接收任務。 - 將
ingress覆蓋網路 (overlay network) 延伸至目前節點。
以管理節點 (Manager node) 加入
當您執行 docker swarm join 並傳入管理節點 Token 時,Docker Engine 切換至 Swarm 模式的方式與工作節點相同。管理節點同時參與 Raft 一致性協定。新節點狀態應為 Reachable,但原有的管理節點仍會是 Swarm 的 Leader。
Docker 建議每個叢集配置三個或五個管理節點以實現高可用性。由於 Swarm 模式的管理節點使用 Raft 協定共享資料,因此必須有奇數個管理節點。只要超過半數的管理節點可用(形成法定人數),Swarm 就能繼續運作。
關於 Swarm 管理節點與管理 Swarm 的更多詳細資訊,請參閱 管理與維護 Docker Engine Swarm。
若要取得包含管理節點加入 Token 的加入指令,請在管理節點上執行以下指令:
$ docker swarm join-token manager
To add a manager to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-61ztec5kyafptydic6jfc1i33t37flcl4nuipzcusor96k7kby-5vy9t8u35tuqm7vh67lrz9xp6 \
192.168.99.100:2377
在新的管理節點上執行輸出中的指令,將其加入 Swarm:
$ docker swarm join \
--token SWMTKN-1-61ztec5kyafptydic6jfc1i33t37flcl4nuipzcusor96k7kby-5vy9t8u35tuqm7vh67lrz9xp6 \
192.168.99.100:2377
This node joined a swarm as a manager.
了解更多
swarm join指令列參考- Swarm 模式教學