机房带宽冗余设计,防止单链路断网故障:机房带宽冗余设计
机房只有一条宽带时,
光猫、
光纤或运营商任一环节出问题,
整柜业务就会断网。带宽冗余设计的核心是让至少两条独立链路同时在线,
并通过自动检测在主链路故障时切换到备用链路。 下面从准备、
配置、
避坑到验证,
给出零基础也能照做的步骤。
先确认你需要的冗余级别
不是所有业务都要做 BGP 多线。
判断条件如下:
- 普通企业官网、内部 OA:两条不同运营商的普通宽带,用多 WAN 口路由器做故障切换即可。
- 对外提供 API 或交易服务:建议至少两条不同物理路由的专线,并在路由器上配置 BGP 与链路检测。
- 预算有限但要求高可用:可以主链路用专线,备用链路用 4G/5G 路由器,通过
track联动默认路由。
关键原则是:两条链路必须来自不同运营商、不同物理管道,否则同一段光缆被挖断时冗余无效。
设备与信息准备
开始配置前,准备好以下内容:
- 两台支持多 WAN 或 BGP 的路由器(如 RouterOS、华为 AR 系列或 Linux 软路由)。
- 两条宽带的账号、网关 IP、DNS。
- 若用 BGP,需要向运营商申请 AS 号和公网 IP 段。
- 登录路由器的管理权限。
本文以 Linux 软路由(Debian/Ubuntu)配合 frr 实现 BGP,用 iproute2 做链路检测为例,其他品牌路由器逻辑相同。
配置多链路与自动切换
1. 为两条链路配置独立网关
假设主链路网卡 eth0,网关 202.1.1.1;
备用链路 eth1,网关 202.2.2.1。
# 添加两条默认路由,主链路优先级更高
ip route add default via 202.1.1.1 dev eth0 metric 100
ip route add default via 202.2.2.1 dev eth1 metric 200
metric 越小优先级越高。
系统会自动选择 metric 100 的链路。
2. 写链路检测脚本
创建 /usr/local/bin/check_link.sh:
#!/bin/bash
# 检测主链路网关是否可达
if ping -c 2 -W 2 202.1.1.1 > /dev/null 2>&1; then
# 主链路正常,确保主路由优先级最高
ip route replace default via 202.1.1.1 dev eth0 metric 100
else
# 主链路故障,切换到备用链路
ip route replace default via 202.2.2.1 dev eth1 metric 100
fi
赋予执行权限:
chmod +x /usr/local/bin/check_link.sh
3. 加入定时任务
crontab -e
添加一行,每 10 秒检测一次:
* * * * * /usr/local/bin/check_link.sh
* * * * * sleep 10; /usr/local/bin/check_link.sh
* * * * * sleep 20; /usr/local/bin/check_link.sh
如果路由器支持 track 或 SLA,直接在管理后台配置更稳定。
例如华为路由器:
interface GigabitEthernet0/0/1
track 1 ip route 202.1.1.1 32
4. BGP 场景下的冗余
如果两条链路都接入了同一运营商的不同城域网,可运行 BGP 与上游建立邻居。
在 frr 中编辑 /etc/frr/frr.conf:
router bgp 65001
neighbor 202.1.1.1 remote-as 100
neighbor 202.2.2.1 remote-as 100
network 203.0.113.0/24
重启 frr:
systemctl restart frr
BGP 会自动根据链路状态撤销或发布路由,切换速度通常在秒级。
容易踩坑的地方
- 两条链路同运营商同管道:物理光缆一断全断,冗余形同虚设。务必确认运营商提供的是不同路由。
- 只做了链路切换,没做 NAT 或源地址切换:备用链路可能因源 IP 不对被上游丢弃。需要在切换脚本中同时调整 SNAT 规则。
- 检测目标选错:如果 ping 的是公网 DNS,可能因 DNS 故障误判。建议 ping 运营商网关或直接检测接口状态。
- 切换后不切回:脚本每次运行时都判断主链路,主链路恢复后会自动切回,但如果用
ip route add而不是replace,会残留多条默认路由导致混乱。
验证冗余是否生效
配置完成后,按以下步骤确认:
- 查看当前默认路由:
ip route show default
应只显示一条 metric 最小的默认路由。
- 手动断开主链路网线或禁用
eth0:
ip link set eth0 down
等待 10-30 秒,再次查看默认路由,应已切换到 eth1 的网关。
- 从外部 ping 你的公网 IP,或访问业务端口,确认服务未中断。
- 恢复
eth0:
ip link set eth0 up
默认路由应自动切回主链路。
常见疑问
备用链路需要多大带宽? 至少能承载故障期间的全部业务流量,否则切换后会出现拥塞。
一定要用 BGP 吗? 如果只是防止单点断网,普通多 WAN 故障切换就够用。
BGP 更适合需要固定公网 IP 段、多线接入的场景。
切换需要多久? 取决于检测间隔和路由收敛速度,通常在 10-30 秒内,可调整脚本频率缩短。
两条链路带宽不同怎么办? 主链路用大带宽,备用链路用小带宽做保底,并在切换脚本中设置 metric 优先级即可。
完成以上配置后,建议每季度模拟一次断网演练,确认切换逻辑仍然有效。