当前位置: 首页 > news >正文

Docker Swarm 管理

Docker Swarm 是 Docker 提供的一种用于管理容器集群的工具。
一、Docker Swarm 的主要特点包括:
高可用性:可以自动检测和恢复故障节点,确保服务的持续可用性。
例如,当某个工作节点出现故障时,Swarm 会将其上的任务重新调度到其他健康的节点上。
负载均衡:能够在多个节点之间均衡地分配工作负载。
比如,对于一个高并发的 Web 服务,Swarm 可以根据节点的资源使用情况将请求均匀地分发到各个节点。
简单易用:基于 Docker 命令行工具,使用熟悉的 Docker 命令来管理集群。
二、管理 Docker Swarm 的关键步骤:
初始化 Swarm 集群:选择一个节点作为管理节点,并执行初始化命令。
加入工作节点:其他节点可以通过特定的命令加入到 Swarm 集群中。
创建服务:定义服务的配置,如镜像、端口、副本数量等。
三、在管理中需要注意的问题:
资源规划:合理评估和分配各个节点的资源,以避免资源不足或浪费。
网络配置:确保集群内的网络通信正常,避免出现网络隔离或延迟过高的情况。
监控和日志:建立有效的监控机制,及时发现和解决问题,并收集和分析日志以便进行故障排查和性能优化。

Docker Swarm 管理的工作原理
Docker Swarm 是 Docker 提供的一种用于容器集群管理和编排的工具。
工作原理主要包括以下几个方面:
集群初始化
管理员选择一个节点作为管理节点(Manager Node),其他节点作为工作节点(Worker Node)。
管理节点负责整个集群的管理和调度决策。
服务定义
用户定义要在集群中运行的服务,包括服务的副本数量、容器的镜像、端口映射、环境变量等。
任务调度
管理节点根据集群中节点的资源可用性和负载情况,决定在哪个工作节点上启动容器实例来运行服务。
例如,如果一个工作节点的 CPU 利用率较低,新的任务可能会被调度到该节点上。
容器部署
工作节点接收到任务后,从 Docker 镜像仓库拉取指定的镜像,并启动相应的容器实例。
络和存储管理网
Docker Swarm 提供了内置的网络和存储解决方案,确保容器之间能够相互通信和访问共享存储。
健康检查和故障恢复
定期对容器进行健康检查,如果发现某个容器故障,会自动在其他节点上重新启动新的容器实例以保持服务的副本数量。
例如,假设有一个 Web 应用服务,定义了 5 个副本。当其中一个工作节点出现故障,管理节点会感知到,并在其他正常的工作节点上启动新的容器实例,以确保始终有 5 个副本在运行,从而保证服务的高可用性。
总之,Docker Swarm 通过集中式的管理和智能的调度,使得在多个节点上部署和管理容器化应用变得更加简单和高效

部署Docker Swarm 集群,集群包含一个管理节点(manager)和两个工作节点(worker01、worker02)

部署 Docker Swarm 集群

[root@manager ~]# docker swarm init --advertise-addr 192.168.10.101

在所有worker节点加入集群

docker swarm join --token

查看集群信息

docker info........Swarm: activeNodeID: x3v12rmfw9c0isq1nppaaooghIs Manager: trueClusterID: 0mps950k70s2oqphe75jzykqqManagers: 1Nodes: 3
........

查看 Swarm 集群中 Node 节点的详细状态信息

 docker node ls

Docker Swarm 节点管理

将管理节点的 AVAILABILITY 值修改为 Drain 状态,使其只具备管理功能

docker node update --availability drain manager
docker node ls

节点的 AVAILABILITY 有三种状态:ActivePauseDrain

Active:集群中该节点可以被指派任务。

Pause:集群中该节点不可以被指派新的任务,但是其他已经存在的任务保持运行。

Drain:集群中该节点不可以被指派新的任务,Swarm Scheduler 停掉已经存在的任务,并将它们调度到可用的节点上

添加标签元数据

[root@manager ~]# docker node update --label-add group=g2 worker01
[root@manager ~]# docker node inspect worker01[root@manager ~]# docker service create --name mynginx --constraint 'node.labels.group==g2' nginx

查看mynginx容器所在的主机

docker service ps mynginx

节点提权/降权

worker01 worker02 都升级为管理节点

[root@manager ~]# docker node promote worker01 worker02[root@manager ~]# docker node ls对上面已提权的 worker01 和 worker02 执行降权操作
[root@manager ~]# docker node demote worker01 worker02

Docker Swarm 服务管理

创建好swarm群集

创建服务

使用 docker service create 命令创建 Docker 服务,从 Docker 镜像 nginx 创建一个名称为 web 的服务,指定服务副本数为 2

docker service create -p 80:80 --replicas 2 --name web nginx
docker service logs -f web

查看当前已经部署启动的全部应用服务

docker service ls

可以查询指定服务的详细信息

docker service ps web

docker ps

显示服务详细信息

JSON 格式显示方法 Web 服务的详细信息

docker service inspect web

