Docker Swarm简介

注意事项

Swarm 模式是用于管理 Docker 守护进程集群的一项高级特性。如果你打算将 Swarm 用作生产运行时环境,那就使用 Swarm 模式。如果你不打算使用 Swarm 进行部署,可改用 Docker Compose。如果正在为 Kubernetes 部署进行开发,可以考虑使用 Docker Desktop 中集成的 Kubernetes 功能。

Docker 包含 Swarm(集群) 模式,可用于对称为 “swarm” 的 Docker 引擎集群进行原生管理。使用 Docker 命令行界面(CLI)来创建一个 swarm 集群、向 swarm 集群部署应用服务以及管理 swarm 的行为。Docker Swarm 模式内置于 Docker 引擎中。不要将 Docker Swarm 模式与已不再积极开发的 Docker Classic Swarm 相混淆。

Docker Swarm特性亮点

与 Docker 引擎集成的集群管理

使用 Docker 引擎命令行界面(CLI)创建由 Docker 引擎组成的 swarm 集群,在此集群中可以部署应用服务。无需额外的编排软件来创建或管理 swarm 集群。

去中心化设计

Docker 引擎在运行时处理节点角色的专业化问题,而不是在部署时处理节点角色的区分。使用 Docker 引擎部署两种类型的节点,即管理节点和工作节点。这意味着可以从单个磁盘镜像构建整个 swarm 集群。

去中心化设计是Docker Swarm集群中的一个核心概念。在去中心化的设计中,每个节点都参与管理集群状态,没有单独的“中心”节点。这样做的好处是,如果一个管理节点失效,其它的节点可以接管工作,维护整个集群的服务。

在Docker Swarm集群中,节点被分为管理节点(Manager)和工作节点(Worker)。管理节点负责集群的管理和调度,而工作节点仅执行任务。

声明式服务模型

Docker 引擎采用声明式方法,让能够定义应用栈中各个服务的期望状态。例如,描述一个由带有消息队列服务的 Web 前端服务和数据库后端组成的应用程序。

扩展

对于每个服务,你可以声明要运行的任务数量。当进行扩展或收缩时,swarm 管理器会通过自动添加或删除任务来维持期望状态。

期望状态协调

swarm 管理器节点会持续监控集群状态,并协调实际状态与你所设定的期望状态之间的任何差异。例如,如果设置一个服务运行某个容器的 10 个副本,而承载其中两个副本的工作机器崩溃了,管理器会创建两个新的副本以替换崩溃的副本,并将新副本分配给正在运行且可用的工作节点。

多主机网络

可以为服务指定一个覆盖网络。swarm 管理器在初始化或更新应用程序时会自动为覆盖网络上的容器分配地址。

服务发现

swarm 管理器节点会为 swarm 中的每个服务分配一个唯一的 DNS 名称,并对正在运行的容器进行负载均衡。通过嵌入在 swarm 中的 DNS 服务器查询 swarm 中运行的每个容器。

负载均衡

将服务的端口暴露给外部负载均衡器。在内部,swarm 允许你指定如何在节点之间分配服务容器。

默认安全

swarm 中的每个节点都会强制实施 TLS 双向认证和加密,以确保自身与所有其他节点之间的通信安全。可以选择使用自签名根证书或来自自定义根 CA 的证书。

滚动更新

在推出更新时,对节点逐步应用服务更新。swarm 管理器允许控制向不同节点组部署服务之间的延迟。如果出现问题,可以回滚到服务的先前版本。

Docker Swarm基本概念

什么是集群(swarm)?

Docker Engine 中嵌入的集群管理与编排功能是基于 Swarmkit 构建的。Swarmkit 是一个独立的项目,它实现了 Docker 的编排层,并直接在 Docker 内部使用。

一个集群由多个以集群模式运行的 Docker 主机组成,这些主机充当管理器(用于管理成员关系和任务委派)和工作节点(用于运行集群服务)。给定的 Docker 主机可以是管理器、工作节点,或者同时扮演这两种角色。当你创建一项服务时,要定义它的理想状态 —— 副本数量、可供其使用的网络和存储资源、服务对外暴露的端口等等。Docker 会努力维持这种期望状态。例如,如果一个工作节点不可用,Docker 会将该节点的任务调度到其他节点上。任务是指作为集群服务一部分且正在运行的容器,它由集群管理器管理,这与独立容器不同。

集群服务相对于独立容器的一个主要优势在于,可以修改服务的配置,包括它所连接的网络和卷,而无需手动重启服务。Docker 会更新配置,停止那些配置过时的服务任务,并创建符合期望配置的新任务。

当 Docker 以集群模式运行时,仍然可以在参与集群的任何 Docker 主机上运行独立容器以及集群服务。独立容器和集群服务之间的一个关键区别在于,只有集群管理器才能管理集群,而独立容器可以在任何守护进程上启动。Docker 守护进程可以作为管理器、工作节点或两者兼具的角色参与到集群中。

