docker swarm 集群安装

298 阅读5分钟

docker swarm 集群安装


集群地址规划

IP域名职责
192.168.1.140docker-master140docker manager管理节点
192.168.1.141docker-slave141docker work管理节点
192.168.1.142docker-slave142docker work管理节点
192.168.1.143docker-master143docker manager管理节点
192.168.1.144docker-slave144docker work管理节点
192.168.1.145docker-slave145docker work管理节点
192.168.1.146docker-master146docker 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服务 image-20210228213531832.png

共享盘创建

在主机和从机上安装并启动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