[关闭]
@xiaoxiaowang 2019-01-21T08:06:24.000000Z 字数 2795 阅读 735

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

Docker 集群 服务


初始化集群

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

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

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

在主节点(manager)上执行

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

结果

  1. Swarm initialized: current node (oqela4wtpa9m7e8a6zi9k9rbl) is now a manager.
  2. To add a worker to this swarm, run the following command:
  3. docker swarm join --token SWMTKN-1-03md8tqw24sd0tbxkyqxmiay5nixniax9c301f49qjorhsj069-44eeph3lldj3lopzk7tiiv1ve 192.168.1.8:2377
  4. To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

然后在其他子节点执行

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

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

  1. This node joined a swarm as a worker.

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

  1. docker node ls

就能看到所有的节点信息

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

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

部署

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

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

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

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

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

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

理解下。

通过执行docker service ps hellos 来查看每个节点的服务数和运行情况,如下
WX20190120-232126@2x.png
我们可以看到刚刚的update就是把之前服务杀掉,然后重亲启动,两个节点均有部署而且运行着该服务,我们可以随便使用docker stop [container id]来杀死一个服务,但是swarm会自动启动一个。

测试

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

  1. docker service logs -f hellos

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

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

停止服务

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

  1. docker service rm hellos
  2. docker service scale hellos=0

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

暂时的完结

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

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

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

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注