1. 概述与目标
- 目标:在联通云WAF保护下,安全、可控地维护或变更源站IP,构建通知与验证链路避免业务中断。
- 范围:适用于公网源站IP变更、机房迁移、负载均衡切换等场景。
- 输出:变更清单、通知模板、自动/手动验证步骤、回滚策略。
2. 变更前准备清单(必做)
- 导出当前配置:登录联通云WAF控制台 -> 源站管理 -> 导出源站IP列表与端口、健康检查规则与白名单。
- 记录依赖:列出DNS记录、CDN/负载均衡、ACL、云防火墙与本地防火墙规则。
- 联系人与时间窗:确定变更窗口、应急联系人、责任人(工单、电话、IM)。
3. 通知机制设计(人员与系统)
- 人员层:编写通知模板(标题、变更时间、影响范围、回滚点、联系人),通过邮件+企业微信+电话三渠道发布。
- 系统层:配置自动化通知(监控告警 -> 钉钉/企业微信机器人 / 邮件),并在变更开始/结束/异常时自动触发。
- 订阅管理:在运维系统维护订阅列表(业务方、SRE、客服、联通云联系人)。
4. DNS与TTL策略(避免缓存导致中断)
- 缩短TTL:变更前48小时内将相关域名TTL降到60-300秒(根据流量)。
- 批次切换:先切换少量流量验证,再扩大。若使用CNAME的CDN,确认CNAME解析链路无误。
- 验证:使用 dig/nslookup 多节点查询,确保新解析生效。
5. WAF控制台与ACL更新步骤
- 登录:联通云控制台 -> WAF -> 源站/回源策略。
- 新增源站IP:在“源站池”中新增目标IP与端口,保存并应用到对应的防护策略。
- 白名单/黑名单:在WAF与云防火墙同时确认回源白名单,确保WAF IP和负载均衡可访问源站。
- 下线旧IP:待验证正常后再从源站池移除旧IP,避免提前删除。
6. 源站服务器防火墙与系统配置同步
- 本地防火墙:示例命令:iptables -A INPUT -p tcp -s 新IP/32 --dport 80 -j ACCEPT;或 ufw allow from 新IP to any port 443。
- 云安全组:在云主机/负载均衡安全组中添加联通
云WAF与新回源IP的入站规则。
- 应用绑定:确认应用绑定的IP或Host配置(nginx listen/virtualhost)允许新IP访问。
7. 自动化与脚本化(降低人为错误)
- 使用脚本:编写部署脚本(bash/Ansible/Terraform)实现:修改WAF源站、更新安全组、发送通知、验证接口。
- API调用:若联通云提供API,调用WAF源站更新接口;示例伪代码:POST /waf/origins { "ips":["x.x.x.x"] } 并检查返回status。
- 日志/审计:脚本记录变更ID与时间,便于回滚追踪。
8. 验证与回归测试(逐步放量)
- 单点验证:通过hosts临时指向源站IP并用 curl -H "Host: domain" http://源站IP 验证响应。
- 流量放量:先切10%流量到新源站(负载均衡或DNS策略),监控错误率/响应时间。
- 性能监控:监控WAF日志、源站CPU/内存、应用日志以及外部合规告警。
9. 回滚与异常处理流程
- 回滚预置:变更前准备回滚脚本(恢复旧IP、恢复TTL、通知回滚)。
- 触发条件:错误率超过阈值、后端不可达、用户大面积报错时立即回滚。
- 事后分析:变更结束后进行事件复盘,更新变更文档与联系人。
10. 常用通知模板与示例(变更/完成/异常)
- 变更通知模板:包含:变更ID、开始/结束时间、影响域名、旧IP->新IP、验证步骤、联系人电话。
- 完成通知:标注结果、观察期、回滚关闭时间。
- 异常通知:直接标注回滚已执行、影响范围与客户沟通建议。
11. 运维检测脚本参考
- 简易健康检查脚本(bash):curl -s -o /dev/null -w "%{http_code}" -H "Host:domain" http://新IP:80 并判断200返回。
- 自动报警:检测失败>=3次则调用告警Webhook并回滚。
12. 常见注意事项与最佳实践
- 不要同时修改WAF与DNS:顺序为先更新WAF/回源配置,验证后再改DNS。
- 保留旧IP作为备份至少24小时,观察完整TTL周期。
- 与联通云负责人员保持沟通渠道,记录变更工单号。
13. 问:如果变更后用户大量报错,第一时间我该做什么?
14. 答:立即触发回滚并告知相关方
- 立刻执行回滚脚本恢复旧源站IP并将DNS TTL重新恢复到变更前值,同时通过电话/IM通知客服与SRE。
- 同时检查WAF日志和源站应用日志定位根因,确定是网络、配置还是应用层问题,再决定下一步。
15. 问:如何在不影响线上流量情况下验证新源站?
16. 答:采用分流与hosts临时验证
- 通过负载均衡或者DNS按权重分流小部分流量到新源站进行验证;或在运维机上修改 /etc/hosts 将域名指向新IP做功能测试,避免影响真实用户。
- 放量时持续监控,确认指标稳定后再全量切换。
17. 问:如何保证通知不遗漏对接方?
18. 答:多渠道+订阅机制+反馈确认
- 使用邮件+企业微信/钉钉机器人+电话三渠道发送,并在通知中要求接收方回执(回复“已收”)。
- 对关键业务建立订阅白名单,变更前由系统自动验证所有关键联系人已确认。