docker swarm 集群安装
集群地址规划
| IP | 域名 | 职责 |
|---|---|---|
| 192.168.1.140 | docker-master140 | docker manager管理节点 |
| 192.168.1.141 | docker-slave141 | docker work管理节点 |
| 192.168.1.142 | docker-slave142 | docker work管理节点 |
| 192.168.1.143 | docker-master143 | docker manager管理节点 |
| 192.168.1.144 | docker-slave144 | docker work管理节点 |
| 192.168.1.145 | docker-slave145 | docker work管理节点 |
| 192.168.1.146 | docker-master146 | docker manager管理节点 |
选择192.168.1.140 初始化swarm
docker swarm init
此时 ==192.168.1.140== 是作为manager节点
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-01zoe5k1rz0d3o7wzrtto300jt84dib8l6skf6kv29neq6exp2-11yc09o8fgr4fw6yszq7hz34u 192.168.1.140:2377
[root@docker-master140 ~]#
在work节点上执行,将work节点加入到集群中
docker swarm join --token SWMTKN-1-01zoe5k1rz0d3o7wzrtto300jt84dib8l6skf6kv29neq6exp2-11yc09o8fgr4fw6yszq7hz34u 192.168.1.140:2377
将141以work节点加入到集群
[root@docker-slave141 ~]# docker swarm join --token SWMTKN-1-01zoe5k1rz0d3o7wzrtto300jt84dib8l6skf6kv29neq6exp2-11yc09o8fgr4fw6yszq7hz34u 192.168.1.140:2377
This node joined a swarm as a worker.
[root@docker-slave141 ~]#
将142以work节点加入到集群
[root@docker-slave142 ~]# docker swarm join --token SWMTKN-1-01zoe5k1rz0d3o7wzrtto300jt84dib8l6skf6kv29neq6exp2-11yc09o8fgr4fw6yszq7hz34u 192.168.1.140:2377
This node joined a swarm as a worker.
[root@docker-slave142 ~]#
将144以work节点加入到集群
[root@docker-slave144 ~]# docker swarm join --token SWMTKN-1-01zoe5k1rz0d3o7wzrtto300jt84dib8l6skf6kv29neq6exp2-11yc09o8fgr4fw6yszq7hz34u 192.168.1.140:2377
This node joined a swarm as a worker.
[root@docker-slave144 ~]#
将145以work节点加入到集群
[root@docker-slave145 ~]# docker swarm join --token SWMTKN-1-01zoe5k1rz0d3o7wzrtto300jt84dib8l6skf6kv29neq6exp2-11yc09o8fgr4fw6yszq7hz34u 192.168.1.140:2377
This node joined a swarm as a worker.
[root@docker-slave145 ~]#
生成manager节点token
#必须要在manager节点上生成一个manager加入的token
[root@docker-master140 ~]# docker swarm join-token manager
To add a manager to this swarm, run the following command:
docker swarm join --token SWMTKN-1-01zoe5k1rz0d3o7wzrtto300jt84dib8l6skf6kv29neq6exp2-eiprnnaoft0npmwzbe7jpwxi5 192.168.1.140:2377
[root@docker-master140 ~]#
将143以manager节点加入到集群
[root@docker-master143 ~]# docker swarm join --token SWMTKN-1-01zoe5k1rz0d3o7wzrtto300jt84dib8l6skf6kv29neq6exp2-eiprnnaoft0npmwzbe7jpwxi5 192.168.1.140:2377
This node joined a swarm as a manager.
[root@docker-master143 ~]#
查看143管理节点情况
[root@docker-master143 ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION 47x8wx5prmony48vtqrrebqtn app-slave141 Down Active 20.10.3 wjjs2vzww52uhuzf3vwmp913u docker-master140 Ready Active Leader 20.10.3 w732g5wbb3znsnx4nqqndo9s9 docker-master143 Ready Active Reachable 20.10.4
将146以manager节点加入到集群
[root@docker-master146 ~]# docker swarm join --token SWMTKN-1-01zoe5k1rz0d3o7wzrtto300jt84dib8l6skf6kv29neq6exp2-eiprnnaoft0npmwzbe7jpwxi5 192.168.1.140:2377
This node joined a swarm as a manager.
[root@docker-master146 ~]#
在管理节点上查看集群情况
[root@docker-master146 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
47x8wx5prmony48vtqrrebqtn app-slave141 Down Active 20.10.3
wjjs2vzww52uhuzf3vwmp913u docker-master140 Ready Active Leader 20.10.3
w732g5wbb3znsnx4nqqndo9s9 docker-master143 Ready Active Reachable 20.10.4
ehnyydmpviv3tym4xc4m9zmai docker-master143 Down Active 20.10.4
dx7944e1j559d0y3jbwokdq49 * docker-master146 Ready Active Reachable 20.10.4
r6hftqpz9flb1w3to3uy0bas1 docker-slave141 Ready Active 20.10.3
wus9gmekjnky6qonvpi9jvi03 docker-slave142 Ready Active 20.10.3
rnzw170fa08mclk1suam0u65a docker-slave142 Down Active 20.10.3
nhlw2phgfq8u0b5pcog5q6opg docker-slave144 Ready Active 20.10.4
q1vp8kavb7y1bf1j10eyx5g7o docker-slave145 Ready Active 20.10.4
[root@docker-master146 ~]#
在portainer加入节点
需改需要加入到portainer管理的节点
[root@docker-master143 ~]# vi /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service containerd.service
Wants=network-online.target
Requires=docker.socket containerd.service
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
需要添加如下:
==ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock==
是配置生效
[root@docker-master146 ~]# systemctl daemon-reload
[root@docker-master146 ~]#
重新启动docker服务
共享盘创建
在主机和从机上安装并启动nfs服务
yum -y install rpcbind nfs-utils
systemctl stop nfs.service
systemctl stop rpcbind.service
systemctl start rpcbind.service
systemctl enable rpcbind.service
systemctl start nfs.service
systemctl enable nfs.service
主机上创建映射
vim /etc/exports
## 添加如下内容
/home/leek/apps/ 192.168.1.141/24(rw,no_root_squash,no_all_squash,sync)
/home/leek/apps/ 192.168.1.142/24(rw,no_root_squash,no_all_squash,sync)
/home/leek/apps/ 192.168.1.143/24(rw,no_root_squash,no_all_squash,sync)
/home/leek/apps/ 192.168.1.144/24(rw,no_root_squash,no_all_squash,sync)
/home/leek/apps/ 192.168.1.145/24(rw,no_root_squash,no_all_squash,sync)
/home/leek/apps/ 192.168.1.146/24(rw,no_root_squash,no_all_squash,sync)
/home/leek/conf/ 192.168.1.141/24(rw,no_root_squash,no_all_squash,sync)
/home/leek/conf/ 192.168.1.142/24(rw,no_root_squash,no_all_squash,sync)
/home/leek/conf/ 192.168.1.143/24(rw,no_root_squash,no_all_squash,sync)
/home/leek/conf/ 192.168.1.144/24(rw,no_root_squash,no_all_squash,sync)
/home/leek/conf/ 192.168.1.145/24(rw,no_root_squash,no_all_squash,sync)
/home/leek/conf/ 192.168.1.146/24(rw,no_root_squash,no_all_squash,sync)
在主机上创建目录并发布映射
mkdir -p /home/leek/apps/
mkdir -p /home/leek/conf/
mkdir -p /home/leek/logs/
exportfs -rv
从机上执行绑定共享目录
mkdir -p /home/leek/apps/
mkdir -p /home/leek/conf/
mkdir -p /home/leek/logs/
mount -t nfs 192.168.1.140:/home/leek/apps/ /home/leek/apps/ -o rw,nolock,nfsvers=3,vers=3
mount -t nfs 192.168.1.140:/home/leek/conf/ /home/leek/conf/ -o rw,nolock,nfsvers=3,vers=3
echo "192.168.1.140:/home/leek/apps/ /home/leek/apps nfs defaults 0 0" >> /etc/fstab
echo "192.168.1.140:/home/leek/conf/ /home/leek/conf nfs defaults 0 0" >> /etc/fstab