使用Docker Swarm快速搭建与部署你的服务集群

3167229-31270a8c78e4d096.png
docker-swarm

初始化集群

准备了对应的机器(两个虚拟机),基本信息如下

IP 主机名 备注
192.168.1.8 ubuntu-1
192.168.1.5 ubuntu-1

注意:最好保持每个节点的docker版本号为最新且是相同的

在主节点(manager)上执行

root@ubuntu:/home/wangxc# docker swarm init --advertise-addr  192.168.1.8

结果

Swarm initialized: current node (oqela4wtpa9m7e8a6zi9k9rbl) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-03md8tqw24sd0tbxkyqxmiay5nixniax9c301f49qjorhsj069-44eeph3lldj3lopzk7tiiv1ve 192.168.1.8:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

然后在其他子节点执行

docker swarm join --token SWMTKN-1-03md8tqw24sd0tbxkyqxmiay5nixniax9c301f49qjorhsj069-44eeph3lldj3lopzk7tiiv1ve 192.168.1.8:2377

注意端口号是否开放,可以把防火墙全部关掉,正常的结果如下

This node joined a swarm as a worker.

说明两个节点已经建立关系,而且manager为192.168.1.8,我们在主节点输入命令

docker node ls

就能看到所有的节点信息

ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
x2n8p4qly9xkhpul49b96bx60 *   ubuntu-1            Ready               Active              Leader              18.06.1-ce
b0p8o0vee21pf9nijcvoy0g72     ubuntu-2            Ready               Active                                  18.06.1-ce

带星号的额就是主节点了,很方便看。

部署

我事先准备了一个镜像,一个简单的python flask 服务,在指定镜像的时候,最好把repo的地址写上,因为每个节点不一定有该镜像,需要到指定的repo去pull,如果不指定repo的话,有时可能会失败

docker service create --replicas 5 --name hellos vector4wang/python-flask

很好理解docker service create 等价于 docker run,replicas就是部署几个服务,等待部署成功,如下

uo3u4w6zxglgxjo1i7njxaqru
overall progress: 5 out of 5 tasks 
1/5: running   [==================================================>] 
2/5: running   [==================================================>] 
3/5: running   [==================================================>] 
4/5: running   [==================================================>] 
5/5: running   [==================================================>] 
verify: Service converged 

忘记做端口映射,我们做一下调整

docker service update --publish-add published=5000,target=5000 hellos

理解下。

通过执行docker service ps hellos 来查看每个节点的服务数和运行情况,如下


我们可以看到刚刚的update就是把之前服务杀掉,然后重亲启动,两个节点均有部署而且运行着该服务,我们可以随便使用 docker stop [container id]来杀死一个服务,但是swarm会自动启动一个。

测试

我们通过查看日志来测试请求是否会落在这五个节点上,我们请求主节点对应ip服务5次

docker service logs -f hellos

结果很巧,正好落在五个节点上如下

hellos.3.jvtq4su8blia@ubuntu-1    | 10.255.0.2 - - [20/Jan/2019 15:27:15] "GET / HTTP/1.1" 200 -
hellos.5.atflo3ownjb7@ubuntu-2    | 10.255.0.2 - - [20/Jan/2019 15:27:16] "GET / HTTP/1.1" 200 -
hellos.4.vyn5bpypjvm7@ubuntu-2    | 10.255.0.2 - - [20/Jan/2019 15:27:18] "GET / HTTP/1.1" 200 -
hellos.1.m67symamsj02@ubuntu-2    | 10.255.0.2 - - [20/Jan/2019 15:27:19] "GET / HTTP/1.1" 200 -
hellos.2.srhlzn6trgri@ubuntu-1    | 10.255.0.2 - - [20/Jan/2019 15:27:19] "GET / HTTP/1.1" 200 -

停止服务

我们在主机点使用下面命令和停止对应服务

docker service rm hellos
或
docker service scale hellos=0

通过swarm我们可以再多个节点很容易的去部署和简单管理服务。

暂时的完结

最近也是公司准备用容器化来部署服务,所以我就把Docker以前没有玩到的地方玩了下,到此,Docker的介绍、使用、编排、集群化部署等就介绍完了,如果后期应用于工作上,可能会有更深入的见解与博文。希望大家持续关注哈~

学习Docker之Docker初体验---SpringBoot集成Docker的部署、发布与应用
学习Docker之Docker、容器和镜像的简介和常用命令
学习Docker之10张图带你深入理解Docker容器和镜像
学习Docker之Dockerfile的命令
学习Docker之使用docker-compose编配一整套服务
学习Docker之使用Docker构建服务之部署和备份jekyll网站
学习Docker之使用Docker Swarm快速搭建与部署你的服务集群

其他
使用Docker“一键”启动jd(职位信息)的搜索(es)与统计(Kibana)

猜你喜欢

转载自blog.csdn.net/weixin_33775572/article/details/86848680
今日推荐