环境部署:
三台rhel7.3主机
server11:172.25.81.1
server12:172.25.81.2
server13:172.25.81.3
1、三个节点安装Docker并开启服务
[root@server1 ~]# systemctl start docker
[root@server2 ~]# systemctl start docker
[root@server3 ~]# systemctl start docker
2、server1初始化集群(swarm)
[root@server1 ~]# docker swarm init
3、server2 server3节点加入集群
[root@server2 ~]# docker swarm join --token SWMTKN-1-44lwf8zc3m6d0g39apq4oazejws7lyo7k1yzv01c551b56efao-8owl3qah0qk5k64knx4hah6js 172.25.81.1:2377
[root@server3 ~]# docker swarm join --token SWMTKN-1-44lwf8zc3m6d0g39apq4oazejws7lyo7k1yzv01c551b56efao-8owl3qah0qk5k64knx4hah6js 172.25.81.1:2377
server1查看节点信息
[root@server1 ~]# docker node ls
4、创建名称为web,副本为3,开放端口为80的nginx服务
三台机器都拉取到nginx镜像
[root@server1 ~]# docker network create -d overlay my_net1
[root@server1 ~]# docker service create --name web --network my_net1 --publish 80:80 --replicas 3 nginx
查看docker服务列表
[root@server1 ~]# docker service ls
查看docker的web服务
[root@server1 ~]# docker service ps web
增加或减少服务数目,直接对scale的数据设置即可:
增加scale数目
[root@server1 ~]# docker service scale web=6
减少scale数目
5、从容器中复制文件到主机nginx默认发布目录
三台机器都需要进行此操作
[root@server1 ~]# vim index.html
www.server1.org[root@server1 ~]# docker container cp index.html 6266cdefbca6:/usr/share/nginx/html
测试(负载均衡):
[kiosk@foundation81 ~]$ for i in {1..10}; do curl 172.25.81.1; done
[kiosk@foundation81 ~]$ for i in {1..10}; do curl 172.25.81.2; done
[kiosk@foundation81 ~]$ for i in {1..10}; do curl 172.25.81.3; done
Docker Swarm集群安装Visualizer
Visualizer是一个图形化界面,显示docker swarm集群中各个节点状态、运行容器以及负载情况的监控工具。
集群节点:server1(manager)、server2(node)、server3(node)
Visualizer安装与部署
<1>安装Visualizer(manager)
[root@server1 ~]# docker load -i visualizer.tar
<2>添加可视图形界面
[root@server1 ~]# 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
<3>测试
当server3的docker服务关闭后,web从server3转移到server2
滚动更新(灰度更新)
1、下载镜像
2、manager端增加web服务数目为30
[root@server1 ~]# docker service scale web=30
3、设定每5秒更新一次,每次更新10个
[root@server1 ~]# docker service update --image rhel7:v1 --update-delay 5s --update-parallelism 10 web
更新成功: