docker的学习历程-swarm集群搭建(动态扩缩容)

该博客介绍了如何在CentOS-7环境下利用Docker Swarm搭建一个高可用的Nginx服务集群。首先,配置了国内YUM源以加速安装过程,然后在四台虚拟机上安装并配置了Ansible和Docker。接着,通过初始化和加入节点创建了Swarm集群,并解决了因防火墙导致的连接问题。在集群中,创建了一个Nginx服务并设置了副本数量以实现弹性扩展。此外,还探讨了在Swarm中使用NFS挂载卷的方法,确保数据的持久性和高可用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

搭建基于docker swarm的nginx集群(centos-7)

搭建步骤

  1. 准备四台虚拟机
    虚拟机的ip详情

  2. 配置国内repo源,这是使用阿里云提供的repo源

# 备份初始repo源
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
#下载repo文件
cd   /etc/yum.repos.d/
curl http://mirrors.163.com/.help/CentOS7-Base-163.repo -o CentOS-Base.repo
# 更新缓存
yum clean all
yum makecache fast

  1. 在一台虚拟机上安装ansible,并配置免密通道,方便集群操作
    ansible的安装与部署

  2. 四台机器全部安装好docker,并启动
    docker的安装步骤

  3. 创建swarm集群

# 初始化集群
[root@swarm-manager1 ~]# docker swarm init --advertise-addr 192.168.44.131
# manager令牌
[root@swarm-manager1 ~]# docker swarm join-token manager

  1. 添加swarm集群manager

出现报错信息:no route to host
添加manager报错
可能是leader manager的防火墙没有关

# 停止防火墙服务
systemctl stop firewalld
setenforce 0
# 永久关闭selinux
sed -i '/^SELINUX/ s/enforcing/disabled/g' /etc/selinux/config

发现问题还是没有解决
试着将集群所有结点的主机关闭防火墙
问题解决
成功添加manager结点

# 添加manager到集群
[root@swarm-manager2 ~]# docker swarm join --token SWMTKN-1-1lbndvl3vrziip1y377uuoe3uzl6ox7nja3mr6ymr92emulhwz-8z39sv42a09z0isjfn1vfa6c4 192.168.44.131:2377
[root@swarm-manager3 ~]# docker swarm join --token SWMTKN-1-1lbndvl3vrziip1y377uuoe3uzl6ox7nja3mr6ymr92emulhwz-8z39sv42a09z0isjfn1vfa6c4 192.168.44.131:2377

  1. 添加swarm集群worker
[root@docker-node /]# docker swarm join --token SWMTKN-1-1lbndvl3vrziip1y377uuoe3uzl6ox7nja3mr6ymr92emulhwz-er23pec2dwap03v88sztrrhk9 192.168.44.131:2377
  1. swarm集群搭建完成swarm搭建完成

swarm集群弹性创建服务

# 启动一个服务
docker service create -p 8080:80 --name my-nginx nginx
# 创建副本
docker service scale my-nginx=5

副本创建成功
高可用
docker swarm使用raft协议来支持管理结点的高可用
本次搭建的集群有三个管理结点,试着关闭管理结点集群是否能正常工作

关闭manager2发现集群可正常工作

[root@swarm-manager2 ~]# systemctl stop docker
# 更新服务
[root@swarm-manager1 ~]# docker service update my-nginx

关闭manager2结点

[root@swarm-manager3 ~]# systemctl stop docker

再关闭manager3发现集群不能正常工作
manager3关闭

使用nfs挂载卷
nfs部署安装


 docker volume create --driver local --opt type=nfs --opt o=addr=192.168.0.8,rw --opt device=:/web  yongzhou

  docker service create   --name nfs-sc-nginx   --publish 80:80   --mount type=volume,source=sc_xieyuqi2,destination=/app  --replicas 10 nginx

  /usr/share/nginx/html -->启动nginx需要去读写的目录
  /app 是我们自定义镜像的nginx里的网页存放的目录
  /app -->volume-->nfs server
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值