docker swarm集群部署

原创 社长  2019-06-20 11:53:53  阅读 160 次 评论 0 条
重庆专业seo
摘要:

Swarm 是 Docker 公司在 2014 年 12 月初发布的一套较为简单的工具,用来管理 Docker 集群,它将一群 Docker 宿主机变成 一个单一的,虚拟的主机。Swarm 使用标准的 Docker API接口作为其前端访问入口。换言之,各种形式的 Docker Client(docker client in go,docker_py,docker 等)均可以直接与 Swarm 通信。Swarm 几乎全部用 Go 语言来完成开发。Swarmdeamon 只是一个调度器(Sched

Swarm 是 Docker 公司在 2014 年 12 月初发布的一套较为简单的工具,用来管理 Docker 集群,它将一群 Docker 宿主机变成 一个单一的,虚拟的主机。Swarm 使用标准的 Docker API接口作为其前端访问入口。

换言之,各种形式的 Docker Client(docker client in go,docker_py,docker 等)均可以直接与 Swarm 通信。Swarm 几乎全部用 Go 语言来完成开发。Swarmdeamon 只是一个调度器(Scheduler)加路由器(router),Swarm 自己不运行容器,它只是接受 docker 客户端发送过来的请求,调度适合的节点来运行容器,这意味着,即使Swarm 由于某些原因挂掉了,集群中的节点也会照常运行,当 Swarm 重新恢复 运行之后,它会收集重建集群信息。


一、实验环境

主机 ip

server1(manager) 172.25.66.1

server2(node) 172.25.66.2

server3(node) 172.25.66.3

物理机(用来测试) 172.25.66.250

server1-3安装docker,这里就不做详细说明了


二、Docker swarm集群的搭建

1.在管理节点server1上初始化swarm集群


注意这里的初始化信息一定要记住,否则后面的节点添加会有问题

再server1结点上查看桥接的信息


[root@server1 ~]# yum install -y bridge-utils

[root@server1 ~]# brctl show

bridge name bridge id STP enabled interfaces

docker0 8000.024284afdac2 no

docker_gwbridge 8000.0242baf2117c no vethdb9c523

在server1上查看docker网络


2.server2,server3(work节点)加入集群

这里添加我们使用server1初始化swarm是给的信息添加


[root@server2 ~]# docker swarm join --token SWMTKN-1-5q67usqkebyg8jsvs7ph0f8fhisvwbtf5vmwkpkf4uq0zvwy16-2w2t0kygvl1usyyp8njimsv5k 172.25.66.1:2377

This node joined a swarm as a worker.

[root@server3 docker]# docker swarm join --token SWMTKN-1-5q67usqkebyg8jsvs7ph0f8fhisvwbtf5vmwkpkf4uq0zvwy16-2w2t0kygvl1usyyp8njimsv5k 172.25.66.1:2377

This node joined a swarm as a worker.

在server1查看节点信息



三、使用swarm集群,部署web服务

1.三个节点导入nginx镜像




2.在集群上部署三个nginx容器,用来提供服务


[root@server1 ~]# docker network create -d overlay webnet 创建驱动为overlay的网络

mtzsosbl90js7zt7sgdx1tmo0

[root@server1 ~]# docker service create --name web  \

> --network webnet \

> --replicas 3 \ –replicas 3就是代表集群的个数变为3。manager会将容器平均分配到三个节点上

> -p 80:80 \

> nginx

里使用的是自己创建的驱动为overlay的网络(值的一提的是:如果这里指定网络,则必须是驱动为overlay的网络)。当然也可以不加--network webnet,使用默认的网络

然后我们来查看以下80端口的开放情况,docker的服务列表,docker集群的web列表


2.在三个结点上操作:复制发布界面件到容器nginx默认发布目录

server1:


[root@server1 ~]# vim index.html

[root@server1 ~]# cat index.html 

server1

[root@server1 ~]# docker cp index.html web.2.ilcqcco97amncs6zdbaaehvov:/usr/share/nginx/html

server2:

[root@server2 ~]# echo server2 > index.html

[root@server2 ~]# cat index.html 

server2

[root@server2 ~]# docker cp index.html web.3.m49ne7urb53evlwxe3ka4vftk:/usr/share/nginx/html

server3:

[root@server3 ~]# echo server3 > index.html

[root@server3 ~]# cat index.html 

server3

[root@server3 ~]# docker cp index.html web.1.weqolp9qdhotabj9vve7sytsu:/usr/share/nginx/html

注意:这里的web时可以自动补齐的

3.在物理机上测试负载均衡

四、容器的拉神以及缩减(增加或减少服务数目)

1.拉神(增加scale数目)

我们可以看到三个节点各运行两个容器

查看docker集群的web服务列表

2.测试

[root@foundation66 ~]# for i in {1..10}; do curl 172.25.66.3/index.html ;done

3.缩减

五、监控

我们在使用docker自带的swarm集群时的状态,不能一直去敲命令去查看,那么我们可以使用visualizer去监控

首先,在网上去下载visualizer的镜像,这里不做多的说明了

1.在server1上,导入visualizer的镜像

2、创建swarm的监控容器

查看viz容器

查看8080端口是否开放

3、测试:web页面去监控管理的集群每个容器的状态

docker swarm集群部署

当我们关闭server3的docker,我们查看监控

docker swarm集群部署

docker swarm集群部署

我们可以发现当server3停掉后,它上面的服务跑到了server2上

值的一提的是:即使server3的docker服务重新启动,web也不会从server2重新移回到server3。除非执行增加服务或减少服务的操作,使Docker swarm集群重新分配节点的数目

当增加服务的数目时,Docker swarm集群会自动分配每个节点的web数目,并展示到监控界面

[root@server3 ~]# systemctl start docker

[root@server1 ~]# docker service scale web=12

docker swarm集群部署

六、滚动更新(灰度更新)

  1. 导入要更新的镜像

(这里以httpd镜像为例。值的注意的是:滚动更新用的镜像和之前的镜像必须是平行的,即结构类似,比如端口等等——因为上篇博文中创建web服务时用到了80端口,所以滚动更新使用的镜像中也必须是80端口)

[root@server1~]# docker load -i httpd.tar

[root@server2~]# docker load -i httpd.tar

[root@server3~]# docker load -i httpd.tar

2.增加web服务数

[root@server1 ~]# docker service scale web=30

docker swarm集群部署

这里是没有更新的,拉神的30个服务全是nginx的

3.更新,并且设定每5秒更新一次,每次更新五个

[root@server1 ~]# docker service update --image httpd --update-delay 5s --update-parallelism 5 web

docker swarm集群部署

docker swarm集群部署

本文地址:http://dxf6.com/post/139.html
版权声明:本文为原创文章,版权归 社长 所有,欢迎分享本文,转载请保留出处!
重庆专业seo
数据湾

发表评论


表情

还没有留言,还不快点抢沙发?