Docker 哲学 - docker swarm

Docker Swarm 模式下的集群管理和服务恢复机制

Docker Swarm 是 Docker 的集群管理和编排功能。在 Swarm 模式下,你可以将多个 Docker 主机组合成一个虚拟主机,称为 Swarm 集群。Swarm 集群由一个或多个管理节点(manager nodes)和工作节点(worker nodes)组成。

管理节点负责集群的管理任务,包括维护集群的状态,调度服务,处理加入或离开集群的节点等。管理节点中有一个节点充当领导者(leader),负责协调集群的所有管理任务。

在这段话中,描述的是 Swarm 集群的服务恢复机制。当你在 Swarm 集群中创建一个服务,并设置该服务运行 10 个副本(replicas)时,Swarm 会在集群的工作节点上启动 10 个容器。如果某个工作节点崩溃,导致运行在该节点上的两个副本停止运行,Swarm 的管理节点会检测到这个状态变化,并采取行动恢复服务的状态。

具体来说,管理节点会创建两个新的副本,以替换崩溃的副本。然后,管理节点会将新的副本分配给运行正常的工作节点。这样,即使有工作节点崩溃,你的服务仍然可以保持在 10 个副本的运行状态,这就是 Swarm 的服务恢复机制。

docker service create --name=nginx --replicas=3 -p 80:80 nginx mannger是 drain模式 。还有两个 worker 节点,也就意味着一个 node会运行两个容器,swarm是怎么样控制 端口冲突的情况

为什么 swarm 模式下 容器端口展示 和 直接 run 不一致

swarm 下的 nginx 服务

由于在 docker swarm 模式下 ,只有在创建一个服务 时候指定 节点的端口,网络情况由 swarm 管理,基于 routing mesh 。在节点 通过 docker ps 看不到主机暴露端口,这时只能通过 docker service inspect serviceID 查看主机暴露端口

关于这个服务 我只起了 一个副本

运行在 node gyk-133

我的 cluster 配置

此时只有 gyk-133 节点有 88端口的 服务,但是得益于 docker swarm 的 routing mesh 管理

在该 cluster的所有节点 的 88 端口,都可以访问到 这个服务,

swarm 核心

这时 如果在 25 跑一个容器 mapping到 88端口 会显示被占用

service => task =>container

相关推荐
元Y亨H2 分钟前
Nacos - 服务发现
java·微服务
微露清风13 分钟前
系统性学习C++-第十八讲-封装红黑树实现myset与mymap
java·c++·学习
dasi022714 分钟前
Java趣闻
java
阿波罗尼亚1 小时前
Tcp SSE Utils
android·java·tcp/ip
susu10830189111 小时前
springboot3.5.8整合minio8.5.9
java·springboot
不知道累,只知道类1 小时前
深入理解 Java 虚拟线程 (Project Loom)
java·开发语言
myzshare2 小时前
实战分享:我是如何用SSM框架开发出一个完整项目的
java·mysql·spring cloud·微信小程序
Chan162 小时前
【 Java八股文面试 | JavaSE篇 】
java·jvm·spring boot·面试·java-ee·八股
wen__xvn2 小时前
代码随想录算法训练营DAY10第五章 栈与队列part01
java·前端·算法
独自破碎E2 小时前
解释一下NIO、BIO、AIO
java·开发语言·nio