搭建swarm集群

实验环境

ip 服务 备注
192.168.1.11 Docker(已安装) swarm-manage
192.168.1.12 Docker(已安装) swarm node1
192.168.1.13 Docker(已安装) swarm node2

实验步骤

主机名更改

为了方便实验的进行,对每台主机进行更改主机名和hosts文件的编写

192.168.1.11

[root@localhost ~]# vim /etc/hosts
# 添加
192.168.1.11 swarm-manage
192.168.1.12 node1
192.168.1.13 node2
[root@localhost ~]# hostname swarm-manage
[root@localhost ~]# bash
[root@swarm-manage ~]# 

192.168.1.12

[root@localhost ~]# hostname node1
[root@localhost ~]# bash
[root@node1 ~]# 

192.168.1.13

[root@localhost ~]# hostname node1
[root@localhost ~]# bash
[root@node2 ~]# 

免密登录

192.168.1.11

[root@swarm-manage ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:dVRC5qbjHlvEC/2YwOkMZddtz/tKvi5DHU9YYG9k7Tc root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|           .=.+.+|
|           + + =o|
|          + = .+=|
|         = O  oE=|
|        S B +. +=|
|         = =.=. o|
|          =.= o. |
|         . +oo  .|
|          o  +=o.|
+----[SHA256]-----+
[root@swarm-manage ~]# ssh-copy-id -i root@node1
[root@swarm-manage ~]# ssh-copy-id -i root@node2
[root@swarm-manage ~]# scp /etc/hosts/ root@node1:/etc/
[root@swarm-manage ~]# scp /etc/hosts/ root@node2:/etc

初始化swarm集群

默认情况下,当swarm集群初始化后,分配的swarm集群中的ip网段为10.0.0.0/8,如果想要去指定网段,也可以通过初始化时的命令进行指定。如下:

docker swarm init --default-addr-pool 10.20.0.0/16 --advertise-addr 192.168.1.11可以用来指定swarm集群使用的网段.

--default-addr-pool-mask-length 26:加长子网掩码,在16为的基础上加长到26位

命令行选项default-addr-pool 10.10.0.0/16表示Docker将从/16地址范围分配子网。如果–default-addr-pool-mask-len未指定或显式设置为24,则会生成256个 /24个网络,形式为10.10.X.0/24。

swarm manage(192.168.1.11)

指定集群管理节点为192.168.1.11

[root@swarm-manage ~]# docker swarm init --advertise-addr 192.168.1.11
[root@swarm-manage ~]# docker info | grep Swarm
 Swarm: active  # 表示Swarm集群已经在运行了

初始化结束后,会有两条重要输出,第一条为如果要添加swarm node请在要加入集群的主机上执行docker swarm join --token SWMTKN-1-2baacgvhb68lt75ebwyqvh5aemlxr73xjy9zeynkd21dixjwos-0s1m6d83657td755zty07fyu5 192.168.1.11:2377

第二条为,如果要添加新的manage swarm,请在本机执行docker swarm join-token manager,然后会重新报出一个token,用于以manage的身份加入集群。

放行swarm集群端口

[root@swarm-manage ~]# firewall-cmd --add-port=2377/tcp

节点加入集群

node1(192.168.1.12)

[root@node1 ~]# docker swarm join --token SWMTKN-1-2baacgvhb68lt75ebwyqvh5aemlx\
r73xjy9zeynkd21dixjwos\-0s1m6d83657td755zty07fyu5 192.168.1.11:2377
This node joined a swarm as a worker.

node2(192.168.1.13)

[root@node2 ~]# docker swarm join --token SWMTKN-1-2baacgvhb68lt75ebwyqvh5aemlx\
r73xjy9zeynkd21dixjwos\-0s1m6d83657td755zty07fyu5 192.168.1.11:2377
This node joined a swarm as a worker.

swarm-manage(192.168.1.11)

查看集群节点,MANAGER显示的Leader就是集群的管理节点

[root@swarm-manage ~]# docker node ls
ID                            HOSTNAME       STATUS     AVAILABILITY  MANAGER STATUS   ENGINE VERSION
nbg7z9f4zyt6zeufu69mm7m3u     node1          Ready      Active                         19.03.8
9atu8tx0d32nsqyz183x41mpe     node2          Ready      Active                         19.03.8
p2mydxnx99cezu80e4b3z9xnw *   swarm-manage   Ready      Active        Leader           19.03.8

删除集群节点

docker node rm 节点ID

节点提权

将node2主机提升为manager,我在提权后总遇到报错,只要一提权,这台节点状态就是DOWN,查看日志发现是因为没有该主机没有放行2377端口

[root@swarm-manage ~]# docker node promote node2
Node node2 promoted to a manager in the swarm.

查看集群节点,Reachable也表示manager节点

[root@swarm-manage ~]# docker node ls
ID                            HOSTNAME       STATUS     AVAILABILITY  MANAGER STATUS   ENGINE VERSION
nbg7z9f4zyt6zeufu69mm7m3u     node1          Ready      Active                         19.03.8
9atu8tx0d32nsqyz183x41mpe     node2          Ready      Active        Reachable        19.03.8
p2mydxnx99cezu80e4b3z9xnw *   swarm-manage   Ready      Active        Leader           19.03.8

节点降权

将node2主机从manager降为worker

[root@swarm-manage ~]# docker node demote node2

查看管理节点

只要是在swarm集群中的主机都可以看到swamr的管理节点ip

[root@swarm-manage ~]# docker info
...
  Node Address: 192.168.1.12
  Manager Addresses:
   192.168.1.11:2377
...

下载图形化显示工具的镜像

swarm-manage(192.168.1.11)

下载完成后,运行

[root@swarm-manage ~]# docker pull dockersamples/visualizer
[root@swarm-manage ~]# docker run -itd -p 8888:8080 -e HOST=192.168.1.11 \
-e PORT=8080 --volume /var/run/docker.sock:/var/run/docker.sock \
--name visualizer --restart always dockersamples/visualizer
[root@swarm-manage ~]# firewall-cmd --add-port=8888/tcp
success

访问验证http://192.168.1.11:8888

如图所示,集群三个节点都是绿色状态

方便用来查看swarm集群运行后,那个容器副本运行在哪台主机节点上

visualizer

评论




正在载入...
PoweredHexo
HostedAliyun
DNSAliyun
ThemeVolantis
UV
PV
BY-NC-SA 4.0