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

前言

在云原生的世界,经过十多年的进化,Docker已经形成了较完备的“后勤”保障服务和建立了荣辱与共的“密友圈”。用一句话可以概括:“Docker走遍天下,Swarm功不可没”

因此,我们需尽可能做到对Swarm有充分的认识,才能笑傲运维,笑傲云原生。今天博主带着各位继续深挖Swarm,熟练掌握它的核心能力。

在这里插入图片描述

Q:如何管理Swarm cluster

在这里插入图片描述

上图是一个基于Swarm的docker集群部署/运行架构图,在此图中你可以获得这样一个生产链条(基于Docker engine):

序号操作目的
1docker compose基于Compose完成基础的容器编排并生成镜像。
2docker swarm init通过Docker engine创建Swarm集群。
3docker service通过Swarm向集群发布服务,一键启动多容器的集群。

一句话总结:通过Swarm + Compose的组合,你完全可以掌握docker的集群化管理之钥。那么,针对Swarm而言,它是怎么实现分布式容器部署并如何掌握它的动态管理机制呢?

1. Raft算法

这里,首先不得不提Raft算法了,在多数支持分布式的工具里,你都可以看到它的身影。

Raft是一种更为简单方便易于理解的分布式算法,主要解决了分布式中的一致性问题。相比传统的Paxos算法,Raft将大量的计算问题分解成为了一些简单的相对独立的子问题。——百度百科

博主不对算法本身做太多解释(如感兴趣,可查阅相关资料),我们只需知道这个算法是实现分布式选举的重要支撑。比如节点down了怎么办?

2. 心跳机制

master-slave模式中,通常存在心跳检测机制。在manager节点中,我们通过docker info命令,可得知Swarm的心跳(默认5s):
在这里插入图片描述
一旦manager出现down,会立即开始选举,创建新的leader;或者worker节点down,任务也会在其他worker进行自动迁移。

3. 动态扩容和缩容

Swarm支持动态扩容和缩容,什么意思?比如当前集群有2个worker,你可以随时邀请新的worker加入,也可以对已有的worker说:“go away”。只需要选择执行以下2个:

序号操作目的
1docker swarm join – token xxx [MANAGER_HOST_IP]:2377加入swarm集群
2docker node update --availability drain [NODE_NAME]剔除swarm集群中的成员
3docker service scale [SERVICE_NAME]=扩展后的副本数量动态分配任务

那么,如何验证它的扩容或缩容“如你所愿”
简单,我们可做如下实验。前提是根据上篇文章(快捷方式)中的步骤,新建一个cluster(其中包含1个manager,2个woker)。

3.1 发布一个3副本的Service
3.1.1 查看当前cluster nodes

在manager节点中,通过docker node ls,得知当前实验集群中,有1个manager2个worker,且看下图:
在这里插入图片描述

3.1.2 发布service

接下来,你可以通过如下命令,发布一个3副本的service(以nginx镜像为例):

# --replicas指定副本个数,--network指定运行网络,--name指定容器名,-p指定映射端口
docker service create --replicas 3 --network service-nginx --name my_nginx -p 8888:80 nginx

发布完成后,可通过docker service ps my_nginx命令,查看服务的运行节点:
在这里插入图片描述
至此,你成功完成了Swarm集群的创建并发布了一个service(my_nginx),且每个节点(含manager)均运行了1个副本,接下来我们就可以进行情景推演了。

3.2 删除 worker node
3.2.1 剔除worker1

我们先来一个剔除worker的操作吧。在manager节点中,可以通过docker node update命令,改变worker1的状态为drain

提示drain节点代表不再受manager节点的支配,游离于集群之外。

docker node update --availability drain docker-worker1

执行后,结果为:
在这里插入图片描述

3.2.2 查看service运行节点

