centos上docker集群搭建方法
导读:CentOS 上 Docker Swarm 集群搭建步骤 一 架构与端口规划 组件与角色:使用 Docker 原生的 Swarm 模式,将多台 CentOS 主机组成一个集群,包含 Manager 与 Worker 两类节点;Manage...
CentOS 上 Docker Swarm 集群搭建步骤
一 架构与端口规划
- 组件与角色:使用 Docker 原生的 Swarm 模式,将多台 CentOS 主机组成一个集群,包含 Manager 与 Worker 两类节点;Manager 维护集群状态与调度,Worker 运行容器任务。建议 Manager 数量为奇数(如 3 或 5) 以实现控制面高可用(Raft 共识)。
- 端口要求(所有节点间需互通):
- 2377/tcp:Swarm 管理通信端口
- 7946/tcp 与 7946/udp:节点间 gossip 通信
- 4789/udp:Overlay 覆盖网络(VXLAN)
- 基础环境:各节点安装 Docker Engine,主机名可解析(/etc/hosts 或 DNS),时间同步(如 chrony/ntpd)。
二 环境准备与 Docker 安装
- 所有节点执行(以 root 或具备 sudo 权限的用户):
- 设置主机名与解析(示例):
hostnamectl set-hostname node1 echo "192.168.1.101 node1 192.168.1.102 node2 192.168.1.103 node3" > > /etc/hosts - 安装 Docker(使用国内镜像源加速):
yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum -y install docker-ce systemctl start docker & & systemctl enable docker - 可选:配置镜像加速器(/etc/docker/daemon.json):
{ "registry-mirrors": ["https://docker.m.daocloud.io","https://hub-mirror.c.163.com"] } systemctl restart docker - 防火墙放行端口(推荐按需开放,而非直接关闭防火墙):
firewall-cmd --zone=public --add-port=2377/tcp --permanent firewall-cmd --zone=public --add-port=7946/tcp --permanent firewall-cmd --zone=public --add-port=7946/udp --permanent firewall-cmd --zone=public --add-port=4789/udp --permanent firewall-cmd --reload - SELinux(如为 enforcing,建议测试环境先设为 permissive 或按策略放行,生产以合规策略为准):
setenforce 0 sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
- 设置主机名与解析(示例):
三 初始化 Swarm 并加入节点
- 在第一个节点(规划为 Manager)初始化集群:
记录输出的加入命令(包含 Worker 与 Manager 的 Token)。如需查看或再次生成加入命令:docker swarm init --advertise-addr < MANAGER-IP> :2377 --listen-addr < MANAGER-IP> :2377docker swarm join-token worker docker swarm join-token manager - 在其他节点加入集群(分别执行上一步输出的对应命令),例如 Worker:
docker swarm join --token < WORKER-TOKEN> < MANAGER-IP> :2377 - 在 Manager 查看节点状态:
输出中 MANAGER STATUS 为 Leader/Reachable 表示控制面正常。docker node ls
四 高可用与常用运维
- 提升管理节点数量(实现控制面 HA,建议保持奇数个 Manager):
docker node promote < NODE-NAME> docker node ls - 节点维护与排空(升级/维护前将节点置为 Drain,任务会自动迁移):
docker node update --availability drain < NODE-NAME> # 维护完成后恢复 docker node update --availability active < NODE-NAME> - 服务部署示例(创建覆盖网络并发布端口):
docker network create --driver overlay --attachable my-overlay docker service create --name nginx \ --replicas 3 \ --publish published=8080,target=80 \ --network my-overlay \ nginx:latest docker service ls docker service ps nginx - 节点移除与强制离开:
# 在待移除节点执行 docker swarm leave --force # 在 Manager 执行 docker node rm < NODE-ID> - 证书轮换与备份(提升安全性与可恢复性):
# 轮换 Swarm CA 证书 docker swarm ca --rotate # 备份 Raft 数据(在 Manager 执行) tar czvf swarm-backup-$(date +%F).tar.gz /var/lib/docker/swarm/
五 常见问题与排查
- 无法加入集群:核对 2377/tcp、7946/tcp|udp、4789/udp 是否在所有节点间放通;多网卡环境在 init/join 时显式指定 –advertise-addr 与 –listen-addr;Token 是否正确(区分 worker/manager)。
- 法定人数丢失(Quorum Lost):Swarm 需要多数 Manager 在线;若丢失多数,管理操作(扩缩容、升级等)将不可用。尽快恢复离线 Manager;若不可恢复,可在现有 Manager 上谨慎执行 docker swarm init --force-new-cluster 重建控制面(会丢失除本机外的 Raft 状态,务必先备份)。
- 节点状态异常:使用 docker node ls 查看 STATUS/AVAILABILITY/MANAGER STATUS;必要时将节点 drain 后恢复,或 promote/demote 调整角色;服务异常可用 docker service ps 定位故障实例与节点。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos上docker集群搭建方法
本文地址: https://pptw.com/jishu/778093.html
