双机热备自动扩容需构建“感知—决策—接入”闭环,确保Keepalived稳住VIP、Nginx动态发现后端、监控精准触发,并满足就绪检查与贴合静态资源特征的扩容逻辑。
双机热备环境下的自动扩容,不是简单加机器再改配置,而是让主备架构具备“感知—决策—接入”闭环能力。Nginx 本身不扩缩容,Keepalived 也不扩缩容;真正的自动扩容,是让新增的后端服务节点能被 Nginx 动态发现、被 Keepalived 稳定承载、被监控系统准确触发。
在双机热备中,Keepalived 管的是虚拟 IP(VIP)漂移,不是服务伸缩。如果扩容时 VIP 频繁切换或延迟响应,用户就会感知中断。所以扩容前要确保:
/etc/keepalived/nginx_check.sh)检测的是 Nginx 进程 + upstream 可达性,不能只 ping 端口eth0:1),和业务流量物理隔离,减少 ARP 冲突风险传统写死 upstream 的方式(server 192.168.1.10:8080;)无法适配自动扩容。你需要让 Nginx 实时感知后端变化:
/v1/health/service/static-srv?passing 列表,零 reload 更新flock -n /tmp/nginx-reload.lock nginx -s reload 防并发重载扩容出来的实例如果一启动就接流量,容易因静态资源未加载、目录权限未就绪、端口监听延迟等问题返回错误。必须做到:
initialDelaySeconds 要大于服务冷启动耗时(如 Python static server 建议设为 5–8 秒)静态资源的负载高峰往往来自突发下载(如新版本 JS 包发布、热点图片传播),不像 API 请求那样均匀。监控指标应侧重:
nginx_stub_status 中 Active connections)比 QPS 更直观$upstream_response_time)突增 3 倍以上,可能预示节点过载