1) 硬件与网络:准备至少2个台湾机房节点(实际生产建议3个及以上)以及1-2个国内/边缘转发节点,确保机房间有稳定的联通出口和公网带宽。
2) 系统与防火墙:各节点装好Linux(如CentOS/Ubuntu),关闭不必要服务,配置防火墙开放80/443/TCP负载端口与健康检查端口(例如9000)。
3) 证书与时钟:统一时钟(ntp),准备好SSL证书以便在负载层做TLS终止或透传。
1) 逻辑分层:建议采用GSLB(DNS层) + 边缘LB(如HAProxy/Nginx/LVS)+ 后端应用节点的三层模型,DNS做地域/ISP分发,边缘LB做会话/连接分配。
2) 会话策略:区分无状态API(直接轮询)与有状态服务(采用cookie或源IP绑定)。
3) 健康检查与故障切换:DNS短TTL并结合主动健康监测,边缘LB配置主动探测和权重调整。
1) 安装:apt/yum install haproxy,并把systemd服务启用。
2) 基本配置示例(/etc/haproxy/haproxy.cfg):
global
log /dev/log local0
defaults
timeout connect 5s
frontend http-in
bind *:80
default_backend webservers
backend webservers
balance roundrobin
option httpchk GET /health
server taiwan1 10.0.0.1:80 check
server taiwan2 10.0.0.2:80 check backup
3) 粘性会话:使用 cookie 或 source。例如:cookie SRV insert indirect nocache。
1) 安装Keepalived并在两台LB上配置虚拟IP(VIP),确保VIP在主备之间漂移。
2) 简单配置片段(/etc/keepalived/keepalived.conf):
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
virtual_ipaddress { 203.0.113.10 }
}
3) 健康脚本:配置notify或track_script,以便当HAProxy异常时降低优先级触发切换。
1) DNS策略:使用GSLB或GeoDNS,按源IP归属网段、ASN或国家进行调度,针对联通用户优先选择联通直连的台湾节点。
2) TTL与故障策略:将TTL设为30-60秒,配合健康状态上报使客户端快速切换。
3) Anycast与BGP:若有条件,使用Anycast+BGP在不同机房宣告相同前缀以缩短联通路径延迟,并与台湾运营商做好对端路由协商。
1) 健康检查:后端实现/health或tcp端口探测;HAProxy/Nginx应配置主动检查并根据响应码自动下线节点。
2) 监控:部署Prometheus+Grafana或Zabbix,采集连接数、响应时延、错误率、带宽等指标;设置告警触发阈值。
3) 自动伸缩:在云环境可基于监控指标触发实例扩缩容,同时自动注册/注销到LB。
1) 单点功能测试:从内网和联通出口分别curl VIP/各节点的健康接口,确认返回200并测延迟。
2) 故障演练:停用一台后端,验证HAProxy将其标记为DOWN且流量切换;再切换Keepalived优先级验证VIP漂移。
3) 压力与回归:使用ab/jMeter或wrk做并发压测,观察连接队列、超时和资源使用,调整keepalive、worker数量与内核参数(net.ipv4.tcp_tw_reuse等)。
问:如何确保联通用户访问台湾节点时路径最优?
答:结合GSLB按客户端ASN/ISP识别并返回最优节点;若条件允许用Anycast+BGP在各地机房宣布相同前缀并与联通交换路由,使联通用户在最近出口被引导到最近机房。
问:在会话粘性和负载均衡之间如何权衡?
答:优先设计无状态服务以利于扩展;若需粘性,使用HAProxy的cookie或每台应用共享会话存储(Redis),避免长期固定绑定导致单点瓶颈。
问:部署过程中容易忽略的安全与性能细节有哪些?
答:常见忽略项包括MTU/Path MTU导致的数据包分片、异常流量防护(建议在LB端做速率限制与WAF接入)、以及TLS会话复用或OCSP加速;同时要监控并发连接与文件描述符上限,避免FD耗尽。