目录
[二、弹性伸缩 ESS + 与 ALB 联动](#二、弹性伸缩 ESS + 与 ALB 联动)
一、ECS
1、一台生产 ECS 的标准生命周期
规划(VPC/规格/标签)
→ 创建(私网、安全组、密钥)
→ 初始化(数据盘、Agent、基线)
→ 纳管(监控、快照、堡垒机)
→ 服役(发布、扩容、变更)
→ 退役(备份 → 下线 → 释放/归档镜像)
企业里很少"开一台机随便玩",而是按这个闭环管理。
2、实操
1:挂载并使用数据盘(Linux)
目标:业务数据放 /data,和系统盘分开。
1)控制台挂载
- ECS 实例 → 块存储 → 挂载云盘
- 选同可用区的数据盘
- 建议:生产数据盘 不要 轻易勾选"随实例释放"(防误删实例丢数据)
2)初始化(空盘才格式化)
bash
# 看盘符(常见 vdb / nvmeXn1)
lsblk
# 分区(示例:整盘一个区,按实际盘符改)
sudo fdisk /dev/vdb
# 格式化
sudo mkfs.ext4 /dev/vdb1
# 挂载
sudo mkdir -p /data
sudo mount /dev/vdb1 /data
3)开机自动挂载
写入 /etc/fstab(建议加 nofail,避免盘异常导致开不了机):
bash
sudo cp /etc/fstab /etc/fstab.bak
# 用 UUID 挂载更稳(先 blkid 查 UUID)
echo 'UUID=xxxx-xxxx /data ext4 defaults,nofail 0 2' | sudo tee -a /etc/fstab
sudo mount -a
有数据的盘:禁止再次 mkfs,只挂载即可。
2:快照与回滚
自动快照
- 快照 → 自动快照策略
- 示例:每天
02:00,保留7天 - 绑定到系统盘 + 数据盘
- 避开业务高峰
手动快照(变更前)
升级、改配置、重装前:先对手动打快照,写清楚备注:2026-07-29 before-nginx-upgrade。
回滚注意
- 回滚云盘通常要停机窗口
- 回滚会回到快照时间点,之后的数据会丢
- 先确认快照时间、再操作
3:自定义镜像(黄金镜像)
目的:新机器环境一致,开箱即用。
推荐流程:
- 用一台"样板机"装好:
监控 Agent、安全 Agent、运行时、日志采集、常用工具 - 清理临时文件、历史密钥(别把私钥打进镜像)
- 实例上 创建自定义镜像(或系统盘快照转镜像)
- 以后批量开机器都选这个镜像
检查清单:
/etc/fstab与数据盘情况匹配- 云助手在线
- 主机名/机器码类配置不要写死冲突项
- 镜像命名:
prod-base-alinux3-20260729
官方:从实例创建自定义镜像
4:云助手批量运维
云助手 = 不用 SSH 登录,也能在机器上跑命令/脚本。
企业用途:
- 批量装包、改配置
- 应急采集日志
- 配合 OOS 做标准化变更
使用前确认实例 云助手 Agent 在线。
比"每个人都 SSH 上去改"更可控、可审计。
5:升降配与扩容
| 需求 | 做法 |
|---|---|
| CPU/内存不够 | 实例 升降配(常需停机) |
| 磁盘满了 | 云盘 扩容 + 系统内扩文件系统 |
| 临时流量高 | 加机器 + SLB,或弹性伸缩 |
| 长期稳态降本 | 换更合适规格 / 付费方式 |
企业注意:
- 生产升降配要变更窗口
- 先看监控:到底是 CPU、内存,还是磁盘 IO/网络瓶颈
- 升配前打快照
6:监控告警(最少要开)
在 CloudMonitor / ECS 监控里,建议至少:
| 指标 | 建议阈值思路 |
|---|---|
| CPU 使用率 | 持续 > 80% 告警 |
| 内存使用率 | 持续偏高告警 |
| 磁盘使用率 | > 85% 告警 |
| 磁盘 inode | 防"空间还在但无法建文件" |
| 网络流量/连接数 | 异常突增 |
告警接到:钉钉/短信/电话 + 值班人。
只看监控不够,重要应用还要有日志(SLS)和健康检查(SLB)。
3、日常操作手册(可当 checklist)
A. 新应用上线(2 台起步)
- 双可用区各 1 台 ECS(同镜像、同规格)
- 加入同一后端服务器组 / SLB
- 安全组只放行 SLB 与堡垒机
- 绑定自动快照 + 监控告警
- 打标签:
env=prod app=xxx owner=xxx - 走一次故障演练:停一台,看 SLB 是否切走
B. 变更发布
- 打快照 / 确认可回滚
- 先改 1 台(或灰度)
- 观察监控与日志
- 再全量
- 记录变更单
C. 磁盘告警处理
- 查是哪个分区满
- 清日志/扩容云盘
- 扩容后 系统内 也要扩文件系统
- 复盘是否日志轮转没配好
D. 机器要释放
- 确认无唯一数据(或已备份)
- 需要时保留自定义镜像/快照
- 从 SLB/域名摘流
- 再停机释放
- 检查是否还有未删快照持续计费
4、常见故障速查
| 现象 | 先查什么 |
|---|---|
| 连不上 | 安全组、ACL、是否在私网、堡垒机白名单、实例是否运行中 |
| 能连但访问不了网站 | 进程是否起来、安全组端口、SLB 健康检查、本机防火墙 |
| 很卡 | CPU/内存/磁盘 IO/带宽,是否被打满 |
| 重启后 /data 没了 | fstab 未配置自动挂载 |
| 突然变慢 | 是否在打快照、云盘性能水位、邻居干扰少见时看监控 |
| 权限调 API 失败 | 是否绑了实例 RAM 角色、角色策略是否够 |
5、和 RAM / VPC / 堡垒机再串一次
- RAM:运维用子账号+MFA 登录控制台
- VPC:ECS 在私网交换机,无公网 IP
- NAT:需要时统一出网
- SLB/ALB:统一入口,双 AZ 后端 ECS
- 堡垒机:人登录机器的唯一正规入口
- 快照/镜像:备份与复制标准环境
- 角色 STS:程序无 AK 访问云产品
小结
ECS 用起来的关键不是"会买",而是:盘分开、快照在、镜像标准、监控告警、双机多 AZ、变更可回滚。
二、弹性伸缩 ESS + 与 ALB 联动
目标:流量变大自动加机器,变小自动减机器;新机器自动进 ALB,下线机器自动从 ALB 摘掉。
官方参考:什么是弹性伸缩 · ESS 为 ALB 自动加减后端
1、解决的问题
固定 2 台 ECS 的问题:
- 大促时不够用 → 要人手忙脚乱加机器,还要手动挂到 ALB
- 低谷时太浪费 → 机器空转还在花钱
- 手动加减容易漏:机器加了但没进 ALB,或缩容了但流量还在打
ESS + ALB 的效果:
用户 → ALB → 后端服务器组(自动增减的 ECS 们)
↑
ESS 伸缩组
(忙了扩容,闲了缩容,并自动登记/摘除 ALB)
2、ESS 核心零件
| 概念 | 大白话 |
|---|---|
| 伸缩组 | 一队可扩可缩的机器群,有最小/最大台数 |
| 伸缩配置 / 启动模板 | "新机器长什么样"的模板(规格、镜像、安全组、交换机...) |
| 伸缩规则 | 一次加减几台,或调到多少台 |
| 报警任务 | 看监控(如 CPU),到阈值就执行规则 |
| 定时任务 | 到点加减(如每天 9 点扩、22 点缩) |
和 ALB 的关系:
伸缩组关联 ALB 服务器组 后:扩容实例自动加入服务器组;缩容实例自动移出。
3、联动全景图
① 创建 ALB + 监听 + 服务器组(开启健康检查)
② 创建伸缩组(多可用区交换机)并关联该服务器组
③ 创建伸缩配置(用你的黄金镜像)
④ 启用伸缩组,设最小/期望/最大实例数
⑤ 配置报警:CPU 高 → 扩容;CPU 低 → 缩容
⑥ 观察:新 ECS 自动出现在 ALB 后端;缩容时自动消失
前提硬条件:
- 伸缩组与 ALB 服务器组在同一 VPC
- ALB 监听已配,且服务器组健康检查已开
- 业务必须支持横向扩展(无状态或状态外置到 Redis/RDS/OSS)
4、企业级落地步骤
步骤 0:业务先"可扩"
不适合硬上 ESS 的情况:
- 本地磁盘存关键会话/文件
- 单机定时任务会重复跑多份
- 强依赖固定 IP
先做到:会话进 Redis,文件进 OSS,配置进配置中心,任务有分布式锁或独立调度。
步骤 1:准备 ALB
- 创建 ALB(建议至少 2 个可用区)
- 创建 服务器组(类型选 ECS/IP,按实际)
- 配置 健康检查(如 HTTP
/health,或 TCP 端口) - 创建监听:如 HTTPS:443 → 转发到该服务器组
- 安全组:ECS 放行来自 ALB/相应网段的业务端口
健康检查失败的机器,ALB 不会把流量打上去------这是弹性安全网。
步骤 2:创建伸缩组(关联 ALB)
关键配置示例:
| 项 | 建议 |
|---|---|
| 类型 | ECS |
| 网络 | 你的生产 VPC |
| 交换机 | 至少 2 个可用区(库存与容灾) |
| 最小实例数 | 如 2(保底高可用) |
| 最大实例数 | 如 10(成本天花板) |
| 期望实例数 | 如 2(当前目标) |
| 关联 ALB 服务器组 | 选上一步的组 |
| 端口 / 权重 | 如 80 / 50(权重 0 = 不接流量) |
| 扩缩容策略 | 多 AZ 可用 均衡分布(更均匀)或优先级策略 |
启用后:组内实例会自动登记到 ALB 服务器组。
官方:创建 ECS 伸缩组
步骤 3:创建伸缩配置(机器模板)
伸缩配置决定"扩出来的机器长啥样":
- 镜像:自定义黄金镜像(已含应用/Agent)
- 规格:可填多个规格做库存兜底(如
g/c相近规格) - 安全组:与现网一致
- 系统盘/数据盘:按模板
- 登录凭证、标签:
env=prodapp=xxxmanaged-by=ess - (推荐)实例 RAM 角色
镜像里应用最好开机自启;或用云助手/用户数据脚本拉起服务。
否则机器进了 ALB,健康检查会一直失败。
步骤 4:伸缩规则 + 报警任务(自动加减)
扩容规则示例: 每次增加 1 台(或 2 台)
缩容规则示例: 每次减少 1 台
报警任务示例:
| 任务 | 指标条件 | 动作 |
|---|---|---|
| 扩容 | 伸缩组 CPU 平均值 ≥ 70%,持续 3~5 分钟 | 执行扩容规则 |
| 缩容 | 伸缩组 CPU 平均值 ≤ 30%,持续 10~15 分钟 | 执行缩容规则 |
也可用 ALB 相关指标(如单机 QPS)做更贴近业务的伸缩。
冷却时间(Cooldown):刚扩完别立刻再缩/再扩,避免来回抖。
企业常见:扩容冷却短一点,缩容更保守(防抖)。
步骤 5:验证联动是否成功
- 把期望实例数从 2 改成 3 → 应新建 1 台 ECS
- 到 ALB 服务器组看后端:应出现新实例(名称常带 ESS 相关特征)
- 等健康检查变健康 → 开始接流量
- 压测抬高 CPU → 触发扩容
- 降压后 → 触发缩容,实例从服务器组移除并释放/回收
官方案例:使用伸缩组为 ALB 加减后端
5、扩缩容时实际发生了什么
扩容
报警触发 → ESS 按伸缩配置创建 ECS
→ 实例加入伸缩组
→ 自动加入 ALB 服务器组(指定端口/权重)
→ ALB 健康检查通过
→ 开始分发流量
缩容
报警触发 → ESS 选中要移除的实例
→ 从 ALB 服务器组摘除(停止接新流量)
→ (可配)等待连接排空/生命周期钩子做优雅下线
→ 释放或转入停机回收模式
企业进阶:用 生命周期挂钩,缩容前先调接口摘流、落盘、报就绪,再真正删除。
6、企业级注意事项(很重要)
- 最小台数 ≥ 2,且跨 AZ:弹性不等于取消高可用保底
- 最大台数必须设:防止误配或被打爆后无限扩、费用失控
- 缩容要保守:指标要持续一段时间再缩,避免抖动
- 健康检查路径要轻量且真实:
/health应代表"能干活" - 新实例要能自举:镜像或启动脚本保证服务自动起来
- 无状态优先:有状态组件(DB)不要丢进同一个盲目伸缩组
- 成本:ESS 本身通常不单独收服务费,但 ECS/ALB/流量照常计费
- 库存:多规格 + 多交换机,降低"要扩却没货"失败率
7、三种触发方式怎么选
| 方式 | 适合 | 例子 |
|---|---|---|
| 报警(动态) | 负载不可预测 | CPU/QPS 高了加机器 |
| 定时 | 规律高峰 | 工作日 8:30 扩到 6 台,21:00 缩到 2 台 |
| 手动/改期望数 | 活动保障、演练 | 大促前先手动扩到 8 台 |
企业常组合:保底最小数 + 定时抬底座 + 报警做尖峰。
8、和 NLB / CLB 的关系
- ALB:Web/API,关联的是 ALB 服务器组(重点)
- NLB:四层高并发,也可关联 NLB 服务器组
- CLB:传统型,关联 CLB 实例/后端组
新 HTTP 业务优先 ESS + ALB。
小结
ESS 管"机器数量变不变",ALB 管"流量怎么分"。
两者联动后:忙自动加并挂载,闲自动摘并减机------前提是应用无状态、健康检查可靠、多 AZ 保底、最大数控成本。