《云主机的亲和性策略》系列,共包含以下文章:
- 1️⃣ 云主机的亲和性策略(一):快乐旅行团
- 2️⃣ 云主机的亲和性策略(二):集群节点组
- 3️⃣ 云主机的亲和性策略(三):云主机 & 宿主机
- 4️⃣ 云主机的亲和性策略(四):云主机组
😊 如果您觉得这篇文章有用 ✔️ 的话,请给博主一个一键三连 🚀🚀🚀 吧 (点赞 🧡、关注 💛、收藏 💚)!!!您的支持 💖💖💖 将激励 🔥 博主输出更多优质内容!!!
云主机的亲和性策略(一):快乐旅行团
本文用「旅行团分车」的比喻来解释云主机组如何实现反亲和性策略,保证同一个组的云主机分散在不同宿主机上。
1.场景设定
目标:一个公司组织 30 名员工(类比 30 台云主机)去春游,为了防止一辆大巴车出事故导致全员受伤,公司要求:
- ✳️ 同一部门的员工必须分散在不同的大巴车上!(这就是反亲和性)
第一步:创建分组规则(云主机组)
- 公司 HR 宣布:
- 本次春游采用 安全分散组 规则!每个部门是一个独立小组,组内成员必须坐不同车辆。
- 这相当于在云平台创建了一个 反亲和性云主机组,策略类型为
Spread
。
第二步:员工报名加入小组(云主机加入组)
- 开发部经理:我们开发部 10 人,加入 "安全分散组"!(相当于创建 10 台云主机时指定加入同一个云主机组)
- 测试部经理:测试部 8 人,也加入这个组!(其他云主机陆续加入同一组)
第三步:调度员分配车辆(云平台调度器)
调度员(类比云平台调度器)手里有:
- 空闲大巴列表:10 辆车(类比 10 台宿主机),每辆车有 50 个座位(类比宿主机资源)。
- 分组规则:同一个部门的员工不能在同一辆车上!
分配过程:
- ✅ 开发部第 1 个员工:随便选一辆车(如 1 号车)坐下
- ✅ 开发部第 2 个员工:调度员检查 1 号车已有开发部的人 → 禁止上车! 只能选其他车(如 2 号车)
- ✅ 开发部第 3 个员工:1 号车和 2 号车已有开发部成员 → 只能选 3 号车
- ...
- ✅ 测试部第 1 个员工:所有车都无测试部成员 → 可坐任意车(如 1 号车)
- ✅ 测试部第 2 个员工:1 号车已有测试部的人 → 换 2 号车
✅ 最终结果:
- 开发部 10 人 → 分散在 10 辆不同的车上(1人/车)
- 测试部 8 人 → 分散在 8 辆车上(1人/车)
- 即使 1 号车抛锚,开发部和测试部各自只损失 1 人!
2.关键角色对应表
春游场景 | 云计算场景 | 作用 |
---|---|---|
员工 | 云主机(VM) | 需要被调度的个体 |
大巴车 | 宿主机(物理服务器) | 承载个体的物理单元 |
安全分散组 | 反亲和性云主机组 | 声明 "组内成员必须分散" 的规则 |
调度员 | 云平台调度器 | 根据规则分配位置 |
车辆抛锚 | 宿主机故障 | 分散部署后,单点故障影响最小化 |
3.为什么不用其他方法?
- 1️⃣ 方法一:员工自由选座(无规则)
- 风险:开发部全员挤上 1 号车 → 车故障则整个部门瘫痪!
- 类比无策略时云主机扎堆在同一宿主机。
- 2️⃣ 方法二:贴标签分组(标签选择器)
- 给每辆车贴标签(如 "
红队车
/蓝队车
"),要求员工按标签选车。 - 问题:员工需自己记住规则,容易出错!(相当于用户需手动管理复杂标签)
- 给每辆车贴标签(如 "
- 3️⃣ 方法三:指定车队(资源池分区)
- 直接规定:"开发部只能坐 1-5 号车,测试部坐 6-10 号车"。
- 缺点:如果开发部只有 2 人,却占用 5 辆车 → 浪费座位!(类比资源碎片化)
4.云主机组的核心优势
- 用户省心:只需说 "加入反亲和组",不用关心底层宿主机在哪。
- 调度高效:调度员(云平台)自动执行分散逻辑,避免人为错误。
- 故障隔离:单台宿主机宕机时,组内其他云主机不受影响(如同部门员工在其他车上安然无恙)。
5.现实中的技术彩蛋
- 如果车辆不够怎么办?
- → 调度员会拒绝最后几名员工上车:"当前没有符合规则的空车!"(云主机创建失败报错)
- 能否有人不守规则?
- → 调度员严格执行规则(硬性反亲和性 ),但也可设置 "
尽量遵守,实在不行挤一挤
" 模式(软性反亲和性)。
- → 调度员严格执行规则(硬性反亲和性 ),但也可设置 "
🚀 总结 :云主机组 💻 就像给虚拟机分配 "分散座位" 的智能旅行团规则 🚌,通过 组策略绑定 + 自动化调度,在底层物理故障时保护你的业务不瘫痪!