Docker三剑客--Docker Swarm集群实现负载均衡

环境部署:

三台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集群中各个节点状态、运行容器以及负载情况的监控工具。

环境部署:

搭建好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

更新成功:

猜你喜欢

转载自blog.csdn.net/weixin_40172997/article/details/88572125
今日推荐