1. 背景与目标说明
在香港部署站群的主要目标是低延迟、合规与面向中国大陆及国际用户的高可用性。目标:保证服务99.9%可用、按需扩展到数十台实例、快速故障切换。本文以实操步骤为主,覆盖L4/L7负载均衡、Keepalived高可用、DNS/Anycast策略、会话与存储设计、监控与自动化。
2. 架构总体设计(分层)
建议分三层:接入层(DNS/Anycast/CDN)、负载均衡层(L4-LVS或L4云LB + HAProxy/Nginx L7)、应用层(香港多台应用实例)与数据层(主从或组复制数据库)。分段实施:先做单机LB + 后端,再增加Keepalived实现VRRP、最后加入DNS层做地理流量分配。
3. 选择负载均衡方案及权衡
列出方案:L4(LVS/云LB)优点:性能高、透明;L7(HAProxy/Nginx)优点:可做路由与会话、SSL终端。实操建议:用L4做北向接入(高并发),L7做业务路由与SSL卸载。Keepalived实现LB节点冗余。
4. 在香港节点准备服务器(步骤)
清单:至少两台LB节点、2-4台应用服务器、1-2台数据库从库、监控节点。操作步骤:1) 采购含公网IP的香港机房线;2) 初始化系统(Ubuntu/CentOS),关闭不必要服务;3) 配置防火墙(仅放行80/443/TCP业务端口和管理端口);4) 同步时钟与安装监控agent。
5. 实战:安装HAProxy与Keepalived(命令示例)
步骤详解:1) 安装软件(Ubuntu举例):apt update && apt install -y haproxy keepalived;2) 配置HAProxy:在 /etc/haproxy/haproxy.cfg 定义frontend与backend,示例:frontend http-in bind *:80 default_backend app_pool; backend app_pool balance roundrobin server app1 10.0.0.11:80 check inter 2000 fall 3 rise 2;3) 配置Keepalived:/etc/keepalived/keepalived.conf 定义vrrp_instance并设置virtual_ipaddress为VIP;4) 启动并验证:systemctl enable --now haproxy keepalived;5) 在两台LB上调整优先级(1号主:priority 150,2号备:100)。
6. 配置示例:Keepalived 最小配置
在主节点的keepalived.conf写法(要点):
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 150
advert_int 1
authentication { auth_type PASS; auth_pass 1111; }
virtual_ipaddress { 203.x.x.x }
}
备节点把 state 改为 BACKUP,priority 100。启动后用 ip addr show 查看VIP漂移。
7. HTTP层会话粘性与SSL处理
会话粘性:HAProxy可以通过cookie或stick-table实现。示例:
backend app_pool
cookie SERVERID insert indirect nocache
server app1 10.0.0.11:80 cookie s1 check
SSL:推荐在L7做SSL终止,证书放在HAProxy或Nginx上,后端用HTTP通信或内网自签。
8. 应用层扩展与自动化步骤
水平扩展步骤:1) 将新主机按同样镜像(镜像化部署或容器)加入负载池;2) 在HAProxy后端新增server行或用服务发现(Consul、DNS SRV)自动更新;3) 若使用云平台,配置自动扩容策略(CPU/RT/请求并发阈值);4) 测试入池:在新机器上部署健康检查接口 /healthz 返回200。
9. DNS与Anycast策略(减少单点)
步骤:1) 将域名托管在支持GeoDNS或API修改的DNS服务商;2) 设置低TTL(例如60s)便于快切;3) 使用Anycast或多地A记录:在香港和海外不同LB提供不同优先级;4) 对于香港站群,若面向大陆用户可使用CDN + GeoDNS将流量导向最近节点。
10. 数据库高可用与会写流量策略
建议:采用主从复制或group replication。步骤:1) 搭建MySQL主从,配置binlog与server-id;2) 后端读写分离,通过ProxySQL或应用层路由把写请求发给主库;3) 配置备库提升策略(自动failover使用MHA、Orchestrator);4) 定期做延迟监测与备份(mysqldump或物理备份)。
11. 健康检查、监控与告警
部署Prometheus + node_exporter + haproxy_exporter + grafana:1) 在每台节点安装exporter并在Prometheus中scrape;2) 关键指标:后端健康数、请求延迟、CPU/内存、VIP状态;3) 配置告警规则(VIP丢失、后端全掉、响应码上升);4) 建立SLA & 运行手册,包括手工切换VIP、回滚步骤。
12. 故障演练与日常维护步骤清单
每季度进行演练:1) 模拟LB主机断电,验证VIP漂移并观察流量恢复;2) 模拟后端全故障,验证告警并检查DNS快速切换;3) 演练数据库主库故障并完成主从切换;4) 维护清单:证书到期检查、系统补丁、备份校验。
13. 问:为什么要在香港站群中同时使用L4与L7负载均衡?
在香港场景中,L4(LVS或云LB)提供高吞吐与低延迟的接入能力,适合大量并发;L7(HAProxy/Nginx)则提供更细粒度的路由、SSL卸载和会话控制。两者结合可以在保证性能的同时实现业务级别的智能路由与安全策略。
14. 问:如何保证会话粘性在扩容/故障切换时不丢失用户会话?
常见做法是将会话状态外置到共享存储或分布式缓存(如Redis)。步骤:1) 在应用中把session写入Redis并配置高可用(哨兵或Cluster);2) 在HAProxy使用基于cookie的粘性作为短时优化;3) 扩容时确保新实例能访问同一Redis池,故障切换不影响会话。
15. 问:实施过程中常见的坑与预防措施有哪些?
常见问题包括VIP漂移延迟、健康检查逻辑不严导致误剔除、DNS TTL过长导致切换慢、数据库主从延迟。预防措施:合理设置health check间隔与阈值、将DNS TTL设低、定期演练切换、监控延迟并使用异地灾备。
来源:结合负载均衡技术放大香港站群服务器优点提升可用性和扩展性