以易于阅读方式显示 Web 服务的详细信息

docker service inspect --pretty web

服务的扩容缩容

将前面已经部署的 2 个副本的 Web 服务,扩容到 3 个副本

docker service scale web=3

通过 docker service ps web 命令查看服务扩容结果

docker service ps web

删除服务

docker service rm web

5:滚动更新

docker service create --replicas 3 --name redis --update-delay 10s redis:3.0.6

docker service ps redis

添加自定义 Overlay 网络

[root@manager ~]# docker network create --driver overlay my-network
[root@manager ~]# docker service create --replicas 3 --network my-network --name myweb nginx

数据卷创建与应用

创建数据卷

[root@manager ~]# docker volume create product-kgc

将nginx容器连接到数据卷

[root@manager ~]# docker service create --mount type=volume,src=product-kgc,dst=/usr/share/nginx/html --replicas 1 --name kgc-web-01 nginx
[root@manager ~]# docker service ps kgc-web-01

到work01中查看数据是否进行同步

[root@worker01 ~]# cd /var/lib/docker/volumes/product-kgc/_data/ 
[root@worker01 _data]# mkdir test01 test02 
[root@worker01 _data]# docker ps
[root@worker01 _data]# docker exec -it 8875962fb67b bashroot@8875962fb67b:/# ls /usr/share/nginx/html/
50x.html  index.html  test01  test02

使用 bind 类型挂载数据卷

(1)创建测试目录
[root@manager ~]# mkdir -p /var/vhost/www/aa 
[root@worker01 ~]# mkdir -p /var/vhost/www/aa 
[root@worker02 ~]# mkdir -p /var/vhost/www/aa在manager节点安装nfs-utils
[root@manager ~]# yum -y install nfs-utils设置nfs共享
[root@manager ~]# vim /etc/exports
/var/vhost/www/aa *(rw,sync,no_root_squash)启动nfs服务
[root@manager ~]# systemctl start nfs
[root@manager ~]# systemctl start rpcbind
在其他work节点挂载
yum -y install nfs-utils
mount 192.168.10.101:/var/vhost/www/aa /var/vhost/www/aa/

创建 2 kgc-web-02 服务

[root@manager ~]# docker service create --replicas 2 --mount type=bind,src=/var/vhost/www/aa,dst=/usr/share/nginx/html/ --name kgc-web-02 nginx

验证数据是否同步

[root@worker01 _data]# touch /var/vhost/www/aa/mytest
[root@worker01 _data]# docker service ps kgc-web-02
[root@worker01 _data]# docker ps -a
[root@worker01 _data]# docker exec -it d292452b1f39 bash
root@d292452b1f39:/# ls /usr/share/nginx/html/
mytest

相关文章:

Docker Swarm 管理

Docker Swarm 是 Docker 提供的一种用于管理容器集群的工具。一、Docker Swarm 的主要特点包括: 高可用性:可以自动检测和恢复故障节点,确保服务的持续可用性。 例如,当某个工作节点出现故障时,Swarm 会将其上的任务重…...

跨平台、多格式、云同步,Koodo Reader背后的技术亮点

前言 对于像我这样的书虫来说,能够找到一个既方便又舒适的阅读环境,简直就是人生中的一大幸事;今天,就让小江湖我带你走进一个不一样的阅读世界——Koodo Reade! 无论是在喧嚣的都市,还是在宁静的乡村&a…...

【Story】如何高效记录并整理编程学习笔记?

目录 一、为何笔记在编程学习中如此重要?1.1 知识的捕捉1.2 理解和消化1.3 知识的复习1.4 知识的分享 二、建立高效的笔记系统2.1 确定笔记的目标2.2 选择合适的工具2.3 笔记的结构化2.4 记录有效的内容2.5 定期回顾和更新 三、保持笔记条理性的技巧3.1 使用一致的格…...

jenkins 安装以及自动构建maven项目并且运行

在这里找到你对应jdk的版本的jenkins包 War Jenkins Packages 我这里用的使java8,所以下载 https://mirrors.jenkins.io/war-stable/2.60.1/jenkins.war 然后jenkins可以安装到centos系统 在本地windows系统运行命令行 scp C:\Users\98090\Downloads\jenkins.war root@192…...

Java虚拟机:虚拟机介绍

大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 033 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进…...

硬件面试经典 100 题(31~40 题)CRE4

31、多级放大电路的级间耦合方式有哪几种?哪种耦合方式的电路零点偏移最严重?哪种耦合方式可以实现阻抗变换? 有三种耦合方式:直接耦合、阻容耦合、变压器耦合。直接耦合的电路零点漂移最严重,变压器耦合的电路可以实现…...

ReactNative笔记(自用)

环境 ios更换gem镜像源: 查看当前源: gem sources -l 移除默认源: gem sources --remove https://rubygems.org/。添加新的源: 添加 Ruby China 的镜像源: gem source -a https://gems.ruby-china.com/或者添加其他镜像源。 清华大学的gem源: htt…...

嵌入式八股-面试30题(20240812)

