Swarm 集群办理
简介
Docker Swarm 是 Docker 的集群办理东西。它将 Docker 主机池改变为单个假造 Docker 主机。 Docker Swarm 供给了规范的 Docker API,一切任何已与 Docker 保护法式通讯的东西都能够利用 Swarm 轻松地扩大到多个主机。
撑持的东西包含但不限于以下各项:
- Dokku
- Docker Compose
- Docker Machine
- Jenkins
道理
以下图所示,swarm 集群由办理节点(manager)和使命节点(work node)组成。
- swarm mananger:担任全部集群的办理使命包含集群设置装备摆设、办事办理等一切跟集群有关的使命。
- work node:即图中的 available node,首要担任运转响应的办事来履行使命(task)。
利用
以下示例,均以 Docker Machine 和 virtualbox 遏制先容,确保你的主机已装置 virtualbox。
1、建立 swarm 集群办理节点(manager)
建立 docker 机械:
$ docker-machine create -d virtualbox swarm-manager
初始化 swarm 集群,遏制初始化的这台机械,便是集群的办理节点。
$ docker-machine ssh swarm-manager $ docker swarm init --advertise-addr 192.168.99.107 #这里的 IP 为建立机械时候配的 ip。
以上输入,证实已初始化胜利。须要把以下这行复制出来,在增添使命节点时会用到:
docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh3j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377
2、建立 swarm 集群使命节点(worker)
这里间接建立好俩台机械,swarm-worker1 和 swarm-worker2 。
别离进入两个机械里,指定增加至上一步中建立的集群,这里会用到上一步复制的内容。
以上数据输入申明已增加胜利。
上图中,因为上一步复制的内容比拟长,会被主动截断,现实上在图运转的号令以下:
docker@swarm-worker1:~$ docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh3j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377
3、检查集群信息
进入办理节点,履行:docker info 能够检查以后集群的信息。
$ docker info
经由过程画红圈的处所,能够晓得以后运转的集群中,有三个节点,此中有一个是办理节点。
4、安排办事到集群中
注重:跟集群办理有关的任何操纵,都是在办理节点上操纵的。
以下例子,在一个使命节点上建立一个名为 helloworld 的办事,这里是随机指派给一个使命节点:
docker@swarm-manager:~$ docker service create --replicas 1 --name helloworld alpine ping docker.com
5、检查办事安排环境
检查 helloworld 办事运转在哪一个节点上,能够看到今朝是在 swarm-worker1 节点:
docker@swarm-manager:~$ docker service ps helloworld
检查 helloworld 安排的详细信息:
docker@swarm-manager:~$ docker service inspect --pretty helloworld
6、扩大集群办事
咱们将上述的 helloworld 办事扩大到俩个节点。
docker@swarm-manager:~$ docker service scale helloworld=2
能够看到已从一个节点,扩大到两个节点。
7、删除办事
docker@swarm-manager:~$ docker service rm helloworld
检查是不是已删除:
8、转动进级办事
以下实例,咱们将先容 redis 版本若何转动进级至更高版本。
建立一个 3.0.6 版本的 redis。
docker@swarm-manager:~$ docker service create --replicas 1 --name redis --update-delay 10s redis:3.0.6
转动进级 redis 。
docker@swarm-manager:~$ docker service update --image redis:3.0.7 redis
看图能够晓得 redis 的版本已从 3.0.6 进级到了 3.0.7,申明办事已进级胜利。
9、遏制某个节点领受新的使命
检查一切的节点:
docker@swarm-manager:~$ docker node ls
能够看到今朝一切的节点都是 Active, 能够领受新的使命分派。
遏制节点 swarm-worker1:
注重:swarm-worker1 状况变为 Drain。不会影响到集群的办事,只是 swarm-worker1 节点不再领受新的使命,集群的负载才能有所降落。
能够经由过程以下号令从头激活节点:
docker@swarm-manager:~$ docker node update --availability active swarm-worker1