docker-swarm及其图形监控

本文介绍了如何使用Docker Swarm创建一个由manager和worker节点组成的集群,并详细阐述了节点的加入过程。通过在manager节点上设置环境,其他worker节点成功加入。接着,文章演示了如何调整容器副本数量实现负载均衡,并利用visualizer进行图形化监控。在完成集群配置后,作者展示了如何将nginx更新为game2048服务,并且提到了实时更新和监控的机制。

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

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

在浏览器访问:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值