docker三剑客之docker-swarm
Comment扯淡
集群模式是指在DOCKER引擎中嵌入的集群管理和编排特征。当你初始化一个新的集群或加入一个集群的节点时,DOCKER引擎以集群模式运行。
为什么需要集群?为了解决单机瓶颈,从一到多,部署多份,从而构成“集群”。
从单机到集群,代码基本无需修改,仅仅是服务器的扩容,简单直接的提升了服务器的处理能力。
参考文档:https://docs.docker.com/engine/swarm/swarm-tutorial/create-swarm
集群搭建
我们使用docker-machine来创建几个主机,用来演示swarm集群的创建。
1,先创建3台主机,我这里的命名是:h1 / h2 / h3,用其中的一台主机作为Leader,初始化swarm集群,并管理节点。
1 | docker-machine create -d xhyve --xhyve-boot2docker-url ~/.docker/machine/cache/boot2docker.iso --engine-registry-mirror https://registry.docker-cn.com h1 |
查看创建好的3台主机:
1 | docker-machine ls |
输出:
1 | _NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS_ |
2,登录h1主机,初始化swarm集群
1 | docker-machine ssh h1 |
输出:
1 | _Swarm initialized: |
3,分别登录h2和h3,执行上面输出的join命令的添加到swarm集群
1 | docker swarm join --token SWMTKN-1-2lk16l2cjvporghr3g1kg6orjrotq682axu2yc0kjm5aepvois-br6bpyng0bvqg2jqcn4ud3cvs 192.168.64.5:2377 |
输出:
1 | _This node joined a swarm as a worker. |
后续,如果需要查看添加节点的token和命令,可以使用如下命令:
1 | docker swarm join-token worker |
4,重新登录h1,查看集群节点情况,Leader表示主节点
1 | docker-machine ssh h1 |
输出:
1 | _ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION_ |
5,移除集群节点
a,在需要退出的节点上操作下面命令down掉节点,如需强制退出,可添加参数“-f”,如:
1 | docker swarm leave -f |
b,到主节点上“docker node ls”列出所有节点,根据id使用命令“docker node rm
1 | docker node rm <ID> |
服务部署与扩容
如何将我们的容器部署到swarm集群?下面我们使用nginx来演示。
1,登录主机,执行下面的命令部署nginx服务
1 | docker service create --replicas 3 -p 80:80 --name nginx nginx:1.15-alpine |
2,查看服务部署情况,可以使用下面两个命令
1 | docker service ls |
输出:
1 | _ID NAME MODE REPLICAS IMAGE PORTS_ |
现在,我们已经可以在浏览器输入任意一个节点的地址,访问部署到nginx服务了,如访问:“http://192.168.64.5”
3,服务扩容,我们通过scale命令可以针对集群的服务进行扩容和缩减,控制的数量为当前集群的指定服务数量,一切都变的那么自然,可控。
1 | docker service scale nginx=3 |
集群监控平台
监控是必须的,这使得 我们可以更直接的观察和管理 集群中的节点和服务,这里我们选用的是Docker Swarm Visualizer,简单直观。
登录管理节点,执行下面的命令添加监控:
1 | docker service create \\ |
监控部署后,我们就可以通过浏览器访问地址查看:http://192.168.64.7:8080/
监控效果:
常用命令
docker swarm
1 | docker swarm init #初始化集群 |
docker node
1 | docker node ls #查看所有集群节点 |
docker service
1 | docker service create #部署服务 |
- 本文作者:沙果栗子本文链接:https://32e.co/2018/09/17/docker-docker-swarm/版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!