Swarm 是 Docker 官方提供的一款集群管理工具,其主要作用是把若干台 Docker 主机抽象为一个整体,并且通过一个入口统一管理这些 Docker 主机上的各种 Docker 资源。 Swarm 和 Kubernetes 比较类似,但是更加轻,具有的功能也较 kubernetes 更少一些。
Swarm 横向扩容准备服务器:
swarm1(master):192.168.75.191
swarm2(node1):192.168.75.192
swarm3(node2):192.168.75.193
注:docker 1.12 版本后都自带 swarm 命令,无需安装
一、启动集群
在 swarm1 上启动集群,即 swarm1 为 master 节点:
[root@swarm1 ~]# docker swarm init --listen-addr 192.168.75.191:1234
# --listen-addr 集群暴漏给外界调用的 HTTPAPI 的 socket 地址, IP 为本机 ip ,端口可自定义
上述命令运行成功会生成如下信息,此命令用于节点(被管理主机)加入集群
docker swarm join \
--token SWMTKN-1-6ampzvvbv1ul5y9omr3lvcrodetcdc3ukr9tn7158fcebc7olo-dx61lgmjyi0wwvx8pluizyucy \
192.168.75.191:1234
在 swarm1 上查看各节点信息:
[root@swarm1 ~]# docker node ls #目前只有本机(管理主机 swarm1 )加入集群
二、分别将 swarm2 & swarm3 节点(被管理节点)加入集群
swarm1 (管理主机)再次查看节点信息,如下所示则集群添加成功
Swarm 集群以搭建完毕接下来进行横向扩容/收缩
三、测试:拉取tomcat镜像,横向扩容
1、创建实例
[swarm1 ~]# docker service create --replicas 1 --name tomcattest tomcat:latest
# --replicas 始终运行实例数目
# --name 运行服务名称,非容器名称
[root@swarm1 ~]# docker service ps tomcattest #查看实例运行状态
2、横向扩容/收缩
[root@swarm1 ~]# docker service scale tomcattest=3
#tomcattest服务增加为3个实例
#实例自动在3台节点上分配,保证运行数量为3个实例,并且当某节点出现异常状态导致该节点上的服务宕机,
将会在其余节点自动运行实例。始终保持实例数量为需求数量。
3、停止 swarm3 节点,查看实例状态
[root@swarm3 ~]# systemctl stop docker
在 swarm1 上查看服务运行状态:
[root@swarm1 ~]# docker service ps tomcattest
#swarm3节点服务自动转移至swarm1服务器上,实例数仍为3.
swarm3 上 tomcat 实例为宕机状态,且在 swarm1 上新生成实例,使 tomcat 实例总数仍为3
至此 Swarm 集群搭建以及简单都横向扩容及收缩都已经完成了。
后话:
Swarm 虽为 Docker 官方提供的管理工具,但因 swarm 本身功能的不完善性,以及与其他插件的耦合度较低,所以现在基本都不建议使用 swarm 作为管理工具,现在较为流行的管理工具为 k8s ,这里就不多说了,大家有兴趣就自行百度查看吧,另 Rancher 是目前比较新兴的管理工具,使用 Rancher 可以来管理 k8s 集群。。。