目标:为生产服务选取香港原生IP并构建可观测的监控告警与多线路冗余,确保主链路故障时≤30s检测并自动切换或降级。本文给出从选购、路由/设备配置、监控采集与告警到自动化切换的可执行步骤与示例命令。
步骤:1) 要求“原生香港asn/出口”与可提供公网段(/29或/24);2) 索要对端BGP/静态路由信息与SLA;3) 比较运营商:PCCW/HKT/HGC/China Mobile HK/China Unicom HK;4) 要求路由原生性测试:拿到IP后执行 traceroute/mtr 验证首跳在香港;命令示例:traceroute -n -w 1 -q 1 1.2.3.4;5) 验证反向DNS与Whois确认归属。
如果使用自带公网段并对等BGP:在服务器或路由器上安装FRR,示例配置(vtysh): configure terminal router bgp 65001 bgp router-id 1.1.1.1 neighbor 203.0.113.1 remote-as 7543 network 198.51.100.0/24 exit 保存并查看:show bgp ipv4 unicast summary。对等失败用tcpdump查看TCP 179。
安装Prometheus与blackbox_exporter、node_exporter与ping_exporter。Prometheus scrape示例: scrape_configs: - job_name: 'hk-blackbox' metrics_path: /probe params: {module: [http_2xx]} static_configs: - targets: ['http://1.2.3.4'] relabel_configs: … 监控要点:icmp丢包率、平均RTT、95/99延迟、BGP邻居状态、接口丢包与带宽。
告警规则示例(Prometheus recording/alert rule): - alert: HK_IP_PacketLoss expr: probe_packet_loss{job="hk-blackbox"} > 0.2 for: 30s labels: {severity: critical} actions:Alertmanager接收并调用Webhook脚本 /opt/switch_route.sh,脚本示例: #!/bin/bash curl -X POST -d '{"action":"switch","target":"backup"}' http://127.0.0.1:8081/route 或直接在脚本里执行 ip route replace default via 10.0.0.2 dev eth1 来切换默认网关。
推荐三层策略:1) 若可拿到BGP对等,配置多家BGP出口并设置local-preference/AS-path prepend 控制优先级;2) 内网边界使用keepalived( VRRP )做第一跳冗余,示例keepalived.conf: vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 150 virtual_ipaddress { 10.0.0.1 } } 3) DNS层使用DNS服务商API(如Cloudflare/DNSPod)做健康检查权重切换,示例:curl -X PUT 'https://api.dns/.../record' -d '{"content":"1.2.3.4","ttl":60}'。
切换脚本示例(快速替换默认路由): #!/bin/bash ip route replace default via 10.0.0.254 dev eth0 proto static logger "switched default route to 10.0.0.254" 演练步骤:1) 在非高峰期,手动down主链路接口:ip link set dev eth0 down;2) 观察Prometheus的probe、BGP邻居、应用可达性;3) 恢复并检查流量回切。记录RTO与告警触发时间。
日常:配置syslog集中化,保存BGP邻居日志,定期执行 traceroute/mtr 到关键节点;使用tcpdump抓包验证路径:tcpdump -i eth0 host 1.2.3.4 and icmp;安全:限制BGP邻居、启用RPKI/ROA验证、ACL限制管理端口。
答:拿到IP后做三步验证:1) whois/IRR查归属与ASN;2) traceroute/mtr 看第一跳与出口是否在香港(IP/AS信息);3) 从多个国际节点(用MTR/外部监控)验证回程路径与延迟,必要时要求供应商提供路由回执或SLA证明。
答:建议综合判定:连续30s内icmp丢包>20%或95延迟>200ms且BGP邻居DOWN或接口丢包>10%,触发自动化动作。把“持续时间+多指标”结合,可减少误切换。
答:最快的是内网层面的VRRP+本地路由替换(秒级)结合BGP多路由(分钟级收敛)。要尽量减少会话中断,应用层可使用Anycast/VIP+会话粘性或在切换脚本中先修改L3再调整NAT,必要时使用TCP会话保持代理(如HAProxy)做短连接转接。
