1.1 确认需求与指标:并发QPS、响应时延、容忍节点数、RTO/RPO。
1.2 资源清单:列出台湾CN2 VPS的公网IP、内网VPC、API凭证、控制台权限。
1.3 网络与安全:准备安全组规则(TCP 80/443、健康检查端口、SSH),并规划浮动IP或VIP的使用。
2.1 选择负载均衡器:软件LB(HAProxy/Nginx/LVS)适合自建;若云厂商提供托管LB优先使用以减少运维。
2.2 伸缩方式:水平自动伸缩基于API监控触发(CPU、QPS、队列长度),或基于容器编排(Kubernetes HPA);考虑冷启动时间与预热策略。
3.1 建立VPC或私有网络,将前端LB、应用节点、数据库分别放在不同子网。
3.2 配置路由表、NAT(若内网访问互联网)与安全组,仅开放必要端口。示例:安全组允许80/443来自0.0.0.0/0,管理端口仅限指定IP。
4.1 安装:Ubuntu/Debian 执行 apt update && apt install -y haproxy。
4.2 配置示例(/etc/haproxy/haproxy.cfg)要点:定义frontend绑定公网VIP或浮动IP,配置backend为应用服务器池,启用health check选项,例如:
balance roundrobin
option httpchk GET /health
server app1 10.0.0.11:80 check inter 2000 rise 2 fall 3
4.3 重载验证:haproxy -c -f /etc/haproxy/haproxy.cfg && systemctl restart haproxy。
5.1 安装:apt install -y keepalived。
5.2 最小配置片段(/etc/keepalived/keepalived.conf)要定义 vrrp_instance,virtual_ipaddress 使用浮动IP,设置优先级与通知脚本(notify)来操作HAProxy启动/停止。
5.3 测试:kill -9 haproxy 主节点,观察VIP漂移到备用并验证流量不中断。
6.1 监控触发:部署Prometheus采集CPU/响应时间,设定Alertmanager规则触发伸缩脚本。
6.2 自动伸缩脚本步骤:通过云API新建实例 -> 等待ssh可达 -> 拉取镜像/启动服务(Ansible/Cloud-init)-> 将新节点加入LB backend(调用HAProxy API或更新配置并reload)。示例命令:curl -X POST云API创建实例;ansible-playbook deploy.yml --extra-vars "host=newip"。
6.3 缩容策略:先从LB中drain节点(设置server state maint或移除),等待会话清空,再关机并删除实例。
7.1 拓扑:主从异步或半同步复制,建议异地至少一个只读从。
7.2 配置要点:开启binlog、设置server-id、配置replicate-do-db,使用GTID可简化故障切换。
7.3 演练与备份:定期备份(mysqldump或xtrabackup),异地备份到对象存储,验证备份还原流程。
8.1 无状态优先:将会话储存在Redis或Memcached,应用通过环境变量连接。
8.2 文件共享:使用对象存储(S3兼容)或NFS/GlusterFS作为共享文件系统,注意性能与并发限制。
9.1 监控项:CPU、内存、磁盘、连接数、响应时延、健康检查失败数、LB后端状态。
9.2 告警与自动化:结合PagerDuty/钉钉推送,关键阈值触发自动伸缩或故障切换脚本。
9.3 定期演练:每季度进行一次容灾演练,包含主节点下线、数据库主从切换、VIP漂移和缓存穿透检测。
10.1 日志与审计:集中收集LB与应用日志到ELK/EFK,保留策略满足审计需求。
10.2 安全:启用TLS(Let's Encrypt或自有证书),HSTS,WAF策略,限制管理入口IP。
10.3 性能优化:打开keepalive、调优TCP参数(net.ipv4.tcp_tw_reuse等)、设置合理超时。
11.1 健康检查失败:curl -I http://backend:health 查看返回码,检查应用日志。
11.2 VIP漂移问题:检查keepalived日志(/var/log/syslog),确认vrrp状态和优先级设置。
11.3 数据不一致:检查replication延迟 SHOW SLAVE STATUS\G,必要时使用pt-table-checksum核对。
12.1 预留实例与按需结合,根据业务峰谷自动伸缩减少闲置成本。
12.2 使用对象存储替代块存储做冷数据备份,定期清理临时实例与未使用快照。
答:优先使用CN2 GIA或类似高质量线路,配置多点出口与校验路由;在不同可用区布置热备并使用CDN做边缘缓存,落地DNS采用健康路由(如多A记录+短TTL或GSLB)以实现故障自动切换。
答:使用VIP漂移加上会话drain机制:在主备切换前将主节点后端标记drain并等待会话清空,再触发keepalived切换;同步配置与监控,保证切换脚本能在切换瞬间平滑关闭连接并启动后端服务。
答:依赖两大件:稳定监控(Prometheus)与可编排的镜像/模板(Cloud-init/Ansible/Kubernetes)。通过Alert规则触发云API创建实例并完成配置,使用LB API动态加入新节点;缩容前先从LB draining并监测会话,确认安全后再删除实例,且要定期演练冷启动时间和预热策略。