此刻,你可以通过docker service ps my_nginx命令观察到如下结果:
在这里插入图片描述
因为worker1节点罢工,所以woker2节点自动完成副本叠加,保障集群仍然是3副本运行状态。当然,你也可以通过登录worker1worker2节点,查看(输入docker ps)各自认领的Task
在这里插入图片描述
在这里插入图片描述

3.3 新增 worker node

上一节演示了worker down的情景,这一节我们再看看扩容后会发生什么。这里的扩容其实有2种实现方式:一种是通过docker swarm join实现,另一种就是通过docker node update实现。这里只呈现第2种方式。

3.3.1 恢复worker1

首先通过docker 把worker1恢复为active(待命状态)。

提示active节点代表受manager节点的支配,是集群的一份子。

接下来,我们通过如下命令完成:

docker node update --availability active docker-worker1

结果为:
在这里插入图片描述

3.3.2 更改service scale

我们在manager节点中,通过增加副本实现service自动扩容,命令如下:

docker service scale my_nginx=6

结果显示,每个node均认领了2个Task
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. docker down

当然,你也可以通过systemctl stop docker服务,制造“事故现场”,比如worker1宕机了:
在这里插入图片描述
此刻在manager节点中,再查看cluster nodes,发现worker1节点已Down
在这里插入图片描述
接下来重复3.1.2节的动作,你会发现worker1真的光荣退休了:
在这里插入图片描述

结语

Docker Swarm提供了很多适合各类生产场景的选项和操作,你可以根据实际情况进行选择和部署。通过Docker集群化管理,可以免去不必要的重复操作,提高工作效率。

各位盆友,如有任何疑问,可留言O。


