基于Docker Swarm的容器集群部署实践
一、Docker Swarm概述
Docker Swarm是Docker官方提供的集群管理工具,可将多个Docker主机抽象为一个统一的虚拟主机环境。它采用"Swarm模式"实现集群编排,支持服务的高可用部署、自动负载分发和故障自愈。通过docker service命令,用户可以定义服务的副本数量、网络配置和容器参数,Swarm负责将任务调度至集群内的可用节点。
Swarm内置了服务发现与负载均衡机制,能够自动将外部流量路由至运行任务的节点。当节点故障时,系统会自动将任务迁移至健康节点,确保服务持续可用。所有节点需确保Docker引擎已正确安装且版本兼容。
二、集群部署准备
在开始搭建前,确认所有节点均已安装Docker,并处于正常运行状态。
三、构建Swarm集群
3.1 集群架构说明
为方便识别,以下对节点主机名进行统一规划:
- master – 初始管理节点
- slave1 – 工作节点
- slave2 – 工作节点
- slave3 – 管理节点
3.2 初始化管理节点
在master节点上执行初始化命令,将其设置为Swarm的管理节点并指定通告地址:
[root@master ~]# docker swarm init --advertise-addr 192.168.200.10
Swarm initialized: current node (0r9pr636ujer02raru7kcpgw9) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-2pwtfth6qpuypkez62l411vlcsng0zw48q6immmg3aeoydf5fj-4m1wj6met556fugcqbl2dk2uz 192.168.200.10:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
3.3 添加工作节点
slave1节点使用上述输出的token加入集群:
[root@slave1 ~]# docker swarm join --token SWMTKN-1-2pwtfth6qpuypkez62l411vlcsng0zw48q6immmg3aeoydf5fj-4m1wj6met556fugcqbl2dk2uz 192.168.200.10:2377
This node joined a swarm as a worker.
slave2节点以同样的方式加入:
[root@slave2 ~]# docker swarm join --token SWMTKN-1-2pwtfth6qpuypkez62l411vlcsng0zw48q6immmg3aeoydf5fj-4m1wj6met556fugcqbl2dk2uz 192.168.200.10:2377
This node joined a swarm as a worker.
在master节点查看当前集群成员:
[root@master ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
0r9pr636ujer02raru7kcpgw9 * master Ready Active Leader 25.0.4
o622mci81bykwzj5ujczut3jy slave1 Ready Active 25.0.4
ykwdxdwl589cxox8ffevap4hb slave2 Ready Active 25.0.4
3.4 添加管理节点
获取用于添加管理节点的token:
[root@master ~]# docker swarm join-token manager
To add a manager to this swarm, run the following command:
docker swarm join --token SWMTKN-1-2pwtfth6qpuypkez62l411vlcsng0zw48q6immmg3aeoydf5fj-5ntj8tg2i2vahtljs614qjydj 192.168.200.10:2377
在slave3节点上使用该token加入:
[root@slave3 ~]# docker swarm join --token SWMTKN-1-2pwtfth6qpuypkez62l411vlcsng0zw48q6immmg3aeoydf5fj-5ntj8tg2i2vahtljs614qjydj 192.168.200.10:2377
This node joined a swarm as a manager.
3.5 确认集群状态
在master节点再次执行节点列表命令:
[root@master ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
0r9pr636ujer02raru7kcpgw9 * master Ready Active Leader 25.0.4
o622mci81bykwzj5ujczut3jy slave1 Ready Active 25.0.4
ykwdxdwl589cxox8ffevap4hb slave2 Ready Active 25.0.4
73lftyll7or01s0s0ld4urips slave3 Ready Active Reachable 25.0.4
至此,集群搭建完成:包含2个管理节点(master、slave3)和2个工作节点(slave1、slave2)。
总结
Docker Swarm集群部署的核心步骤包括:初始化管理节点、获取并分发加入令牌、按角色添加工作节点或管理节点。该集群模式可实现容器服务的自动编排、负载均衡与高可用,适用于生产环境的容器化管理。