1.
目标与前期准备
目标:在香港机房实现多节点站群的高可用与流量均衡,支持HTTP/HTTPS和TCP服务。准备工作包括:购买或部署至少3台应用节点(可扩展)、1-2台负载均衡器(HAProxy 或 NGINX)、1台或托管DNS、监控与日志服务器。建议带宽、公网IP和机房延迟测试先行。
2.
网络与主机基础优化
步骤:1)开启网卡绑定(bonding):编辑 /etc/modprobe.d/bonding.conf 并配置 /etc/network/interfaces。2)调整内核参数(示例):sysctl -w net.ipv4.tcp_tw_reuse=1; net.ipv4.ip_forward=1; net.core.somaxconn=65535。3)调整文件句柄:ulimit -n 200000 并修改 /etc/security/limits.conf。
3.
选择负载均衡层次与策略
说明:推荐采用二层策略:边缘使用DNS+CDN做粗调度(GeoDNS或权重RR),边内用HAProxy做细粒度流量分配。调度算法:HTTP使用轮询、最少连接;TCP服务优先使用最少连接或源IP哈希以保持会话亲和性。
4.
HAProxy基础配置示例(HTTP)
示例配置步骤:安装apt-get install haproxy;编辑 /etc/haproxy/haproxy.cfg:
global 和 defaults 设置超时;
frontend http-in bind *:80
acl is_web hdr_beg(host) -i example.com
use_backend web-backend if is_web
backend web-backend
balance leastconn
option httpchk GET /health
server web1 10.0.0.1:80 check inter 2000 rise 2 fall 3
server web2 10.0.0.2:80 check
启用cookie persistence: backend ... cookie SERVERID insert indirect nocache.
5.
NGINX作为反向代理与SSL终端
步骤:安装 nginx;使用stream或http模块分流;示例SSL终端配置:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
proxy_pass http://backend_pool;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
使用certbot自动续期:certbot --nginx -d example.com。
6.
Keepalived + LVS 做四层高可用(可选)
场景:需要非常高并发的TCP/UDP负载时使用LVS+Keepalived。Keepalived配置示例:
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
virtual_ipaddress {
192.0.2.100
}
}
LVS 使用 ipvsadm 添加规则:ipvsadm -A -t 192.0.2.100:80 -s rr; ipvsadm -a -t ... -r 10.0.0.1:80 -g。
7.
健康检查与自动剔除
做法:在HAProxy或LVS后端启用http/tcp健康检查,并结合脚本自动拉流量到备机。示例HAProxy:option httpchk GET /health 200。结合Prometheus node_exporter + blackbox_exporter抓取健康指标,配置告警(Alertmanager)当实例连续失败超过阈值自动触发运维脚本。
8.
会话保持、Cookie与Redis会话共享
方案:短会话可使用HAProxy的cookie持久化;若需要跨节点持久会话,建议使用Redis或Memcached做会话存储。步骤:应用层改造把session存入Redis(配置连接池、超时),LB端只做最少连接分配。
9.
流量分配与限流策略
步骤:1)在HAProxy使用 stick-table + http-request track-sc0 src,结合 deny if { sc_http_req_rate(...) gt X } 实现IP限速;2)用NGINX limit_req_zone 对路径限流;3)在边缘CDN做访问控制和缓存策略(缓存静态资源至边缘,减少回源)。
10.
日志、监控与故障排查流程
建议:统一日志到ELK/EFK;部署Prometheus+Grafana监控关键指标:请求数、5xx、响应时间、后端健康、conn数。常见故障检查顺序:网络连通→健康检查→负载均衡规则→后端应用日志。准备故障回滚脚本与Runbook。
11.
优化与运维自动化
实践:CI/CD 自动发布负载均衡配置(gitops);使用Ansible或Terraform管理LB与Keepalived配置;部署蓝绿/灰度发布策略,结合权重调整让流量平滑迁移。定期压测并记录基线。
12.
问答 1
问:在香港机房使用HAProxy会遇到哪些地域性问题? 答:一般问题是对接CDN和回源延迟、ISP策略影响少量丢包。解决办法:在香港与大陆/国际网络路径测试( mtr/traceroute ),设置合理超时、重试与多入口点(多机房或Anycast DNS)。
13.
问答 2
问:如何在站群中保证SEO与IP分布不被惩罚? 答:保持内容差异化、合理使用反向代理隐藏内部IP、使用合法GeoDNS与robots、并使用Canonical标签避免重复内容。避免短时间大规模切换IP,否则可能触发搜索引擎风险机制。
14.
问答 3
问:当流量突增或遭遇DDoS时怎么应对? 答:第一步启用CDN防护与边缘WAF限流;第二步在LB端开启速率限制和黑名单;第三步扩容后端与上下线节点结合流量回放;若是BGP/大流量攻击,及时联系带宽商做黑洞或流量清洗。
来源:负载均衡实践分享香港站群服务器优化与流量分配技巧