1. 概述与目标
目标:在香港环境下利用CN2线路与其他回程线路进行组合部署,实现主动/被动故障切换与负载分担。小分段:1) 为什么选CN2:延迟低、丢包小;2) 组合理由:避免单一回程故障;3) 输出:实现连接冗余与自动切换。
2. 前提与准备清单
小分段:1) 至少两台VPS(最好不同机房/不同提供商),其中至少一台标注为CN2线路;2) 获取公网IP、管理控制台、SSH权限;3) 准备监控主机或第三方监测(例如UptimeRobot、Prometheus)。
3. 网络规划与IP设计
小分段:1) 给每台VPS准备一组公网IP用于对外服务;2) 规划VIP(浮动IP)或DNS;3) 决定主备策略(Active/Standby)或负载均衡(Active/Active)。
4. 选择冗余方案(VRRP vs DNS vs BGP)
小分段:1) VRRP(Keepalived)适用于有浮动IP或同一二层网络的VPS;2) DNS Failover适用于异地不同提供商但DNS切换需考虑TTL;3) BGP多线需运营商或VPS支持自主AS与公告。
5. 基础Linux网络配置(源地址路由)
小分段:示例假设eth0为默认线路,eth1为备用CN2线路。执行:1) 创建策略路由表:echo "200 cn2" >> /etc/iproute2/rt_tables;2) 添加路由规则:ip rule add from 203.0.113.10/32 table cn2;3) 在表中增加路由:ip route add default via 203.0.113.1 dev eth1 table cn2;4) 刷新路由缓存:ip route flush cache。把命令写入启动脚本或network manager配置确保重启生效。
6. Keepalived 实战(Active/Passive 浮动IP)
小分段:1) 安装:apt install keepalived 或 yum install keepalived;2) 示例配置(/etc/keepalived/keepalived.conf):vrrp_instance VI_1 { state MASTER; interface eth0; virtual_router_id 51; priority 150; authentication { auth_type PASS; auth_pass 1111; } virtual_ipaddress { 203.0.113.100 } track_script { chk_http } };3) 健康检查脚本:/etc/keepalived/checks/chk_http,返回0/1;4) 启动并测试:systemctl enable --now keepalived。
7. HAProxy 负载均衡与健康检查
小分段:1) 安装:apt install haproxy;2) 基本配置片段:frontend http-in bind 0.0.0.0:80 default_backend servers; backend servers mode http balance roundrobin option httpchk GET /health server s1 203.0.113.10:80 check server s2 198.51.100.10:80 check;3) reload 测试:systemctl reload haproxy;4) 与Keepalived配合实现VIP+LB模式。
8. 自动化故障检测与策略切换
小分段:1) 使用脚本+cron或systemd-timer做外部探测(例如每30s ping/HTTP);2) 脚本示例(伪码):if ! curl -sSf http://127.0.0.1:80/health; then ip route replace default via CN2_GATEWAY dev eth1; fi;3) 更稳健做法:使用Pacemaker/Corosync或Keepalived track_script去触发权重变更。
9. 测试与验证步骤
小分段:1) 本地测试:curl --interface eth1 http://ifconfig.co 查看出站IP;2) 故障模拟:关闭主线路网关或iptables丢包规则测试切换;3) 检查日志:journalctl -u keepalived、haproxy 日志;4) 使用mtr/traceroute确认路径走向。
10. 监控与告警实践
小分段:1) 监控项:延迟、丢包、连接失败率、后端健康;2) 常用工具:Prometheus+Node Exporter、Grafana、UptimeRobot;3) 配置告警:当连续3次探测失败则触发邮件/短信/钉钉通道。
11. 安全与防护建议
小分段:1) 使用防火墙(ufw/iptables)限制管理口;2) SSH 使用密钥并限制来源IP;3) 对外服务加WAF/反DDoS(必要时使用云厂商防护);4) 密钥与配置文件权限设置600/640。
12. 性能与优化
小分段:1) 调整TCP参数:net.core.somaxconn、tcp_fin_timeout 等在 /etc/sysctl.conf;2) 调整keepalived与haproxy的超时与重试策略;3) 针对CN2线路经常以低丢包和稳定延迟为主,可把实时敏感流量优先路由到CN2。
13. 问:在没有浮动IP的情况下如何实现切换?
回答:使用DNS Failover或双活负载。小分段:1) DNS:将域名A记录设置短TTL(例如60秒),配合监测系统在主节点故障时自动把IP切到备用;2) 双活:两台VPS都对外提供服务,前端使用全球负载均衡或Anycast服务;3) 注意:DNS切换有缓存风险,短TTL并配合监测与自动化工具最实用。
14. 问:如何验证流量确实走CN2线路?
回答:用traceroute/mtr定位路径和跳数,再结合ISP路由信息判断是否经过CN2。小分段:1) 命令:mtr -r -c 10 目标IP 或 traceroute 目标IP;2) 观察中间节点的ASN与运营商标识(如“China Telecom CN2”);3) 可以在不同节点发起测试或使用第三方路由可视化工具确认。
15. 问:常见故障与排查顺序是什么?
回答:先看链路,再看路由,最后看应用。小分段:1) 链路层:检查接口状态 ip link show、ethtool;2) 路由层:ip route, ip rule, iptables;3) 应用层:服务健康检查、日志、端口监听(ss -tuln);4) 结合tcpdump抓包分析具体丢包或RST情形。
来源:cn2 vps 香港组合多线部署以提升可用性与容错能力