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

相关推荐
小猪咪piggy13 小时前
【微服务】(4) 负载均衡
微服务·云原生·架构
计算机小手15 小时前
使用 llama.cpp 在本地高效运行大语言模型,支持 Docker 一键启动,兼容CPU与GPU
人工智能·经验分享·docker·语言模型·开源软件
岚天start15 小时前
KubeSphere在线安装单节点K8S集群
docker·容器·kubernetes·k8s·kubesphere·kubekey
xyhshen15 小时前
记录一次K8S跨命名空间访问 xxx.xxx.svc.cluster.local 类似内部服务不通的问题
云原生·容器·kubernetes
栗子~~15 小时前
shell-基于k8s/docker管理容器、监控模型训练所消耗的最大CPU与最大内存脚本
docker·容器·kubernetes
海鸥8115 小时前
在k8s中部署seaweedfs,上传文件到seaweedfs方法
云原生·容器·kubernetes
半梦半醒*15 小时前
k8s——pod详解2
linux·运维·docker·容器·kubernetes·负载均衡
AAA小肥杨16 小时前
K8s从Docker到Containerd的迁移全流程实践
docker·容器·kubernetes
DARLING Zero two♡16 小时前
云原生基石的试金石:基于 openEuler 部署 Docker 与 Nginx 的全景实录
nginx·docker·云原生
阿里云云原生16 小时前
云效「AI 智能评审」,先锋体验官招募活动正式启动,赢取极客专属好礼!
云原生