1.1 明确目标:在新加坡区域通过多节点部署保持业务可用并抵御DDoS。
1.2 节点准备:至少准备3台高防服务器(不同物理机房或不同网络出口),1-2台管理机。建议选择提供BGP Anycast或多线接入的机房。
1.3 工具准备:ssh、Ansible、监控(Prometheus)、日志(ELK/EFK)、Redis、MySQL或Galera。
2.1 Anycast优先:如果供应商支持Anycast,将公网IP通过Anycast公布到多节点,可在网络层实现就近调度和抗攻击。
2.2 DNS低TTL + 健康检测:若无Anycast,使用多A记录+低TTL(30s)和第三方DNS健康检查(如DNSMadeEasy/Route53)实现故障切换。
2.3 BGP/多线:对外出口多ISP,配置不同BGP社区或AS策略,减少单链路故障风险。
3.1 软件LB:在每个可用区部署HAProxy或Nginx作为反向代理。示例:apt install haproxy; /etc/haproxy/haproxy.cfg写入backend与health check。
3.2 虚拟IP与VRRP:在同一可用区用Keepalived实现主备VIP。示例keepalived.conf定义vrrp_instance、state/priority、notify脚本并systemctl enable keepalived。
3.3 配置示例片段:haproxy backend health check option httpchk GET /health; server app1 10.0.0.2:80 check; 在keepalived中指定notify脚本用于修改本机路由或触发告警。
4.1 无状态优先:尽量将应用改为无状态,静态文件上云或放CDN。
4.2 会话集中化:使用Redis做会话存储(配置客户端使用redis://ip:6379/),并在所有应用节点使用相同Redis集群。
4.3 粘性策略:若必须使用粘性会话,HAProxy可配置cookie或src-based stick-table,但仍需准备session同步方案。
5.1 数据库复制:对MySQL可用主从+自动故障转移(使用MHA/Orchestrator)或Galera多主同步;示例同步命令:CHANGE MASTER TO MASTER_HOST='master_ip',...; START SLAVE;。
5.2 文件同步:小文件用rsync+cron或lsyncd实时同步,大文件推荐对象存储(S3/MinIO)并做跨节点复制。
5.3 备份策略:每日全备+小时增量,且备份存放到不同区域或对象存储。
6.1 监控项:流量、CPU、连接数、带宽异常、丢包、健康检查失败、数据库延迟。部署Prometheus + node_exporter + blackbox exporter。
6.2 告警与自动化:Alertmanager规则推送到钉钉/Slack/短信,关键告警触发自动切换脚本(如对VIP降级或修改DNS)。
6.3 演练:每月演练一次节点下线、模拟DDoS(限自有流量)并验证切换时间与恢复步骤。
答:先看是否有Anycast:若有,攻击会在多个边缘吸收,配合流量清洗可在网络层丢弃垃圾流量;若无Anycast,使用第三方清洗(上游清洗或云防护)并把受影响IP从DNS轮询中短暂移除或降低优先级。操作步骤:1) 启用清洗服务;2) 通过DNS低TTL移出受压节点;3) 触发备用机房或CDN接管。
答:采用同步或半同步复制(Galera或MySQL半同步)保证写入确认;配置自动故障转移与可见的延迟阈值(如延迟>1s暂停切换)。平时做主备演练并验证binlog与gtid一致性,备份异地保存,切换时优先promote延迟最小且与大多数节点一致的副本。
答:关键清单:1) 各节点时间同步与安全加固(防火墙、限流);2) LB+VRRP配置并验证VIP漂移;3) 健康检查通过并在DNS或Anycast上生效;4) 会话外置(Redis)与DB复制正常;5) 监控告警策略就绪;6) 演练脚本可执行。首次上线按顺序:配置网络->部署LB->部署应用->开启监控->小流量灰度->全量切换。