【云原生 | 56】Docker三剑客之Docker Swarm高效使用

news2024/12/23 13:33:42

🍁博主简介
        🏅云计算领域优质创作者
        🏅2022年CSDN新星计划python赛道第一名

        🏅2022年CSDN原力计划优质作者
        🏅阿里云ACE认证高级工程师
        🏅阿里云开发者社区专家博主

💊交流社区:CSDN云计算交流社区欢迎您的加入!

目录

1.创建集群id 

2.配置集群节点 

3.配置管理节点 

4.查看集群节点列表 

5.使用集群服务

6.使用网络 

  👑👑👑结束语👑👑👑​


上一篇文章演示了基于Consul服务发现后端来配置一个本地Swarm集群。其中,Consul也可以被替换为Etcd、ZooKeeper等。
另外一个更方便的方式是直接使用Docker Hub提供的免费服务发现后端。下面使用这种方式来演示Swarm的主要操作,包括:
·create:创建一个集群;
·list:列出集群中的节点;
·manage:管理一个集群;
·join:让节点加入到某个集群。
注意:
使用Docker Hub的服务发现后端,需要各个节点能通过公网访问到Docker Hub的服务接口。

1.创建集群id 

在任意一台安装了Swarm的机器上执行swarm create命令来在Docker Hub服务上进行注册。Swarm会通过服务发现后端(此处为Docker Hub提供)来获取一个唯一的由数字和字母组成的token,用来标识要管理的集群:
$ docker run --rm swarm create
946d65606f7c2f49766e4dddac5b4365

注意返回的字符串,这是集群的唯一id,加入集群的各个节点将需要这个信息

2.配置集群节点 

在所有要加入集群的普通节点上执行swarm join命令,表示把这台机器加入指定集群当中。例如,某台机器的IP地址为192.168.0.2,将其加入我们刚创建的946d65606-f7c2f49766e4dddac5b4365集群,则可以使用如下命令:
$ docker run --rm swarm join --addr=192.168.0.2:2375 token://946d65606f7c2f49766
e4dddac5b4365
time="2015-12-09T08:59:43Z" level=info msg="Registering on the discovery
service every 20s..." addr="192.168.0.2:2375" discovery="token://
946d65606f7c2f49766e4dddac5b4365"
...
其中,--addr指定的IP地址信息将被发送给服务发现后端,用以区分集群不同的节点。manager服务必须要通过这个地址可以访问到该节点。
通过控制台可以看到,上述命令执行后,默认每隔20秒(可以通过-- heartbeat选项指定)会输出一条心跳信息。对于发现服务后端来说,默认如果超过60秒(可以通过--ttl选项指定)没有收到心跳信息,则将节点从列表中删除。
如果不希望看到输出日志信息,则可以用-d选项替换--rm选项,让服务后台执行。
执行swarm join命令实际上是通过agent把自己的信息注册到发现服务上,因此,此时对于后端的发现服务来说,已经可以看到有若干节点注册上来了。那么,如何管理和使用这些节点呢?这就得需要Swarm的manager服务了。

3.配置管理节点 

配置管理节点需要使用swarm manage命令,该命令将启动manager服务,默认监听到2375端口,所有对集群的管理都可以通过该服务接口进行。
大家可能注意到,manager服务默认监听的端口跟Docker服务监听端口是一样的,这是为了兼容其他基于Docker的服务,可以无缝地切换到Swarm平台上 来。
仍然在节点192.168.0.2进行操作。由于我们是采用Docker容器形式启动 manager服务,本地的2375端口已经被Docker Daemon占用,我们将manager服务监听端口映射到本地一个空闲的12375端口:
$ docker run -d -p 12375:2375 swarm manage token://946d65606f7c2f49766e4dddac5b4365
1e1ca8c4117b6b7271efc693f9685b4e907d8dc95324350392b21e94b3cffd18

可以通过docker ps命令来查看启动的swarm manager服务容器:

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1e1ca8c4117b swarm "/swarm manage token:" 11 seconds ago Up 10 seconds
0.0.0.0:12375->2375/tcp jovial_rosalind
命令如果执行成功会返回刚启动的Swarm容器的ID。此时一个简单的Swarm集群就已经搭建起来了,包括一个普通节点和一个管理节点。