TCP和UDP的区别是什么? **TCP(Transmission Control Protocol)**是面向连接的协议,提供可靠的、顺序的数据传输。它通过三次握手建立连接,并在数据传输过程中使用确认和重传机制来确保数据的正确性。TCP还支持流量控制和拥塞控制…...

单一职责原则(SRP)

目录 1、定义 2、优点 3、原则的重要性 4、 示例 5、注意事项 单一职责原则(Single Responsibility Principle, SRP)是面向对象设计中的一项重要原则,属于 SOLID 原则之一。它的核心思想是:一个类应该只有一个引起它变化的原因&am…...

骨传导耳机怎么选?分享五款资深用户都说好的骨传导耳机!

在追求健康生活的道路上,运动健身已成为一种时尚潮流,而音乐则是这场潮流中不可或缺的催化剂。然而,传统耳机在运动场景下的局限性日益凸显,难以满足运动者对自由与舒适的双重追求。正是基于这样的市场需求,骨传导耳机…...

【计算机网络——分组延时,丢失,吞吐量】

处理延时:1检查分组首部信息,决定将该分组导向何处所需时间。2检查比特级别的差错所需时间:分析这个分组是否出错,目标IP地址字段提取出来,查路由表……。 传播延时和传输延时:传输延时就是分组到链路所需…...

使用1panel 申请证书配置雷池站点

1.创建测试站点 2.使用1panel申请测试站点的自签名证书 ps:雷池支持自签的证书 关于如果选择网站的SSL证书 百度搜索 看起来是证书的问题 调整了参数重新申请一个证书上传 注意,如果文件上传错了,雷池会报错,如下图 再次访问配…...

4章7节:用R做数据重塑,数据去重和数据的匹配

在数据科学的分析流程中,数据重塑是一项非常重要的操作。数据的重塑通常指将数据从一种形式转换为另一种形式,以满足后续分析的需求。R语言提供了丰富的工具和函数来帮助用户高效地进行数据重塑操作。本文中,我们将深入探讨数据重塑的概念及其…...

大数据面试SQL(七):累加刚好超过各省GDP40%的地市名称

文章目录 累加刚好超过各省GDP40%的地市名称 一、题目 二、分析 三、SQL实战 四、样例数据参考 累加刚好超过各省GDP40%的地市名称 一、题目 现有各省地级市的gdp数据,求从高到低累加刚好超过各省GDP40%的地市名称,临界地市也需要。 例如: 浙江省…...

建议收藏!这4款设计师常用的素材管理软件,助你工作效率翻倍!

嘿,设计师们!你是否还在为那一堆堆散乱的素材头疼?每次灵感来袭,却要花费大量时间在层层文件夹中苦苦搜寻?别急,今天我就来给大家推荐4款超给力的素材管理软件,它们不仅能帮你轻松整理素材库&am…...

用于NLP领域的排序模型最佳实践

在自然语言处理(NLP)领域,用于排序任务的模型通常是指那些能够对文本进行排序、比较或评估其相关性的模型。这些模型可以应用于诸如文档排序、句子排序、问答系统中的答案排序等多种场景。在当前的研究和发展中,基于深度学习的方法…...

域名未备案的支付平台遭遇大攻击怎么办

域名未备案的支付平台遭遇大攻击怎么办?在当今数字化时代,支付平台的安全与稳定性是保障业务连续性和用户信任的关键。然而,对于因域名未备案而面临法律风险的支付平台来说,其安全挑战更为严峻。当这类平台遭遇大规模的网络攻击&a…...

【NI-DAQmx入门】LabVIEW数据采集基础应用程序框架

对于可管理规模的 LabVIEW 程序,分析现有程序或设计新程序的方法通常是从整体到具体,即从高级到低级的分析和设计。从一开始就直接深入细节可能会效率较低。 在设计阶段,开发人员首先将程序垂直划分为几个层级。从最顶层开始,他们…...

海山数据库(He3DB)源码详解:CommitTransaction函数源码详解

文章目录 海山数据库(He3DB)源码详解:CommitTransaction函数1. 执行条件2. 执行过程2.1 获取当前节点状态:2.2 检查当前状态:2.3 预提交处理:2.4 提交处理:2.5 释放资源:2.6 提交事务: 作者介绍…...

【网络】传输层TCP协议的报头和传输机制

目录 引言 报头和有效载荷 确认应答机制 捎带应答机制 超时重传机制 排序和去重 连接管理机制 个人主页:东洛的克莱斯韦克-CSDN博客 引言 TCP是传输层协议,全称传输控制协议。TCP报头中有丰富的字段以及协议本身会制定完善的策略来保证网络传输的…...

Cursor实现用excel数据填充word模版的方法

cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

stm32进入Infinite_Loop原因(因为有系统中断函数未自定义实现)

这是系统中断服务程序的默认处理汇编函数,如果我们没有定义实现某个中断函数,那么当stm32产生了该中断时,就会默认跑这里来了,所以我们打开了什么中断,一定要记得实现对应的系统中断函数,否则会进来一直循环…...