就像可以使用 Docker Compose 来定义和运行容器一样,也可以定义和运行集群服务栈。

节点

节点是参与集群的 Docker 引擎的一个实例。可以将其视为一个 Docker 节点。可以在一台物理计算机或云服务器上运行一个或多个节点,但生产环境中的集群部署通常包括分布在多台物理机和云服务器上的 Docker 节点。

要将应用程序部署到集群中,需要向一个管理器节点提交服务定义。管理器节点会将称为任务的工作单元分派到工作节点上。

管理器节点还执行维持集群期望状态所需的编排和集群管理功能。管理器节点会选出一位单一的领导者来执行编排任务。

工作节点接收并执行从管理器节点分派过来的任务。默认情况下,管理器节点也会像工作节点一样运行服务,但你可以将它们配置为专门运行管理器任务,使其成为仅作管理的节点。每个工作节点上都运行着一个代理,它会报告分配给它的任务情况。工作节点会将其分配任务的当前状态通知给管理器节点,以便管理器能够维持每个工作节点的期望状态。

以下图片形象的展示了集群中管理节点与工作节点的关系。

docker swarm structrue

服务和任务

任务(Task)是 Swarm 中的最小的调度单位,目前来说就是一个单一的容器;服务(Services)是指一组任务的集合,服务定义了任务的属性。

服务是关于在管理器或工作节点上要执行的任务的定义。它是集群系统的核心结构,也是用户与集群进行交互的主要根源。

任务承载着一个 Docker 容器以及要在容器内运行的命令。它是集群的原子调度单元。管理器节点会根据服务规模中设置的副本数量将任务分配给工作节点。一旦任务被分配到一个节点上,它就不能转移到另一个节点。它只能在分配的节点上运行,或者失败。

以下图片形象的展示了容器、任务、服务的关系。

docker swarm task service

负载均衡

集群管理器使用入口负载均衡来将希望在集群外部可用的服务暴露出去。集群管理器可以自动为服务分配一个已发布端口,或者可以为服务配置一个已发布端口。可以指定任何未使用的端口。如果不指定端口,集群管理器会为服务分配一个在 30000 - 32767 范围内的端口。

外部组件,如云计算负载均衡器,可以通过集群中任何节点的已发布端口访问服务,无论该节点当前是否正在运行该服务的任务。集群中的所有节点都会将入口连接路由到一个正在运行的任务实例。

集群模式有一个内部 DNS 组件,它会自动为集群中的每个服务分配一个 DNS 条目。集群管理器使用内部负载均衡根据服务的 DNS 名称在集群内的服务之间分配请求。

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

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

相关文章

JVM 运行时数据区

JVM整体架构 可以分为三层: 1 JVM外部,从源文件到Class文件,再装载到JVM 2 JVM运行时数据区,相当于就是避风港、运行的大后方。给执行程序提供后勤。 3 执行引擎层。和运行时数据区交互,完成执行任务。 运行时数据…

新加坡托管服务器VS香港托管服务器:AI时代的选择策略

在人工智能迅速发展的今天,服务器作为数据存储与计算的核心基础设施,其性能、稳定性和地理位置对于用户体验和业务效率至关重要。对于中国用户而言,在选择服务器时,新加坡服务器和香港服务器无疑是两个极具吸引力的选项。两者同属…

DAYWEB69 攻防-Java 安全JWT 攻防Swagger 自动化算法签名密匙Druid 泄漏

知识点 1、Java安全-Druid监控-未授权访问&信息泄漏 2、Java安全-Swagger接口-文档导入&联动批量测试 2、Java安全-JWT令牌攻防-空算法&未签名&密匙提取 Java安全-Druid监控-未授权访问&信息泄漏 Druid是阿里巴巴数据库事业部出品,为监控而…

vscode使用技巧

vscode如果要用来写不同的语言,可以通过创建的工作区,然后创建不同的快捷方式以便打开它 注:C/C 退回到1.8.4,为了生成可以配置的文件 1.创建工作区 将工作区另存为 -> 选择你要写的文件夹的根目录 -> Save 2.归纳可执行…

Android 托管 Github Action 发布 Github Packages ,实现 Mvn 免费自动化托管

自从多年前 JCenter 关闭服务之后,GSY 项目版本就一直发布在 Jitpack 上,如今每个月也都有大概 10w 左右下载,但是近年来时不时就会出现历史版本丢失的问题,而且有时候还不是某个具体版本丢失,而是版本里的某几个依赖突…

记录一次企业外部通过ssh 连接数据库的事DBeaver