4.查看集群节点列表 

集群启动成功以后,用户可以在任何一台节点上使用swarm list命令查看集群中的节点列表。例如:
$ docker run --rm swarm list token://946d65606f7c2f49766e4dddac5b4365
192.168.0.2:2375
显示正是之前用swarm join命令加入集群的节点的地址。
我们在另外一个节点192.168.0.3上同样使用swarm join命令新加入一个节点:
$docker run --rm swarm join --addr=192.168.0.3:2375 token://946d65606f7c2f49766
e4dddac5b4365
time="2015-12-10T02:05:34Z" level=info msg="Registering on the discovery
service every 20s..." addr="192.168.0.3:2375" discovery="token:
//946d65606f7c2f49766e4dddac5b4365"
...
再次使用swarm list命令查看集群中的节点列表信息,可以看到新加入的节点:
$ docker run --rm swarm list token://946d65606f7c2f49766e4dddac5b4365
192.168.0.3:2375
192.168.0.2:2375

5.使用集群服务

那么,怎么使用Swarm提供的服务呢?实际上,所有Docker客户端可以继续使用,只要指定使用Swarm manager服务的监听地址即可。
例如,manager服务监听的地址为192.168.0.2:12375,则可以通过指定-H 192.168.0.2:12375选项来继续使用Docker客户端,执行任意Docker命令,例如ps、info、run等。
在任意节点上使用docker run来启动若干容器,例如:
$docker -H 192.168.0.2:12375:12375 run -d ubuntu ping 127.0.0.1
4c9bccbf86fb6e2243da58c1b15e9378fac362783a663426bbe7058eea84de46
使用ps命令查看集群中正在运行的容器:
$ docker -H 192.168.0.2:12375 ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
4c9bccbf86fb buntu "ping 127.0.0.1" About a minute ago Up About a minute
clever_wright
730061a3801a registry:latest "docker-registry" 2 minutes ago
Up 2 minutes 192.168.0.2:5000->5000/tcp Host-1/registry_registry_1
72d99f24a06f redis:3.0 "/entrypoint.sh redis" 2 minutes ago
Up 2 minutes 6379/tcp Host-1/registry_redis_1,
Host-1/registry_registry_1/redis,Host-1/registry_registry_1/redis_1,Host-1
/registry_registry_1/registry_redis_1
输出结果中显示目前集群中正在运行的容器(注意不包括Swarm manager服务容器),可以在不同节点上使用docker ps查看本地容器,会发现这些容器实际上可能运行在集群中的多个节点上(由Swarm调度策略进行分配)。使用info查看所有节点的信息:
$ docker -H 192.168.0.2:12375 info
Containers: 18
Images: 36
Role: primary
Strategy: spread
Filters: health, port, dependency, affinity, constraint
Nodes: 2
Host-1: 192.168.0.2:2375
└ Containers: 15
└ Reserved CPUs: 0 / 4
└ Reserved Memory: 1 GiB / 4.053 GiB
└ Labels: executiondriver=native-0.2, kernelversion=3.16.0-43-generic,
operatingsystem=Ubuntu 14.04.3 LTS, storagedriver=aufs
Host-2: 192.168.0.3:2375
└ Containers: 3
└ Reserved CPUs: 0 / 8
└ Reserved Memory: 0 B / 16.46 GiB
└ Labels: executiondriver=native-0.2, kernelversion=3.16.0-30-generic,
operatingsystem=Ubuntu 14.04.3 LTS, storagedriver=aufs
CPUs: 12
Total Memory: 20.51 GiB
Name: 1e1ca8c4117b
结果输出显示这个集群目前只有两个节点,地址分别是192.168.0.2和192.168.0.3。
类似地,也可以通过Compose模板来启动多个服务。不过请注意,要想让服务分布到多个Swarm节点上,需要采用版本2的写法。

6.使用网络 

为了支持跨主机的网络,Swarm默认采用了overlay网络类型,实现上通过vxlan来构建联通整个Swarm集群的网络。
首先在集群中的所有节点上添加配置Docker daemon选项:
--cluster-store=<DISCOVERY_HOST:PORT> --cluster-advertise=<DOCKER_DAEMON_HOST:PORT>

以consul服务为例,可能类似:

--cluster-store=consul://<consulᴽ 务ൠ ൰ >:8500 --cluster-advertise=192.168.0.3:2375

之后重启Docker服务。首先创建一个网络:

$ docker -H 192.168.0.2:12375 network create swarm_network

查看网络,将看到一个overlay类型的网络:

$ docker -H 192.168.0.2:12375 network ls
NETWORK ID NAME DRIVER
6edf2d16ec97 swarm_network overlay
此时,所有添加到这个网络上的容器将自动被分配到集群中的节点上,并且彼此联通。

  👑👑👑结束语👑👑👑

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PPT怎么插入视频?3个视频插入方法分享!

Anna是个初入职场的新人&#xff0c;最近要进行工作汇报&#xff0c;需要制作PPT并插入相关的讲解视频。但她对PPT的运用不熟悉&#xff0c;不知道应该如何操作&#xff01;特此来询问应该如何在PPT中插入视频&#xff1f; 在演示文稿中插入视频可以使PPT更加生动有趣。无论是展…

如何克服自动化测试中的壁垒和问题?

随着自动化测试技术的快速发展和普及&#xff0c;自动化测试已经成为各个行业广泛应用的重要测试手段。然而&#xff0c;自动化测试中仍然存在壁垒和问题&#xff0c;这些问题可能对测试效果产生影响&#xff0c;甚至会影响整个项目的进程。在本文中&#xff0c;我们将探讨如何…

JavaScript进阶----《getter 和 setter 是什么》

前言&#xff1a; 这两个属性在学习前端的时候看到过&#xff0c;但是由于项目中没有用到过&#xff0c;所以一直没有细致的了解。今天 review 同事代码的时候&#xff0c;遇到了这个写法&#xff0c;看了半天也不知道如何处理。再不学习真的以后连别人的代码都不知道什么意思了…

报名 | AI驱动下的流程挖掘如何提升企业决策和运营效率?

随着人工智能&#xff08;AI&#xff09;技术的不断发展和普及&#xff0c;其在各个领域的应用也越来越广泛。其中&#xff0c;一项重要的应用就是利用AI技术驱动流程挖掘&#xff0c;以提升企业决策和运营效率。 流程挖掘是一种从事件日志中发现、监控和优化实际业务流程的技…

Elasticsearch 安装

下载安装 elasticsearch下载链接 运行&#xff1a;bin\elasticsearch.bat 设置密码&#xff1a;.\bin\elasticsearch-setup-passwords interactive 这边设置密码遇到一个坑 PS G:\elasticsearch-8.8.1> .\bin\elasticsearch-setup-passwords interactiveFailed to authe…

0基础学习VR全景平台篇 第52篇:高级功能-开场加载!

大家好&#xff0c;欢迎观看蛙色VR官方系列——后台使用课程&#xff01; 本期为大家带来蛙色VR平台&#xff0c;高级功能-开场加载&#xff01; 功能位置示意 一、本功能将用在哪里&#xff1f; 开场加载&#xff0c;指作品制作上线&#xff0c;观看者打开VR漫游作品首先看到…

机器学习技术(一)——python基础超详解

机器学习技术&#xff08;一&#xff09;——python基础超详解 文章目录 机器学习技术&#xff08;一&#xff09;——python基础超详解0、引言1、基础概念**:snake:变量****:snake:注释****:snake:输入 输出** 2、数据类型**:snake:数值类型****:snake:运算符****:snake:字符串…

直播预约 | 邀您共同探讨“云XR技术如何改变元宇宙的虚拟体验”

随着数字化时代的到来&#xff0c;元宇宙成为了人们关注的焦点。它是一个虚拟的世界&#xff0c;融合了现实与虚拟的元素&#xff0c;让人们可以以全新的方式进行交互、创作和体验。 云XR技术是元宇宙建设的重要支撑技术之一&#xff0c;元宇宙需要具备高度真实感、高度交互性…

7DGroup性能实施项目日记6

九月廿三 壬寅年 虎 庚戌月 甲辰日 全国在降温之际 不管如何&#xff0c;今天总算是执行起来了脚本。在配置了性能工具之Jmeter 后置监听器可视化数据逻辑的界面中&#xff0c;看到下图&#xff1a; 显然 TPS 在这个接口中能达到 1500 以上&#xff0c;这对第一次执行来说&am…

