微服务实战系列之玩转Docker(十二)

前言

山一程,水一程,身向榆关那畔行,夜深千帐灯。------清·纳兰性德

最近偶读纳兰的《长相思》经典之作,被这个"行军"场面震撼了。长长的队伍,跋山涉水,野宿一处。夜深人静的时候,突然激发了纳兰的"思乡"之情,他的留恋和伤感从此被永远定格。可见,如想看懂一个人,可以从他的文章入手,慢慢研读,细细品味。

闲言少叙,言归正传。通过本系列第十篇和第十一篇的分享,Docker Swarm的面纱已经被博主揭开一多半了,但是还差一截不是么?接下来,博主继续分享Swarm集群的实践,教你掌握多Manager节点的集群部署,以真正实现高可用

Q:如何管理Swarm cluster(进阶)

通过前序文章,我们可以轻松的Build一套单一manager的swarm集群。但是缺陷很明显,不足以满足高可用的目标。所以本博的目的是部署一套多manager的swarm集群

1. 资源准备

根据RAFT协议,我们设置manager节点3个,worker节点3个。

序号 节点名称 节点类型
1 docker-manager1(10.11.12.70) manager
2 docker-manager2(10.11.12.64) manager
3 docker-manager3(10.11.12.66) manager
4 docker-worker1(10.11.12.73) worker
5 docker-worker2(10.11.12.74) worker
6 docker-worker3(10.11.12.65) worker

参考下图部署架构,博主计划部署一个多manager节点 的swarm集群:

2. 部署要求

根据资源清单,提供了3个manager和3个worker,我们可以这样完成集群定义:

提示:在同一个swarm集群中,每个worker node只从属于一个manager node。

3. 创建集群

3.1 Manager组群

首先我们把3个manager拉入一个群中,可按如下步骤完成。

3.1.1 新建Leader

俗话说,"火车跑得快,全凭车头带"。同理,Swarm集群 也需要一个带头"大哥",我们让docker-manager1 节点当大哥吧。依然通过docker swarm init来完成:

powershell 复制代码
docker swarm init --advertise-addr 10.11.12.70

结果为:

通过上图,我们新建了一个swarm集群并指定Leader,该集群支持以managerworker身份加入。这里我们选择manager,即:add a manager to this swarm.

3.1.2 组建Manager group

选择以manager身份加入swarm集群,需要按如下步骤完成。
Step1

获取入群的token,通过docker swarm join-token manager执行:

此时,你获得了一个加入群的口令,即docker swarm join...
Step2

docker-manager2docker-manager3节点中,分别执行返回的口令完成入群:

powershell 复制代码
docker swarm join --token SWMTKN-1-3lpswen1fo9ju11j5xd6tledniqj5veqbtgypm1j9wh2xp0aot-91oghmtrip7g1hyzrxcoj6t3o 10.11.12.70:2377

那么结果为:

最后在docker-manager1leader)节点,我们可以看到manager group建立起来了:

提示:docker swarm join-token命令只能在manager节点中运行.

3.2 Manager与Worker组群

完成了3.1系列操作,我们接着为每个manager指定worker。博主以docker-manager1为例,其他manager皆重复一遍。

在docker-manager1节点中,执行docker swarm join-token worker

返回一个docker swarm join ...,该命令支持以worker身份加入集群,并指定manager节点。那么我们可以直接copy后,在docker-worker1 节点执行:

此时,集群包含了3个manager node和1个worker node:

同样,根据部署要求,docker-manager2docker-manager3均指定相应的worker后,我们可以看到最终的集群如下:

提示:有些同学有疑问,为什么docker-worker2的状态有Ready和Down?这是因为worker2节点中途退出了集群,然后又加入了集群。

4. 情景演练

很简单,比如可以按如下几种展开:

  • docker-manager1节点down了,观察集群的变化
  • docker-worker1节点down了,观察集群的变化
  • 3个manager节点均down了,观察集群的变化
  • ...

结语

通过本文,博主对多manager多worker集群进行了完整的演示,相信各位对Swarm集群有了更多的认识。当然swarm还有其他更高阶的用法,期待未来有更多分享!


系列回顾


微服务实战系列之玩转Docker(十一)
微服务实战系列之玩转Docker(十)
微服务实战系列之玩转Docker(九)
微服务实战系列之玩转Docker(八)
微服务实战系列之玩转Docker(七)
微服务实战系列之玩转Docker(六)
微服务实战系列之玩转Docker(五)
微服务实战系列之玩转Docker(四)
微服务实战系列之玩转Docker(三)
微服务实战系列之玩转Docker(二)
微服务实战系列之玩转Docker(一)
微服务实战系列之云原生

相关推荐
谷莠子9051 小时前
hadoop实验之创业有感
hadoop·docker·团队开发
G丶AEOM1 小时前
Docker快速入门
docker
大熊程序猿2 小时前
airflow docker 安装
运维·docker·容器
会飞的土拨鼠呀2 小时前
chart文件结构
运维·云原生·kubernetes
带电的小王3 小时前
Docker在Ubuntu上安装
ubuntu·docker
fanruitian3 小时前
docker 为单个容器设置代理
运维·docker·容器
梁萌3 小时前
Docker快速安装Tomcat
docker·容器·tomcat·镜像
Doker 多克5 小时前
IntelliJ IDEA Docker集成
spring cloud·docker·intellij-idea
Hello Dam5 小时前
面向微服务的Spring Cloud Gateway的集成解决方案:用户登录认证与访问控制
spring cloud·微服务·云原生·架构·gateway·登录验证·单点登录
power-辰南7 小时前
Zookeeper 底层原理解析
分布式·zookeeper·云原生