Docker_swarm集群搭建和服务上线及docker-machine集群管理工具

本文介绍如何使用 Docker Swarm 搭建和管理集群,包括集群的安装配置、服务部署与更新、负载均衡及故障迁移等内容。同时介绍了如何利用 Docker Machine 工具进行集群管理。

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

1. Docker_swarm集群搭建

集群安装docker:
环境部署:

角色server-id安装
MANAGERServer1DOCKER(MASTER)
NODE1Server2DOCKER
NODE2Server3DOCKER
Manager,node
yum install -y
docker-engine-17.03.1.ce-1.el7.centos.x86_64.rpm
docker-engine-selinux-17.03.1.ce-1.el7.centos.noarch.rpm
bash-completion.noarch 1:2.1-6.el7
systemctl start docker
docker swarm init #初始化


在每个节点根据全球唯一token标示加入集群:

 docker swarm join \
>     --token SWMTKN-1-3762bvy7nfh1e142z0cae6843wemapyd2j93o8ghtahje262w5-2946rqu8bhr2z1o7tbbb3kahw \
>     172.25.30.1:2377

2. 集群部署nginx服务

真机搭建仓库:
取消认证;传输密钥给各个节点:
docker container prune #删除认证
传输加密证书:

scp -r certs.d/ root@172.25.30.1:/etc/docker/
scp -r certs.d/ root@172.25.30.2:/etc/docker/
scp -r certs.d/ root@172.25.30.3:/etc/docker/
#创建加密以便远程登陆
docker run -d --restart=always --name registry -v `pwd`/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key -p 443:443 registry:2
docker push westos.org/nginx #推送仓库nginx
docker load -i /home/kiosk/visualizer.tar
docker tag dockersamples/visualizer westos.org/visualizer 
docker push westos.org/visualizer #推送监控仓库

各个节点必须加上解析 172.25.30.250 westos.org
在每个节点从westos.org仓库中拉取镜像:

docker pull westos.org/nginx
在manager部署节点安装启动nginx从本地仓库拉取镜像
80:80------>端口映射
docker service create --name nginx --publish 80:80 --replicas 3 westos.org/nginx
docker service ls
docker service ps nginx
docker service scale nginx=6 #开启6个nginx服务
docker service ps nginx
docker ps


自动实现负载均衡

部署多个容器:sacle规模

为了效果明显我们拉取了visualizer监控镜像
在真机提前搭建好仓库以便节点调用:

docker service create --name=viz --publish=8080:8080/tcp --constraint=node.role==manager --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock westos.org/visualizer



[root@server1 ~]# docker service scale nginx=3
nginx scaled to 3

为了让效果更加明显我们给每个nginx添加一个页面:

echo server1 > index.html
docker container cp index.html nginx.2.9n9gpmvx3rzzjbseujqbsgi7m:/usr/share/nginx/html
echo server2 > index.html
docker container cp index.html nginx.4.jelcmismly25g3kz75tzy1un9:/usr/share/nginx/html
echo server3> index.html
docker container cp index.html   nginx.5.ckja2d72m78xr5nsecuio8hkm:/usr/share/nginx/html

当一个节点宕掉swarm会将该节点任务迁移到另一个节点上但是不会将其中的内容迁移过来所以访问时就会出现nginx原始界面

3. 服务上线

推送新的服务镜像:
docker tag game2048 westos.org/game2048
docker push westos.org/game2048
滚动更新服务上线: # update-parallelism 10 每10s更新10台迭代更新
docker service update –image westos.org/game2048 –update-parallelism 10 –update-delay 10s nginx
nginx

旧服务下线:

服务上线:

从集群移出
docker service ls
docker service rm viz #manager移除监控服务
docker swarm leave #从swarm集群移除节点
docker swarm leave –force #强制移除

4 docker-machine集群管理工具

Docker Machine 是 Docker 官方提供的一个工具,它可以帮助我们在远程的机器上安装 Docker,或者在虚拟机 host 上直接安装虚拟机并在虚拟机中安装 Docker。我们还可以通过 docker-machine 命令来管理这些虚拟机和 Docker。下面是来自 Docker Machine 官方文档的一张图,很形象哦!

Docker-machine部署docker集群

安装脚本:

chmod +x docker-machine-Linux-x86_64-1.15.0
ln -s docker-machine-Linux-x86_64-1.15.0  docker-machine #建立软连接以便更新服务
docker-machine -v #查看版本
ssh-keygen #给节点传输密钥以便直接连接
ssh-copy-id 172.25.30.1
ssh-copy-id 172.25.30.2
ssh-copy-id 172.25.30.3
ssh root@172.25.30.1 #测试
ssh root@172.25.30.2
ssh root@172.25.30.3
docker-machine ls #查看管理的节点
cd
# 创建节点加入集群记得加本地解析
docker-machine create --driver generic --generic-ip-address=172.25.30.1 server1
docker-machine create --driver generic --generic-ip-address=172.25.30.2 server2
docker-machine create --driver generic --generic-ip-address=172.25.30.3 server3
docker-machine ls 
docker-machine ssh server3 docker images  #从管理节点查看server3的镜像
docker-machine env server3 #从管理节点查看server3的环境
docker-machine rm server3 #移除节点server3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值