当前位置: 首页 > 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报头中有丰富的字段以及协议本身会制定完善的策略来保证网络传输的…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...