Docker-swarm 将节点分为 manager 和 worker
172.25.70.1 做manager(server1)
172.25.70.2(server2)和172.25.70.3(server3)做worker
1、在 manager(server1) 端创建 swarm 环境,获取 token
[root@server1 ~]# yum install docker-engine-17.03.1.ce-1.el7.centos.x86_64.rpm docker-engine-selinux-17.03.1.ce-1.el7.centos.noarch.rpm -y
systemctl start docker ###打开docker
[root@server1 ~]#docker load -i nginx.tar ###导入镜像
[root@server1 ~]#docker images
[root@server1 ~]# docker swarm init
Swarm initialized: current node (ws7do7nl2pe6muszdi2496ien) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-618pcfkdqk2pe4zkmsjrhc54t98pdu7p63663mh2gsfjnfde30-f0n9q09uqjlsu54md04efhyo6 \
172.25.70.1:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
其他两个 worker 节点加入到 swarm cluster
在server2中:
[root@server2 ~]# yum install docker-engine-17.03.1.ce-1.el7.centos.x86_64.rpm docker-engine-selinux-17.03.1.ce-1.el7.centos.noarch.rpm -y
systemctl start docker ###打开docker
[root@server2 ~]# docker load -i nginx.tar
cdb3f9544e4c: Loading layer 58.44 MB/58.44 MB
a8c4aeeaa045: Loading layer 54.24 MB/54.24 MB
08d25fa0442e: Loading layer 3.584 kB/3.584 kB
Loaded image: nginx:latest
[root@server2 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest c82521676580 4 weeks ago 109 MB
###添加节点
[root@server2 ~]# docker swarm join \
> --token SWMTKN-1-618pcfkdqk2pe4zkmsjrhc54t98pdu7p63663mh2gsfjnfde30-f0n9q09uqjlsu54md04efhyo6 \
> 172.25.70.1:2377
This node joined a swarm as a worker.
在server3中:
[root@server3 ~]# yum install docker-engine-17.03.1.ce-1.el7.centos.x86_64.rpm docker-engine-selinux-17.03.1.ce-1.el7.centos.noarch.rpm -y
systemctl start docker ###打开docker
[root@server3 ~]# docker load -i nginx.tar
cdb3f9544e4c: Loading layer 58.44 MB/58.44 MB
a8c4aeeaa045: Loading layer 54.24 MB/54.24 MB
08d25fa0442e: Loading layer 3.584 kB/3.584 kB
Loaded image: nginx:latest
[root@server3 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest c82521676580 4 weeks ago 109 MB
###添加节点
[root@server3 ~]# docker swarm join \
> --token SWMTKN-1-618pcfkdqk2pe4zkmsjrhc54t98pdu7p63663mh2gsfjnfde30-f0n9q09uqjlsu54md04efhyo6 \
> 172.25.70.1:2377
This node joined a swarm as a worker.
在 manager 端查看 swarm 节点信息
[root@server1 ~]# docker service create --name web --replicas 3 -p 80:80 nginx
[root@server1 ~]# docker service ls
###列出添加的服务
[root@server1 ~]# docker service ps web
###在三个节点均匀分配
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
obe02qsraelh web.1 nginx server2.example.com Running Running about a minute ago
zlcczu386m7g web.2 nginx server3.example.com Running Running about a minute ago
4h4192vsdmj3 web.3 nginx server1.example.com Running Running about a minute ago
网页访问查看
编辑默认发布目录,写入复制到nginx容器下
在server1中:
[root@server1 ~]# vim index.html
[root@server1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0ac1f8091ef9 nginx:latest "nginx -g 'daemon ..." 7 minutes ago Up 7 minutes 80/tcp web.3.4h4192vsdmj3oxyvms5qd5u2e
[root@server1 ~]# docker container cp index.html 0ac1f8091ef9:/usr/share/nginx/html
###复制到nginx容器下
在server2上:
[root@server2 ~]# vim index.html
[root@server2 ~]# cat index.html
<h1>server2-swarm</h1>
[root@server2 ~]# docker container cp index.html ef0c9379200f:/usr/share/nginx/html
在server3上:
[root@server3 ~]# vim index.html
[root@server3 ~]# cat index.html
<h1>server3-swarm</h1>
[root@server3 ~]# docker container cp index.html e4913a11cd89:/usr/share/nginx/html
测试其负载均衡
scale参数:
其可以调整容器副本的个数
[root@server1 ~]# docker service scale web=6
unable to pin image nginx to digest: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on [::1]:53: read udp [::1]:47034->[::1]:53: read: connection refused
web scaled to 6
[root@server1 ~]# docker service ls
ID NAME MODE REPLICAS IMAGE
jvycnhw4wkah web replicated 6/6 nginx
[root@server1 ~]# docker service ps web
##查看添加的web服务的状态
visualizer图形监控
[root@server1 ~]# docker load -i visualizer.tar
Loaded image: dockersamples/visualizer:latest
[root@server1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest c82521676580 4 weeks ago 109 MB
dockersamples/visualizer latest 17e55a9b2354 11 months ago 148 MB
完成后创建服务
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
[root@server1 ~]# docker service ls
ID NAME MODE REPLICAS IMAGE
lzxqvkpnqg80 nginx replicated 3/3 nginx
z6n7e60ibwq4 viz replicated 1/1 dockersamples/visualizer
在浏览器访问:
在机器上的操作可以实时用图形来监控,将nginx更新为game2048
每10秒更新一此,一次更新10个
root@server1 ~]# docker service update --image westos.org/game2048 --update-parallelism 10 --update-delay 10s nginx
nginx
在浏览器访问: