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

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

基础测试工具使用经验

背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...