一、Docker Swarm 介绍
Docker Swarm 是 Docker 的集群管理工具。
swarm 集群由管理节点(manager)和工作节点(work node)构成。
swarm mananger:负责整个集群的管理工作包括集群配置、服务管理等所有跟集群有关的工作。
work node:主要负责运行相应的服务来执行任务(task)。
二、集群搭建
准备 4 台服务器(docker-1,docker-2,docker-3,docker-4),这里使用的是阿里云服务器
1、初始化集群 – 创建 swarm 集群管理节点(manager)
使用命令初始化一个 docker swarm 管理节点(在主机 docker-1 上搭建)
docker swarm init --advertise-addr ip 地址
[root@iZwz96mqfw1fyrbuyd0452Z ~]# docker swarm init --advertise-addr 172.20.240.123
docker swarm join 加入一个节点 docker swarm join-token manager 创建其加入管理节点 token 命令 创建一个主节点的 token 令牌 docker swarm join-token worker 创建其加入工作节点 token 命令
2、创建 swarm 集群工作节点(worker)
①、加入一个工作节点(在主机 docker-2 上操作)
在主节点 docker-1 查看 node 信息,可以看到刚加入的工作节点
②、加入第二个工作节点
首先在主节点 docker-1 创建一个工作节点的 token 令牌
然后在主机 docker-3 上使用上面创建的 token 命令
③、再在主机 docker-1 上创建一个主节点的 token 令牌
在主机 docker-4 上使用该命令创建 manager 节点
再次查看 node 信息
三、Raft 协议
raft 协议:保证大多数节点存活才可以用,至少 > 1 个节点存活,集群 > 3
目前搭建的集群是 2 主 2 从(主 [docker-1,docker-4],从 [docker-2,docker-3])
问题:假设其中一个节点挂了,其他节点是否可用?
测试:
停掉主节点 docker-1,另一台主节点 docker-4 也不能使用。
如果将从节点离开集群,集群信息会看到此节点 down 的状态
将 2 主 2 从设置成 3 主 1 从,现将 docker-3 变成主节点
先在任一管理节点生成一个主节点 token 令牌
在需要成为主节点的主机上使用该命令
查看 node 信息,可以发现,集群设置成 3 主 1 从了
测试停止其中一台主节点,其它 2 台是否可以正常使用
再次测试停止第 2 台主节点,查看第 3 台是否可以正常使用
查看 node 信息,发现 2 台主节点停止后,第 3 台主节点不能正常使用
为了达到集群可用,若有 3 个主节点,必须要有 > 1 台存活的管理节点,才可以正常使用。这就是 Raft 协议的一致性!
四、Swarm 集群弹性创建服务
1、部署服务到集群中
通过 swarm 能够轻松实现灰度发布、金丝雀发布!
docker run 容器启动,不具有扩缩容功能
docker service 服务启动,具有扩缩容器功能,支持滚动更新!
查看服务
2、动态扩缩容
滚动更新
动态扩缩容
3、移除服务
分享:Docker 学习视频地址:【狂神说 Java】Docker 进阶篇超详细版教程通俗易懂