系列回顾


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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/404588.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据-85 Spark 集群 RDD创建 RDD-Action Key-Value RDD详解 RDD的文件输入输出

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完) HDFS(已更完) MapReduce(已更完&…

【联想电脑】:使用拓展坞后转接HDMI,无法识别显示屏

项目场景: 作为一个嵌入式软件开发者,有两个外接屏幕,不足为奇。 但是在今天的使用电脑过程中,出现了接了一个拓展坞上面有HDMI接口,但是HDMI接口接上外接显示屏的时候电脑无法识别到,导致只有电脑直连的HD…

家用小型洗衣机哪款好用?精选内衣洗衣机多维度测评盘点

对于很多都市生活的小伙伴来说,有一台小巧玲珑、功能齐全的内衣洗衣机则成了我们的救星。它不仅方便快捷,还能保持衣物清洁和卫生。然而,市面上的内衣洗衣机品牌五花八门。哪一个最好用、质量又靠谱呢?为了给大家提供更准确的选购…

【FPGA数字信号处理】- 数字信号处理如何入门?

​数字信号处理(Digital Signal Processing,简称DSP)是一种利用计算机或专用数字硬件对信号进行处理的技术,在通信、音频、视频、雷达等领域发挥着越来越重要的作用,也是FPGA主要应用领域之一。 本文将详细介绍数字信…

YOLOv5改进 | 融合改进 | C3融合ContextGuided增强分割效果

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录: 《YOLOv5入门 改…

模糊控制——创建与添加自定义的隶属函数

关键字:模糊控制;隶属函数;Matlab。 系列文章目录 模糊控制——(一)理论基础 模糊控制——(二)设计流程 模糊控制——(三)模糊洗衣机 模糊控制——(四&#…

SQL— DDL语句学习【后端 9】

SQL— DDL语句学习 在数据管理的广阔领域中,SQL(Structured Query Language)作为操作关系型数据库的编程语言,扮演着举足轻重的角色。它不仅定义了操作所有关系型数据库的统一标准,还为我们提供了强大的工具来管理、查…

jenkins最佳实践(二):Pipeline流水线部署springCloud微服务项目

各位小伙伴们大家好呀,我是小金,本篇文章我们将介绍如何使用Pipeline流水线部署我们自己的微服务项目,之前没怎么搞过部署相关的,以至于构建流水线的过程中中也遇到了很多自己以前没有考虑过的问题,特写此篇&#xff0…

【Redis】数据类型详解及其应用场景

目录 Redis 常⻅数据类型预备知识基本全局命令小结 数据结构和内部编码单线程架构引出单线程模型为什么单线程还能这么快 Redis 常⻅数据类型 Redis 提供了 5 种数据结构,理解每种数据结构的特点对于 Redis 开发运维⾮常重要,同时掌握每种数据结构的常⻅…

Postman接口测试项目实战

第 1 章 什么是接口测试 1.1、为什么要进行接口测试 目前除了特别Low的公司外,开发都是前后端分离的,就是说前端有前端的工程师进行编码,后端有后端的工程师进行编码,前后端进行数据基本都是通过接口进行交互的。 1.2、接口测…

zookeeper源码分析之事务请求处理

一.参考 zookeeper启动和选举的源码分析参考之前的帖子. 二.源码 1.职责链模式. 每次经过的processor都是异步处理,加入当前processor的队列,然后新的线程从队列里面取出数据处理. PrepRequestProcessor 检查ACL权限,创建ChangeRecord. SyncRequest…

ArcGIS空间自相关Moran‘s I——探究人口空间格局的20年变迁

先了解什么是莫兰指数? 莫兰指数(Morans I)是一种用于衡量空间自相关性的统计量,即它可以帮助我们了解一个地理区域内的观测值是否彼此相关以及这种相关性的强度和方向。 莫兰指数分类: 全局莫兰指数 (Global Moran…

聊聊如何利用ingress-nginx实现应用层容灾

前言 容灾是一种主动的风险管理策略,旨在通过构建和维护异地的冗余系统,确保在面临灾难性事件时,关键业务能够持续运作,数据能够得到保护,从而最大限度地减少对组织运营的影响和潜在经济损失。因此容灾的重要性不言而…

zabbix实战-磁盘空间告警

1.创建监控项 选择&#xff1a;键值&#xff1a;vfs.fs.size[fs,<mode>] 。 直接写 vfs.fs.size[fs,<mode>]是不出数据的。我们要写具体的值 &#xff1a;vfs.fs.size[/,free] &#xff0c;这个表示查看根的剩余空间。 2.创建图形 为磁盘剩余空间监控项创建图形&am…

redis 遍渐进式历

1.scan cursor [match pattern] [coutn] [type]:以渐进式的方式进行建的遍历 cursor:是光标 指向当前遍历的位置 设置成0表示当前从0开始获取 math parttern &#xff1a;和keys命令一样的 keys * count: 限制一次遍历能够获取到多少个 元素默认是10 type :这次遍历只想获取…

[Python学习日记-10] Python中的流程控制(if...else...)

[Python学习日记-10] Python中的流程控制&#xff08;if...else...&#xff09; 简介 缩进 单分支 双分支 多分支 练习 简介 假如把写程序比做走路&#xff0c;那我们到现在为止&#xff0c;一直走的都是直路&#xff0c;还没遇到过分叉口&#xff0c;想象现实中&#x…

【python】Python实现XGBoost算法的详细理论讲解与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

Python编码系列—Python数据可视化:Matplotlib与Seaborn的实战应用

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

Ps:首选项 - 单位与标尺

Ps菜单&#xff1a;编辑/首选项 Edit/Preferences 快捷键&#xff1a;Ctrl K Photoshop 首选项中的“单位与标尺” Units & Rulers选项卡允许用户根据工作需求定制 Photoshop 的测量单位和标尺显示方式。这对于保持工作的一致性和精确性&#xff0c;尤其是在跨设备或跨平台…

专题--自底向上的计算机网络(物理层)

目录 计算机网络概述 物理层 数据链路层 网络层 运输层 应用层 网络安全 详细见http://t.csdnimg.cn/MY5aI http://t.csdnimg.cn/8Ipa4 http://t.csdnimg.cn/uvMxS 信道复用技术不仅在物理层有运用&#xff0c;在数据链路层也确实需要信道复用技术。‌ 数据链路层是…