教你一步一步在centos7.2安装部署 Docker Swarm集群

前言

Swarm 在 Docker 1.12 版本之前属于一个独立的项目,在 Docker 1.12 版本发布之后,该项目合并到了 Docker 中,成为 Docker 的一个子命令,docker swarm是创建服务器集群的工具,只需要几条命令就可以创建一个服务器集群。它内置一些服务器集群需要的工具,比如说:服务查找,网络,负载均衡等等


一、环境

1)服务器环境

操作系统:centos 7.2

docker版本: Docker version 1.12.6

2)IP规划

教你一步一步在centos7.2安装部署 Docker Swarm集群

3)前提条件

  • Docker版本1.12+
  • 集群节点之间保证TCP 2377、TCP/UDP 7946和UDP 4789端口通信

TCP端口2377集群管理端口

TCP与UDP端口7946节点之间通讯端口

TCP与UDP端口4789 overlay网络通讯端口


二、集群

2.1、在192.168.6.130中,初始化集群

[root@hwb hwb]# docker swarm init --advertise-addr 192.168.6.130:2377
Swarm initialized: current node (4devzwb6rpimfpteqr17h2jx9) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-5r3ujri3th4038jp7q66zrfo56eqo0sabyage8ahc10121evog-ah9bptj9d7txdu6y91w7qxd81 \
192.168.6.130:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

说明:--advertise-addr 设置监听Ip和端口号

2.2、初始化完、查看集群上的节点列表

[root@hwb hwb]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
4devzwb6rpimfpteqr17h2jx9 * hwb.localdomain Ready Active Leader

说明:目前只有一个节点,状态为Ready,是个Leader

2.3、192.168.6.131,加入集群

首先,切换到192.168.6.131,然后输入

[root@hwb hwb]# docker swarm join \> --token SWMTKN-1-5r3ujri3th4038jp7q66zrfo56eqo0sabyage8ahc10121evog-ah9bptj9d7txdu6y91w7qxd81 \> 192.168.6.130:2377
This node joined a swarm as a worker.
[root@hwb hwb]#

2.4、192.168.6.132,加入集群

首先,切换到192.168.6.132,然后输入

[root@hwb hwb]# docker swarm join \> --token SWMTKN-1-5r3ujri3th4038jp7q66zrfo56eqo0sabyage8ahc10121evog-ah9bptj9d7txdu6y91w7qxd81 \> 192.168.6.130:2377
This node joined a swarm as a worker.
[root@hwb hwb]#

2.5、接着回到192.168.6.130中,查看集群中节点信息

[root@hwb hwb]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
4devzwb6rpimfpteqr17h2jx9 * hwb.localdomain Ready Active Leader
5mjtda2uzzu43v2xuxdco5ogr hwb.localdomain Ready Active
a8wdtux82dolsbgmv6ff0uu94 hwb.localdomain Ready Active

说明:

AVAILABILITY列:

显示调度程序是否可以将任务分配给节点:

· Active 意味着调度程序可以将任务分配给节点。

· Pause 意味着调度程序不会将新任务分配给节点,但现有任务仍在运行。

· Drain 意味着调度程序不会向节点分配新任务。调度程序关闭所有现有任务并在可用节点上调度它们。

MANAGER STATUS列

显示节点是属于manager或者worker

2.6、创建集群网络overlay

[root@hwb hwb]# docker network create --driver overlay skynet
843z9qb9c6douf7ir7l3iimqn
[root@hwb hwb]# docker network ls
NETWORK ID NAME DRIVER SCOPE
ad5125729239 bridge bridge local
5a15f008fb38 host host local
6echvokyh2m3 ingress overlay swarm
28068704e605 none null local
843z9qb9c6do skynet overlay swarm

可以看到新创建的网络名称为skynet,类型为overlay


三、部署测试

3.1、在管理节点中执行

docker service create -p 80:80 --name webserver --replicas 5 httpd

3.2、查看集群中的服务

[root@node1 hwb]# docker service ls
ID NAME REPLICAS IMAGE COMMAND
0blhke4vywh8 viz 0/1 manomarks/visualizer
7batkp4zv9f3 portainer 1/1 portainer/portainer -H unix:///var/run/docker.sock
7kw3ovihgqgb webserver 5/5 httpd

3.3、查看集群中的webserver服务

教你一步一步在centos7.2安装部署 Docker Swarm集群

3.4、访问http://192.168.6.130、http://192.168.6.131或http://192.168.6.132

教你一步一步在centos7.2安装部署 Docker Swarm集群

说明:192.168.6.131和192.168.6.132没有部署httpd也能狗访问,swarm搭建docker集群测试成功


四、swarm集群其他操作

4.1、更新节点的可见性状态

教你一步一步在centos7.2安装部署 Docker Swarm集群

4.2、升级或降级节点

您可以将工作程序节点提升为manager角色。这在管理器节点不可用或者您希望使管理器脱机以进行维护时很有用。 类似地,您可以将管理器节点降级为worker角色。

无论您升级或降级节点,您应该始终在群中维护奇数个管理器节点。

· 升级节点

[root@node1 hwb]# docker node promote node3.hwb.com node2.hwb.com
[root@node1 hwb]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
4devzwb6rpimfpteqr17h2jx9 * node1.hwb.com Ready Active Leader
5mjtda2uzzu43v2xuxdco5ogr node3.hwb.com Ready Active Unreachable
a8wdtux82dolsbgmv6ff0uu94 node2.hwb.com Ready Active Reachable

· 降级节点

[root@node1 hwb]# docker node demote node3.hwb.com node2.hwb.com
Manager node3.hwb.com demoted in the swarm.
Manager node2.hwb.com demoted in the swarm.
[root@node1 hwb]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
4devzwb6rpimfpteqr17h2jx9 * node1.hwb.com Ready Active Leader
5mjtda2uzzu43v2xuxdco5ogr node3.hwb.com Ready Active
a8wdtux82dolsbgmv6ff0uu94 node2.hwb.com Ready Active

4.3、退出docker swarm集群

在对应的worker节点执行如下命令

[root@node1 hwb]# docker swarm leave

如果想把manager节点上已经退出集群的节点信息删除,如下:

[root@node1 hwb]# docker node rm node2.hwb.com


篇幅有限,关于Docker Swarm集群部署就简单介绍到这了,太长估计没人看了...(docker网络的明天再继续分享下..)

有疑问的朋友可以在下方留言哦,或者有什么想要看的也可以在下方留言。

后期会偏向于DBA和devops内容分享,感兴趣的朋友可以关注下!


分享到:


相關文章: