一、环境介绍¶
1.1 主机介绍¶
| 主机名称 | 地址 | 版本 | 数量 |
|---|---|---|---|
| mgr1 | 192.168.100.130/24 | Ubuntu20.0.4 | 1台 |
| wrk1 | 192.168.100.110/24 | Centos7-X86_64-Eeverything2009 | 1台 |
| wrk2 | 192.168.100.131/24 | Centos7-X86_64-Eeverything2009 | 1台 |
1.2 Swarm集群介绍¶
搭建的Swarm集群总共1个管理节点,2个工作节点。其中以Ubuntu主机为mgr1,两台Centos主机分别为wrk1和wrk2。
二、准备工作¶
2.1 网络可达¶
1、三台Linux主机可以上网,同时也可以互通地址;
2.2 开放端口¶
三台Linux主机需要开放以下端口: 1.2377/tcp 用于客户端与Swarm进行安全通信 2.7946/tcp和7946/udp 用于节点之间的通信 3.4789/udp 用于基于VXLAN的覆盖网络
Centos7主机开放端口,可参考Centos7如何开放指定端口 Ubuntu20.04主机开放端口,可参考Ubuntu20.04如何开放指定端口
2.3 Dock引擎¶
三台Linux主机安装好Docker引擎,可参考基于Ubuntu版本和Centos版本Docker 引擎(Engine)升级。
三、搭建步骤¶
3.1 创建带有管理节点的Swarm¶
1、登录到mgr1执行docker swarm init --advertise-addr 192.168.100.130:2377 --listen-addr 192.168.100.130:2377命令初始化一个新的Swarm。
root@zq-virtual-machine:~# docker swarm init --advertise-addr 192.168.100.130:2377 --listen-addr 192.168.100.130:2377
Swarm initialized: current node (oz4yqja5d46z4x4sft4h9qilm) is now a manager.
针对上面指令分解说明: * docker swarm init:通知Docker初始化一个新的Swarm,并将自身作为第一个管理节点,同时这个节点开启Swarm模式 * --advertise-addr:指定其他节点用来连接到当前管理节点的IP和端口。这是为了防止节点有多个IP不能确认 * --listen-addr:指定用于承载Swarm流量的IP和端口,这也是为了防止节点有多个IP不能确认
说明:Swarm模式下的操作默认运行2377端口!!!
2、继续执行docker info命令查看 swarm 的当前状态。观察到Swarm状态为active。
root@zq-virtual-machine:~# docker info
......
Swarm: active
NodeID: oz4yqja5d46z4x4sft4h9qilm
Is Manager: true
ClusterID: t80w9wpih8nz23ppbkzwux1p7
Managers: 1
Nodes: 1
Default Address Pool: 10.0.0.0/8
SubnetSize: 24
Data Path Port: 4789
Orchestration:
Task History Retention Limit: 5
......
3、继续执行docker node ls命令列出Swarm中的节点。MANAGER一栏中显示【Leader】代表管理节点。
root@zq-virtual-machine:~# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
oz4yqja5d46z4x4sft4h9qilm * zq-virtual-machine Ready Active Leader 20.10.18
说明:节点ID后面的【*】代表此时登录的节点!!!
3.2 将工作节点wrk1添加到Swarm¶
1、登录到mgr1执行docker swarm join-token worker命令来获取添加工作节点到Swarm的命令和Token。如果是添加管理节点到Swarm,则将worker换成manager,即docker swarm join-token manager命令。
root@zq-virtual-machine:~# docker swarm join-token worker
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-3y222gkw18wftep185ag02av0csb790z2pctywmistl3728gtw-6z0ncroputkh9ttdu0cp7iso6 192.168.100.130:2377
2、登录到wrk1执行docker swarm join --token SWMTKN-1-3y222gkw18wftep185ag02av0csb790z2pctywmistl3728gtw-6z0ncroputkh9ttdu0cp7iso6 192.168.100.130:2377 --advertise-addr 192.168.100.110:2377 --listen-addr 192.168.100.110:2377命令将工作节点wrk1添加到Swarm。
[root@localhost student]# docker swarm join --token SWMTKN-1-3y222gkw18wftep185ag02av0csb790z2pctywmistl3728gtw-6z0ncroputkh9ttdu0cp7iso6 192.168.100.130:2377 --advertise-addr 192.168.100.110:2377 --listen-addr 192.168.100.110:2377
This node joined a swarm as a worker.
说明:--advertise-addr 192.168.100.110:2377 --listen-addr 192.168.100.110:2377这是可选配置!!!
3.3 将工作节点wrk2添加到Swarm¶
1、登录到mgr1执行docker swarm join-token worker命令来获取添加工作节点到Swarm的命令和Token。
root@zq-virtual-machine:~# docker swarm join-token worker
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-3y222gkw18wftep185ag02av0csb790z2pctywmistl3728gtw-6z0ncroputkh9ttdu0cp7iso6 192.168.100.130:2377
2、登录到wrk2执行docker swarm join --token SWMTKN-1-3y222gkw18wftep185ag02av0csb790z2pctywmistl3728gtw-6z0ncroputkh9ttdu0cp7iso6 192.168.100.130:2377 --advertise-addr 192.168.100.131:2377 --listen-addr 192.168.100.131:2377命令将工作节点wrk1添加到Swarm。
[root@localhost aaa]# docker swarm join --token SWMTKN-1-3y222gkw18wftep185ag02av0csb790z2pctywmistl3728gtw-6z0ncroputkh9ttdu0cp7iso6 192.168.100.130:2377 --advertise-addr 192.168.100.131:2377 --listen-addr 192.168.100.131:2377
This node joined a swarm as a worker.
说明:--advertise-addr 192.168.100.131:2377 --listen-addr 192.168.100.131:2377这是可选配置!!!
3.4 验证¶
1、登录到mgr1执行docker node ls命令列出Swarm中的节点。观察到wrk1和wrk2已成功添加到Swarm。
root@zq-virtual-machine:~# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
g4i1tmqc0rvnzeh51l2dks4jw localhost.localdomain Ready Active 20.10.18
q9n8xqjyxx1z3gbn3dncobzpg localhost.localdomain Ready Active 20.10.18
oz4yqja5d46z4x4sft4h9qilm * zq-virtual-machine Ready Active Leader 20.10.18