情况大概是这样,公司算法供应商开通了连接某个服务器A的权限,但是数据库x是在另一台服务器B上。 直接通过外部连接数据库是不行的,需要借用服务器A来进行访问x 使用软件:DBeaver, 数据库x类型:oracle 需要的信息&am…

Java爬虫的京东“寻宝记”:揭秘商品类目信息

开篇:Java特工的神秘任务 在这个数据驱动的时代,我们就像一群特工,穿梭在数字的海洋中,寻找着隐藏的宝藏——商品类目信息。今天,我们将带领你一起,用Java这把精密的瑞士军刀,深入京东的神秘领…

Linux——— 信号

文章目录 前言:引入信号生活中的例子信号概念见一见Linux中的信号 浅度理解信号信号处理(浅谈):如何自定义捕捉 信号保存(浅谈) 信号产生系统调用产生异常产生:浅谈除0异常浅谈解引用野指针异常Core &&…

Java面试经典 150 题.P169. 多数元素(005)

本题来自:力扣-面试经典 150 题 面试经典 150 题 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 题解: class Solution {public int majorityElement(int[] nums) …

antdesignvue + AWS-S3实现Minio大文件分片上传

一、后端&#xff1a; 1.引入pom <dependency><groupId>com.amazonaws</groupId><artifactId>aws-java-sdk-s3</artifactId><version>1.12.263</version></dependency> 2.配置application.yml jeecg:minio:minioUrl: http…

维修日常-卷帘门电子遥控钥匙接触不良的维修日志

前段时间&#xff0c;单位领导扔来一个卷帘门遥控钥匙给我&#xff0c;说是接触不良&#xff0c;让我看看什么情况&#xff1f;如下图所示&#xff1a; 测试后发现按住这个钥匙按键时&#xff0c;红灯不能一直亮&#xff0c;所以只能打开看看&#xff0c;如下图&#xff1a; 可…

1999-2023年上市公司持续绿色创新数据

1999-2023年上市公司持续绿色创新数据 1、时间&#xff1a;1999-2023年 2、来源&#xff1a;国家知识产权局 3、指标&#xff1a;年份、股票代码、股票简称、行业名称、行业代码、省份、城市、区县、首次上市年份、上市状态、绿色专利申请总量、绿色发明专利申请数量、绿色实…

Golang | Leetcode Golang题解之第526题优美的排列

题目&#xff1a; 题解&#xff1a; func countArrangement(n int) int {f : make([]int, 1<<n)f[0] 1for mask : 1; mask < 1<<n; mask {num : bits.OnesCount(uint(mask))for i : 0; i < n; i {if mask>>i&1 > 0 && (num%(i1) 0 |…

20221428欧阳慕蓉 密码算法的实现2-2

1.在Ubuntu或openEuler中&#xff08;推荐openEuler&#xff09;中调试运行教材提供的源代码&#xff0c;至少运行SM2&#xff0c;SM3&#xff0c;SM4代码&#xff0c;使用GmSSL命令验证你代码的正确性&#xff0c;使用Markdown记录详细记录实践过程&#xff0c;每完成一项功能…

PostgreSQL的学习心得和知识总结(一百五十七)|新的 COPY 选项 LOG_VERBOSITY

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《PostgreSQL数据库内核分析》 2、参考书籍&#xff1a;《数据库事务处理的艺术&#xff1a;事务管理与并发控制》 3、PostgreSQL数据库仓库…

什么是 OpenTelemetry?

OpenTelemetry 定义 OpenTelemetry (OTel) 是一个开源可观测性框架&#xff0c;允许开发团队以单一、统一的格式生成、处理和传输遥测数据&#xff08;telemetry data&#xff09;。它由云原生计算基金会 (CNCF) 开发&#xff0c;旨在提供标准化协议和工具&#xff0c;用于收集…

MS01SF1 精准测距UWB模组助力露天采矿中的人车定位安全和作业效率提升

在当今矿业行业&#xff0c;随着全球对资源需求的不断增加和开采难度的逐步提升&#xff0c;传统的作业方式面临着越来越多的挑战。露天矿山开采&#xff0c;因其大规模的作业环境和复杂的地形特点&#xff0c;面临着作业人员的安全风险、设备调度的高难度以及资源利用率低下等…

此版本的IDM不支持该类下载,请尝试将IDM更新至最新版本

此版本的IDM不支持该类下载&#xff0c;请尝试将IDM更新至最新版本 平时可以正常使用&#xff0c;谷歌浏览器内用IDM下载突然提示不能用了&#xff0c;但是复制链接到IDM中新建任务不影响使用&#xff0c;推测可能和谷歌浏览器更新有关&#xff0c;打开谷歌浏览器的扩展工具&a…

从一到无穷大 #40:DB AI 融合

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 文章目录 引言正文 引言 吐槽下CSDN和知乎的编辑器&#xff0c;没法发合并的表格&#xff0c;…