docker-搭建swarm集群

1、什么是docker swarm集群

简单来讲,平常使用的docker是单机的,使用docker swarm 可以把多个单机组成一个局域网,变为一个整体的

运行 Docker 的主机可以主动初始化一个 Swarm 集群或者加入一个已存在的 Swarm 集群。

2、节点

管理节点用于 Swarm 集群的管理, docker swarm 相关命令大多只能在管理节点执行,工作节点只能执行加入集群和退出集群命令。

一个 Swarm 集群可以有多个管理节点,但只有一个管理节点可以成为 leader , leader 通过 raft 协议实现。

工作节点是任务执行节点,管理节点将服务下发至工作节点执行。

管理节点默认也作为工作节点。可以通过配置让服务只运行在管理节点。

3、创建swarm集群

名称 IP 角色
v2 192.168.78.102 管理节点
v3 192.168.78.103 工作节点
v4 192.168.78.104 工作节点
v5 192.168.78.105 工作节点
(1)先分别对v2、v3、v4、v5主机重命名

之所以这样做,是因为如果不重命名,之后查看集群状态、扩容缩容很难去分辨哪个是哪个

# 在v2上执行
hostnamectl set-hostname v2
systemctl restart docker

# 在v3上执行
hostnamectl set-hostname v3
systemctl restart docker

# 在v4上执行
hostnamectl set-hostname v4
systemctl restart docker

# 在v5上执行
hostnamectl set-hostname v5
systemctl restart docker

 

(2)在v2创建Swarm集群

 

(3)在v3、v4、v5主机上分别执行 “加入集群”命令

在v1节点上执行了docker swarm init后,相当于创建了一个docker集群,并且v1自动成为该集群的管理节点。

其他docker主机想要加入该集群,按照V1上提示的command,在自己的主机上执行即可,也就是:

docker swarm join \
    --token SWMTKN-1-2gnmohmoo21y33x0bv6w339hy145u795cy3ow3x6c6ot64yggz-91vnidr8tljhor7u2nfvejxzc \
    192.168.78.102:2377

 

(4)在管理节点查看集群状态
# 在管理节点v2上执行
docker node ls

 

(5)说明

到这里,docker集群就搭建完了,四个主机上的docker可以视作一个整体了。

之所以搭建docker swarm集群,目的是为了把不同的docker主机从单兵作战转变为整体作战。

之后的很多集群操作,比如使用docker快速搭建MySQL-PXC集群等都会用到今天搭建的docker swarm。

 

4、docker swarm 常用命令

(1) 查看集群状态(在管理节点执行)
# 在管理节点执行命令
docker node ls
(2) 移除节点(在管理节点执行)
# 移除集群中的某个节点(管理节点上执行)
docker node rm 节点ID -f

(3) 退出集群(管理节点和工作节点均可执行)

docker swarm leave -f

 

5、docker swarm 集群下的主机,内部是如何通信的

上面我们创建了管理节点v2,工作节点v3、v4、v5,共计四个docker主机共同组成的docker swarm集群。

那么他们集群内部是如何通信的呢?

其实如果在每个主机上执行docker network ls查看网络,细心地话,就会发现,docker swarm集群下的每一个docker主机都有一个id相同的网络。它们不是我们手动创建的,而是在执行 docker swarm init 或 docker swarm join时创建的。

这也是docker swarm集群内部通信的奥秘。