说明当前zji香港站群的拓扑(前端负载均衡、多个应用实例、缓存层、数据库主从、CDN)。准备清单:SSH密钥、API凭证(云提供商/监控/CMDB)、自动化工具(Ansible/Terraform)、容器镜像仓库、镜像Tag策略、健康检查URL。
2.明确CPU、内存、请求延迟(P95/P99)、吞吐(RPS)、错误率、队列长度、数据库连接数、磁盘IO、网络带宽。设置初步阈值,例如:P95>800ms 或 错误率>1% 触发告警;CPU>70% 触发扩容评估。
3.根据历史流量曲线和促销预估峰值(并发、RPS),计算所需实例数:所需实例 = 峰值RPS / 单实例承载RPS * 安全系数(1.3)。预留缓存与DB连接池容量,列出最低与目标实例数。
4.在负载均衡层(L4/L7)配置权重、会话保持和健康检查。步骤:在控制台新增路由规则,设置健康端点 /health,配置最小连接数/权重。实现按地域/服务分流并启用灰度路由。
5.静态资源走CDN并延长缓存时间;动态页面采用边缘缓存(Stale-While-Revalidate)。在应用侧增加缓存层(Redis/Memcached),设置热点Key预热脚本:发布前1小时调用模拟请求填充缓存。
6.切换到无状态服务或集中会话存储。步骤:确认Session ID被Cookie传递,部署Redis做Session Store,修改应用配置指向Redis并测试回落,清理本地会话依赖。
7.启用读写分离、增加只读从库,步骤:在DB集群中添加只读节点、配置应用库路由策略,设置连接池上限并监控复制延迟(<100ms为优)。必要时准备只写队列与消息中间件降峰。
8.定义扩容触发器:基于CPU/请求延迟/队列长度的组合触发。实现步骤:1)创建启动模板/镜像;2)配置伸缩组最小/最大/期望实例数;3)定义冷却时间与扩容步长;4)编写健康检查与启动脚本确保服务注册到LB。
9.实现手段:限流(漏桶/令牌桶)、熔断(Hystrix/Resilience4j)、队列异步化。操作步骤:配置API网关限流规则,代码中加入熔断降级逻辑并在非高优先级请求返回友好提示或降级页。
10.使用CI/CD实现镜像构建与自动发布。推荐蓝绿或滚动发布流程:创建新环境或逐实例升级,先在小流量下灰度,验证日志/监控正常后切换流量,支持一键回滚脚本。
11.在预生产或隔离环境按峰值1.2倍进行压力测试(工具:JMeter/k6/Locust)。步骤:1)准备脚本并注入真实场景;2)逐步增压并观察监控阈值;3)记录瓶颈并调整扩容策略;4)做故障演练并核对Runbook。
12.制定SOP:当P95>阈值或错误率飙升时,按顺序:1)触发扩容;2)排查新增发布/配置变更;3)回滚至上一个稳定镜像;4)排空队列并通知业务,记录事件并做事后复盘。
13.通过混合实例类型(按需+抢占/预留)和自动缩容在波谷减少实例数。设置工作日/非工作时间不同策略,利用预测型调度在促销前预拉容器减少冷启动风险。
14.搭建Grafana/Kibana看板显示关键指标,设置复合报警(短信/电话/工单)。报警模板包含发生时间、影响范围、疑似原因与紧急处理步骤,保证值班人员能迅速响应。
15.回答:先通过历史数据计算单实例承载量与延迟临界点,设置多指标复合触发(如P95>700ms且CPU>65%),并以小步进扩容验证效果;避免仅基于单一CPU触发。
16.回答:检查健康检查路径与启动脚本是否完成注册步骤;确认安全组与内网DNS解析,若注册超时可延长健康检查启动等待并在启动脚本中加入重试逻辑。
17.回答:使用自动缩容策略结合预测调度:在促销结束后按流量衰减曲线逐步下调期望实例数并设冷却时间,确保会话迁移完毕;必要时先移除流量再关机实例以避免断单。