最优化--最大似然估计--最优化理论介绍

目录 最大似然估计 概念 最大似然估计原理 应用 最优化理论介绍 最优化问题 迭代求解 最大似然估计 概念 最大似然估计&#xff08;Maximum Likelihood Estimation&#xff0c;MLE&#xff09;是统计学中一种常用的参数估计方法。它基于观测数据&#xff0c;通过寻找…

win11禁止运行脚本的解除方法

win11使用Windows PowerShell执行脚本时&#xff0c;提示本系统上禁止运行脚本 解决办法&#xff08;按照步骤进行&#xff09;&#xff1a; 先以管理员身份运行PowerShell。 命令行输入set-ExecutionPolicy RemoteSigned回车&#xff0c;然后输入Y回车即可。至此问题解决。若…

向量的傅里叶变换

note 若要求矩阵的傅里叶变换&#xff0c;则对每个行或列向量求对应的傅里叶变换。 比如matlab中对矩阵求fft傅里叶变换就是对每个列向量分别求傅里叶变换。 code /*\brief:离散傅里叶变换\param dir:变换方向&#xff0c;-1为傅里叶正变换&#xff0c;1为傅里叶反变换\param…

LLM - 第2版 ChatGLM2-6B (General Language Model) 的工程配置

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/131445696 ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本&#xff0c;在保留了初代模型对话流畅、部署门槛较低等众多优…

逍遥自在学C语言 | 函数初级到高级解析

前言 函数是C语言中的基本构建块之一&#xff0c;它允许我们将代码组织成可重用、模块化的单元。 本文将逐步介绍C语言函数的基础概念、参数传递、返回值、递归以及内联函数和匿名函数。 一、人物简介 第一位闪亮登场&#xff0c;有请今后会一直教我们C语言的老师 —— 自在…

python用flask将视频显示在网页上

注意我们的return返回值必须是以下之一&#xff0c;否则会报错 from flask import Flask, render_template, Response import cv2app Flask(__name__)app.route(/) def index():return render_template(index.html)def gen(camera):while True:success, image camera.read(…

组装电脑U盘重装Win10系统教程图解

当您需要对组装电脑进行重新安装Win10操作系统时&#xff0c;使用U盘是一种方便而有效的方法&#xff0c;U盘重装系统不仅可以帮助您解决各种系统问题&#xff0c;还能提供一个干净、稳定的系统环境。无论您是初学者还是有一定经验的用户&#xff0c;本教程将提供清晰的组装电脑…

人机环境系统智能能够解决以巴冲突吗?

巴以冲突的由来可以追溯到19世纪末和20世纪初&#xff0c;当时巴勒斯坦是奥斯曼帝国的一部分&#xff0c;但随着第一次世界大战的爆发&#xff0c;奥斯曼帝国在1917年被英国占领。在此后的几十年里&#xff0c;巴勒斯坦地区成为了犹太人和阿拉伯人之间争夺的焦点。在20世纪初&a…

K8s部署 Redis 主从集群

目录 ​编辑 一、环境准备 1.1 环境说明 1.2 安装说明 1.3 Redis集群说明 1&#xff09;单实例模式 2&#xff09;哨兵模式 3&#xff09;集群模式 二、安装NFS 2.1 安装NFS 2.2 创建NFS共享文件夹 2.3 配置共享文件夹 2.4 使配置生效 2.5 查看所有共享目录 ​编…

PW系列wifi墨水屏标签操作指导

PW系列wifi墨水屏标签操作指导-V1.0 版本 操作人 操作 日期 V1.0 Kevin 创建 20220927 一、设备初始化 1.1.准备 向厂家获取一下信息&#xff1a; 服务器地址(MQTT地址) 操作账号 和操作账号绑定的(产品KEY) 1.2.安装wifi-tools工具 需要windows系统电脑并且有w…

【2022吴恩达机器学习课程视频翻译笔记】2.3监督学习-part-2

B站上面那个翻译我有点看不懂&#xff0c;打算自己啃英文翻译了&#xff08;有自己意译的部分&#xff09;&#xff0c;然后懒得做字幕&#xff0c;就丢在博客上面了&#xff0c;2.2之前的章节结合那个机翻字幕能看懂 2.3监督学习-part-2 So supervised learning algorithms …