Docker Swarm 横向扩容/收缩简单使用

  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 命令,无需安装

Docker Swarm 横向扩容/收缩简单使用

 

 

 一、启动集群

在 swarm1 上启动集群,即 swarm1 为 master 节点:

[root@swarm1 ~]# docker swarm init --listen-addr 192.168.75.191:1234

Docker Swarm 横向扩容/收缩简单使用

 

 

 #  --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 )加入集群

Docker Swarm 横向扩容/收缩简单使用

 

 

 二、分别将 swarm2 & swarm3 节点(被管理节点)加入集群

Docker Swarm 横向扩容/收缩简单使用

 

 

 swarm1 (管理主机)再次查看节点信息,如下所示则集群添加成功

Docker Swarm 横向扩容/收缩简单使用

 

 

Swarm 集群以搭建完毕接下来进行横向扩容/收缩

 三、测试:拉取tomcat镜像,横向扩容

  1、创建实例

  [swarm1 ~]# docker service create --replicas 1 --name tomcattest tomcat:latest

  # --replicas 始终运行实例数目

  # --name 运行服务名称,非容器名称

  [root@swarm1 ~]# docker service ps tomcattest #查看实例运行状态

  Docker Swarm 横向扩容/收缩简单使用

 

 

   2、横向扩容/收缩

   [root@swarm1 ~]# docker service scale tomcattest=3

  #tomcattest服务增加为3个实例

  Docker Swarm 横向扩容/收缩简单使用

 

 

  #实例自动在3台节点上分配,保证运行数量为3个实例,并且当某节点出现异常状态导致该节点上的服务宕机,

  将会在其余节点自动运行实例。始终保持实例数量为需求数量。 

  3、停止 swarm3 节点,查看实例状态

  [root@swarm3 ~]# systemctl stop docker

  Docker Swarm 横向扩容/收缩简单使用

 

 

   在 swarm1 上查看服务运行状态:

  [root@swarm1 ~]# docker service ps tomcattest

  Docker Swarm 横向扩容/收缩简单使用

 

 

   #swarm3节点服务自动转移至swarm1服务器上,实例数仍为3.

  swarm3 上 tomcat 实例为宕机状态,且在 swarm1 上新生成实例,使 tomcat 实例总数仍为3

 

至此 Swarm 集群搭建以及简单都横向扩容及收缩都已经完成了。

后话:

  Swarm 虽为 Docker 官方提供的管理工具,但因 swarm 本身功能的不完善性,以及与其他插件的耦合度较低,所以现在基本都不建议使用 swarm 作为管理工具,现在较为流行的管理工具为 k8s ,这里就不多说了,大家有兴趣就自行百度查看吧,另 Rancher 是目前比较新兴的管理工具,使用 Rancher 可以来管理 k8s 集群。。。

 

 

上一篇:prometheus监控swarm mode集群实战


下一篇:Swarm-BZZ踩坑日记之 如何在METMASK小狐狸导入节点地址