在三台虚拟机上安装docker
安装包下载,提取码ggc9
开启服务
server1为主节点
server2,3为工作节点
- ############################1.开启swarm
server1上初始化swarm
docker swarm init
在server2,3上开启docker后都复制这个到shell
docker swarm join --token SWMTKN-1-0wdqnyzef4f7xn5tlf2drbwhgchfoj5hzxiar1d7li0py3xdzj-cnj5nrah9d1i5a7s5hrtw7sw3 172.25.16.1:2377
server1上查看节点信息
docker node ls
所有server上添加nginx镜像
一些封装好的docker镜像,提取码e4yf
cd ~/images/
docker load -i nginx.tar
在server1上查看网卡设备名
创建服务
docker service create --name web --publish 80:80 --replicas 3 nginx
安装这个服务可以查看桥接
yum install bridge-utils -y
查看网络服务状态
docker service ps web
写一个发布页文件复制到容器里
docker1
docker2
docker3
测试
for i in {1..10}; do curl 172.25.16.1;done
修改集群数量
测试
docker service scale web=6
for i in {1..10}; do curl 172.25.16.1;done
因为新的节点没有写发布页,所以会出现nginx的默认发布页,这是正常的。
也可以缩减
- #############################################2.图形化监控
导入镜像
cd images/
docker load -i visualizer.tar
部署
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 \
dockersamples/visualizer
真机浏览器连接172.25.16.1:8080
- ###################################3.自动化更新镜像
三个节点都导入httpd镜像
cd ~/images
docker load -i httpd.tar
输入命令更新
含义是docker服务更新
更新镜像为httpd
更新间隔为5s
更新节点个数为3
目标docker服务为web
docker service update --image httpd:latest --update-delay 5s --update-parallelism 3 web
真机浏览器连接172.25.16.1:8080
此时nginx已经变为httpd
- ######################################4.测试高可用
在server2上停止docker服务
真机浏览器连接172.25.16.1:8080
可见此时已经自动把节点分配到server3上