0

0

给 Docker 引擎的 Swarm 添加工作节点!

WBOY

WBOY

发布时间:2023-12-28 11:05:14

|

1374人浏览过

|

来源于Linux就该这么学

转载

导读 让我们继续几周前在 CentOS 7.2 中开始的工作。 在本指南中,我们学习了如何初始化以及启动 Docker 1.12 中内置的原生的集群以及编排功能。但是我们只有管理者manager节点还没有其它工作者worker节点。今天我们会展开讲述这个。

我将向你展示如何将不对称节点添加到 Sawrm 中,比如一个与 CentOS 相邻的 Fedora 24,它们都将加入到集群中,还有相关很棒的负载均衡等等。当然这并不是轻而易举的,我们会遇到一些障碍,所以它应该是非常有趣的。
Docker 引擎的 Swarm中添加工作者节点!

Teaser

先决条件

在将其它节点成功加入 Swarm 之前,我们需要做几件事情。理想情况下,所有节点都应该运行相同版本的 Docker,为了支持原生的编排功能,它的版本至少应该为 1.12。像 CentOS 一样,Fedora 内置的仓库没有最新的构建版本,所以你需要手动构建,或者使用 Docker 仓库手动添加和安装正确的版本,并修复一些依赖冲突。我已经向你展示了如何在 CentOS 中操作,经过是相同的。
此外,所有节点都需要能够相互通信。这就需要有正确的路由和防火墙规则,这样管理者manager和工作者worker节点才能互相通信。否则,你无法将节点加入 Swarm 中。最简单的解决方法是临时清除防火墙规则 (iptables -F),但这可能会损害你的安全。请确保你完全了解你正在做什么,并为你的节点和端口创建正确的规则。

error response from daemon: timeout was reached before node was joined. the attempt to join the swarm will continue in the background. use the "docker info" command to see the current swarm status of your node.

守护进程的错误响应:节点加入之前已超时。尝试加入 Swarm 的请求将在后台继续进行。使用 “docker info” 命令查看节点的当前 Swarm 状态。

你需要在主机上提供相同的 Docker 镜像。在上一个教程中我们创建了一个 Apache 映像,你需要在你的工作者worker节点上执行相同操作,或者分发已创建的镜像。如果你不这样做,你会遇到错误。如果你在设置 Docker 上需要帮助,请阅读我的介绍指南和网络教程。

7vwdxioopmmfp3amlm0ulimcu \_ websky.11 my-apache2:latest
localhost.localdomain Shutdown Rejected 7 minutes ago
"No such image: my-apache2:lat&"
现在开始

现在我们有一台启动了 CentOS 机器,并成功地创建了容器。你可以使用主机端口连接到该服务,这一切都看起来很好。目前,你的 Swarm 只有管理者。
Docker 引擎的 Swarm中添加工作者节点!

Manager

加入工作者

要添加新的节点,你需要使用 join 命令。但是你首先必须提供令牌、IP 地址和端口,以便工作者woker节点能正确地对 Swarm 管理器进行身份验证。接着(在 Fedora 上)执行:

[root@localhost ~]# docker swarm join-token worker
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-0xvojvlza90nrbihu6gfu3qm34ari7lwnza ... \
192.168.2.100:2377

如果你不修复防火墙和路由规则,你会得到超时错误。如果你已经加入了 Swarm,重复 join 命令会收到错误:

Error response from daemon: This node is already part of a swarm. Use "docker swarm leave" to leave this swarm and join another one.

如果有疑问,你可以离开 Swarm,然后重试:

[root@localhost ~]# docker swarm leave
Node left the swarm.
docker swarm join --token
SWMTKN-1-0xvojvlza90nrbihu6gfu3qnza4 ... 192.168.2.100:2377
This node joined a swarm as a worker.

在工作者worker节点中,你可以使用 docker info 来检查状态:

Swarm: active
NodeID: 2i27v3ce9qs2aq33nofaon20k
Is Manager: false
Node Address: 192.168.2.103
Likewise, on the manager:
Swarm: active
NodeID: cneayene32jsb0t2inwfg5t5q
Is Manager: true
ClusterID: 8degfhtsi7xxucvi6dxvlx1n4
Managers: 1
Nodes: 3
Orchestration:
Task History Retention Limit: 5
Raft:
Snapshot Interval: 10000
Heartbeat Tick: 1
Election Tick: 3
Dispatcher:
Heartbeat Period: 5 seconds
CA Configuration:
Expiry Duration: 3 months
Node Address: 192.168.2.100
创建或缩放服务

现在,我们需要看下 Docker 是否以及如何在节点间分发容器。我的测试展示了一个在非常轻的负载下相当简单的平衡算法。试了一两次之后,即使在我尝试缩放并更新之后,Docker 也没有将运行的服务重新分配给新的 worker。同样,有一次,它在工作者worker节点上创建了一个新的服务。也许这是最好的选择。
Docker 引擎的 Swarm中添加工作者节点!

