使用docker swarm部署搭建容器集群


Swarm 是 Docker 官方提供的一款集群管理工具,其主要作用是把若干台 Docker 主機抽象為一個整體,並且通過一個入口統一管理這些 Docker 主機上的各種 Docker 資源。

docker swarm集群工作原理:https://docs.docker.com/engine/swarm/how-swarm-mode-works/nodes/

 

環境准備

環境准備

准備4台centos服務器,生產環境建議用阿里雲服務器,學習環境可以在本機用vmware創建4個centos虛擬機。

每台centos服務器上都要安裝docker。

centos版本:8.5

docker版本:20.10.11

 

以四台機器為例,2 個 manager 2個 worker。

但生產環境建議是 3個manager 以上,如果只有2台 manager,當主manager掛掉之后,另一台從manager是不會升級為主manager的 ,因為從manager升級為主manager的條件是存活的從manager節點個數必須大於1

虛擬機 狀態 備注
192.168.1.200 manager 用這台初始化創建集群成為manager
192.168.1.201 manager 加入成manager
192.168.1.202 worker  
192.168.1.203 worker  

 

首先,兩台管理節點 192.168.1.200與192.168.1.201需要開放防火牆端口2377,允許與工作節點服務器通訊,如果是阿里雲服務器,還要開通阿里雲安全組的2377端口。 

firewall-cmd --zone=public --add-port=2377/tcp --permanent
firewall-cmd --reload 

 

docker swarm命令

 

docker swarm命令

創建集群:
docker swarm init --advertise-addr 虛擬機IP

查看增加 manager的授權命令:
docker swarm join-token manager

查看增加 worker 的授權命令:
docker swarm join-token worker

管理器節點脫離 docker swarm集群:
docker swarm leave --force

工作節點脫離Docker Swarm集群
docker swarm leave

 

搭建docker集群

搭建swarm集群,swarm集群包含兩個管理節點,兩個工作節點。

 

【第1步】初始化swarm集群,創建主管理節點

管理節點與工作節點可以使用內網地址與外網地址,將192.168.1.200這台服務器初始化為管理節點,切換到200這台服務器。使用內網地址初始化節點:

docker swarm init --advertise-addr 192.168.1.200
或者
docker swarm init --advertise-addr 192.168.1.200 --listen-addr 192.168.1.200:2377

 

輸出文字的意思是此地址已經加入到了這個swarm,你可以使用  docker swarm join --token xxxxx 命令將其它節點加入到這個swarm中來成為工作節點,

如果想添加管理節點,使用 docker swarm join-token manager 命令來進行管理。

 

查看節點信息,這個命令只能在管理節點上使用。

docker node ls

 manager為Leader表示管理節點,為空的表示工作節點。

 

注意:定要開放所有管理節點服務器的端口,然后重啟防火牆,如果是阿里雲服務器,還要開通阿里雲安全組,不然加入worker 會報如下錯誤:

Error response from daemon: rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing dial tcp 192.168.1.200:2377: connect: no route to host"

 

將兩台管理節點192.168.1.200與192.168.1.201的防火牆開放 2377 端口,允許工作節點與它通訊,開放端口后其它工作節點才可以加入進來 。

firewall-cmd --zone=public --add-port=2377/tcp --permanent
firewall-cmd --reload 

 

【第2步】加入備用管理節點

理論上最好將三台機加入到管理節點。

但現在服務器不夠,總共只有四台,所以只額外將 192.168.1.201 這台機加入到備用管理節點。

由於這台機也是管理節點,所以要開放防火牆2377端口。

firewall-cmd --zone=public --add-port=2377/tcp --permanent
firewall-cmd --reload 

 

然后在初始化集群的管理節點 192.168.1.200 上查看加入到manager節點的命令:

docker swarm join-token manager

然后在192.168.1.201這台機上執行:

docker swarm join --token SWMTKN-1-52jt7zafnyw3i2ybn9guz5cwq9654uh3nabz5izaifjozhjn3o-6j8gnwhx52vjdvq7w0hq8uklv 192.168.1.200:2377

 加入到swarm管理節點成功。

查看節點信息:

docker node ls

 

 manager為Leader表示創建集群時創建的管理節點,Reachable(可達)表示加入進來的管理節點,為空的表示工作節點。

 

如果加入管理節點的時候如果報下面的錯誤,是防火牆或阿里雲安全組沒有開放2377端口,需要開放防火牆端口。

Error response from daemon: manager stopped: can’t initialize raft node: rpc error: code = Unknown desc = could not connect to prospective new cluster member using its advertised address: rpc error: code = Unavailable desc = connection error: desc = “transport: Error while dialing dial tcp 192.168.1.200:2377: connect: no route to host”

 

【第3步】添加兩台工作節點

將192.168.1.202與192.168.1.203兩台機加入到剛剛創建的docker swarm集群。

在任意一台管理節點上使用如下命令查看加入worker節點的命令。

docker swarm join-token worker

 

 分別切換到將192.168.1.202與192.168.1.203,分別執行命令:

docker swarm join --token SWMTKN-1-52jt7zafnyw3i2ybn9guz5cwq9654uh3nabz5izaifjozhjn3o-a6zep6y0n18614nj9w1swrnlp 192.168.1.201:2377

加入工作節點成功。

查看節點信息:

docker swarm join-token worker

 

 manager為Leader表示創建集群時創建的管理節點,Reachable(可達)表示加入進來的管理節點,為空的表示工作節點。

脫離swarm集群

 工作節點脫離swarm集群。

切換到工作節點服務器,執行命令

dokcer swarm leave

 

管理節點脫離swarm集群。

管理節點脫離集群的前提是所有工作節點全部已脫離了集群后,使用 docker swarm leave 命令將管理節點本身脫離集群。

如果還有一台工作節點未脫離集群,還想讓管理節點脫離集群,加 --force參數。

dokcer swarm leave --force

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM