微服务实战系列之玩转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(一)
微服务实战系列之云原生

相关推荐
.生产的驴2 分钟前
Docker 消息队列RabbitMQ 安装延迟消息插件
运维·spring boot·后端·docker·容器·rabbitmq·java-rabbitmq
Lill_bin31 分钟前
ElasticSearch底层原理解析
大数据·分布式·elasticsearch·搜索引擎·zookeeper·云原生·jenkins
爱吃香蕉的阿豪1 小时前
828华为云征文|Flexus X实例Docker+Jenkins+gitee实现CI/CD自动化部署-解放你的双手~
ci/cd·docker·gitee·华为云·jenkins
阿里云云原生10 小时前
Serverless 安全新杀器:云安全中心护航容器安全
安全·云原生·serverless
你是我的天晴10 小时前
Istio下载及安装
云原生·istio
你是我的天晴10 小时前
Istio:微服务网格的强大工具,Istio介绍
微服务·云原生·istio
Lill_bin11 小时前
Ribbon简介
分布式·后端·spring cloud·微服务·云原生·ribbon
Aileen_0v011 小时前
【Java宝典】——探索数组的奥秘之旅
java·运维·开发语言·windows·后端·docker·golang
吴半杯13 小时前
Docker安装SVN,搭建自己的本地版本仓库
docker·svn·容器
编程经验分享15 小时前
Windows 安装 ZooKeeper 以及 IDEA 安装 zoolytic 连接工具
分布式·zookeeper·云原生