Scale service

Docker 引擎的 Swarm中添加工作者节点!

Service ls

Docker 引擎的 Swarm中添加工作者节点!

Services ls, more

Docker 引擎的 Swarm中添加工作者节点!

Sora
Sora

Sora是OpenAI发布的一种文生视频AI大模型,可以根据文本指令创建现实和富有想象力的场景。

下载

在新的工作者节点上完整创建新的服务。

过了一段时间,两个容器之间的现有服务有一些重新分配,但这需要一些时间。新服务工作正常。这只是一个前期观察,所以我现在不能说更多。现在是开始探索和调整的新起点。
Docker 引擎的 Swarm中添加工作者节点!

负载均衡过了一会工作了。

总结

Docker 是一只灵巧的小野兽,它仍在继续长大,变得更复杂、更强大,当然也更优雅。它被一个大企业吃掉只是一个时间问题。当它带来了原生的编排功能时,Swarm 模式运行得很好,但是它不只是几个容器而已,而是充分利用了其算法和可扩展性。

我的教程展示了如何将 Fedora 节点添加到由 CentOS 运行的群集中,并且两者能并行工作。关于负载平衡还有一些问题,但这是我将在以后的文章中探讨的。总而言之,我希望这是一个值得记住的一课。我们已经解决了在尝试设置 Swarm 时可能遇到的一些先决条件和常见问题,同时我们启动了一堆容器,我们甚至简要介绍了如何缩放和分发服务。要记住,这只是一个开始。

干杯。

作者简介:

我是 Igor Ljubuncic。现在大约 38 岁,已婚但还没有孩子。我现在在一个大胆创新的云科技公司做首席工程师。直到大约 2015 年初时,我还在一个全世界最大的 IT 公司之一中做系统架构工程师,和一个工程计算团队开发新的基于 Linux 的解决方案,优化内核以及攻克 Linux 的问题。在那之前,我是一个为高性能计算环境设计创新解决方案的团队的技术领导。还有一些其他花哨的头衔,包括系统专家、系统程序员等等。所有这些都曾是我的爱好,但从 2008 年开始成为了我的付费工作。还有什么比这更令人满意的呢?

从 2004 年到 2008 年间,我曾通过作为医学影像行业的物理学家来糊口。我的工作专长集中在解决问题和算法开发。为此,我广泛地使用了 Matlab,主要用于信号和图像处理。另外,我得到了几个主要的工程方法学的认证,包括 MEDIC 六西格玛绿带、试验设计以及统计工程学。

我也开始写书,包括奇幻类和 Linux 上的技术性工作。彼此交融。

要查看我开源项目、出版物和专利的完整列表,请滚动到下面。

有关我的奖项,提名和 IT 相关认证的完整列表,请稍等一下。

相关专题

更多
fprintf在matlab中的用法
fprintf在matlab中的用法

fprintf是MATLAB中用于格式化输出的函数。fprintf的基本语法为“fprintf(fileID, format, A)”,其中,fileID是一个标识符,用于指定要写入的文件,如果要将数据写入到命令窗口中,则可以使用1作为fileID的值,format是一个字符串,用于指定输出的格式,A是要输出的数据。

483

2023.09.28

数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

682

2023.10.12

Matlab中length函数的用法
Matlab中length函数的用法

在Matlab中,length函数用于返回向量、数组或字符串中的元素个数。想了解更多length函数的相关内容,可以阅读本专题下面的文章。

312

2023.11.22

Matlab中axis函数用法
Matlab中axis函数用法

在Matlab中,axis函数用于控制坐标轴的范围和比例。想了解更多axis函数的相关内容,可以阅读本专题下面的文章。

772

2023.11.23

subplot在matlab中的用法
subplot在matlab中的用法

subplot在matlab中用于在同一个图窗中创建多个子图。通过指定子图的行数、列数和当前绘图位置,可以在每个子图中绘制不同的图形。想了解更多subplot在matlab中的用法,可以访问下面的文章。

141

2023.11.27

scilab和matlab的区别
scilab和matlab的区别

scilab和matlab的区别:1、注释符号;2、预设变量的表示;3、操作符的用法;4、矩阵的定义与调用;5、程序的编辑与执行;6、数据类型;7、函数库;8、图形界面;9、社区支持与生态系统;10、跨平台兼容性;11、价格。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

182

2023.12.11

Matlab如何四舍五入
Matlab如何四舍五入

Matlab可以通过round函数和格式化输出函数来对数值来进行四舍五入操作。更多关于Matlab相关的问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

395

2023.12.12

Matlab中axis函数用法介绍
Matlab中axis函数用法介绍

在Matlab中,axis函数用于设置当前坐标轴的范围和刻度。想了解更多axis函数的相关内容,可以阅读本专题下面的文章。

163

2023.12.13

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

72

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.4万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号