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

相关推荐
Lizhihao_5 分钟前
JAVA-堆 和 堆排序
java·开发语言
极客先躯10 分钟前
高级java每日一道面试题-2025年3月21日-微服务篇[Nacos篇]-什么是Nacos?
java·开发语言·微服务
工业互联网专业18 分钟前
基于springboot+vue的动漫交流与推荐平台
java·vue.js·spring boot·毕业设计·源码·课程设计·动漫交流与推荐平台
雷渊21 分钟前
深入分析Spring的事务隔离级别及实现原理
java·后端·面试
rebel32 分钟前
Java获取excel附件并解析解决方案
java·后端
并不会44 分钟前
多线程案例-单例模式
java·学习·单例模式·单线程·多线程·重要知识
数据攻城小狮子1 小时前
Java Spring Boot 与前端结合打造图书管理系统:技术剖析与实现
java·前端·spring boot·后端·maven·intellij-idea
m0_555762901 小时前
struct 中在c++ 和c中用法区别
java·c语言·c++
HongXuan-Yuan1 小时前
系统设计:高并发策略与缓存设计
java·分布式·高并发
Alt.91 小时前
MyBatis基础五(动态SQL,缓存)
java·sql·mybatis