2. Bond模式详解:Active-Backup模式原理与适用场景
好,咱们来聊聊Bond模式里最基础、也最常用的一种——Active-Backup模式。说白了,这就是一主一备的干活方式。我刚开始接触Open vSwitch的时候,第一个上手的就是这个模式,因为它逻辑简单,不容易出幺蛾子。
2.1 核心原理:一主一备,绝不抢活
Active-Backup模式,也叫主备模式。它的工作机制特别直白:
- 任何时候,只有一块网卡在干活(Active状态)
- 其他网卡都在旁边歇着(Backup状态)
- 干活的那块挂了,备用的立刻顶上
你想想看,这就像咱们公司里的值班制度。今天张三值班,李四在家待命。张三要是生病了,李四马上接替。绝对不会出现两个人同时处理同一个工单的情况——那不乱套了吗?
在OVS里,Active-Backup模式通过bond_mode=active-backup来配置。它的核心判断依据是网卡的链路状态(Link State)。只要Active网卡的链路是up的,它就一直在干活。一旦检测到down了,OVS会立刻把流量切换到下一块可用的Backup网卡上。
关键点:Active-Backup模式下,不需要对端交换机做任何特殊配置。这是它最大的优势之一。你随便插两根网线到两台不同的交换机上,甚至插到同一个傻瓜交换机上,都能正常工作。
2.2 流量走向:同一时刻只有一条路
我记得有一次在客户现场排查问题,客户说“为什么我抓包只看到一块网卡有流量,另一块完全没有?”我笑了笑说:“这就对了,Active-Backup模式就是这样设计的。”
具体来说:
- 发送流量:全部从Active网卡出去
- 接收流量:也全部由Active网卡接收
- Backup网卡:只做一件事——监听链路状态,随时准备接班
这里有个细节要注意。虽然Backup网卡不转发数据,但它的MAC地址和Active网卡是保持一致的。嗯,这是通过OVS内部的MAC地址共享机制实现的。这样做的好处是,当发生切换时,对端交换机不需要重新学习MAC地址,切换速度会快很多。
小技巧:我个人习惯在生产环境中,把两块网卡分别接到不同的物理交换机上。这样即使一台交换机整机挂了,另一块网卡也能立刻接管。这叫“设备级冗余”,比单纯的双链路更靠谱。
2.3 故障切换:到底有多快?
切换速度是大家最关心的问题。我在项目中实测过,Active-Backup模式的切换时间通常在1秒以内。具体取决于几个因素:
| 影响因素 | 说明 | 建议 |
|---|---|---|
| 链路检测间隔 | OVS默认每1秒检查一次链路状态 | 可以调小到200ms,但会增加CPU开销 |
| ARP缓存超时 | 对端设备的ARP表项老化时间 | 建议设置为30秒以内 |
| STP收敛时间 | 如果用了生成树协议,切换会变慢 | 建议关闭STP或启用快速生成树 |
我曾经在一个数据中心项目里,把链路检测间隔调到了100ms。结果呢?切换速度确实快了,但CPU占用率从5%飙到了15%。后来我折中了一下,设成了300ms,效果还不错。所以啊,别一味追求极致速度,得看你的硬件扛不扛得住。
2.4 适用场景:什么时候该用它?
Active-Backup模式不是万能的,但它有几个特别擅长的场景:
- 场景一:对带宽要求不高,但对可靠性要求极高
比如管理网络、带外管理口。这些流量不大,但绝对不能断。Active-Backup模式正好合适。
- 场景二:对端交换机不支持LACP
很多老旧交换机或者傻瓜交换机,压根不认识LACP协议。这时候Active-Backup就是你的救星。
- 场景三:需要跨交换机做冗余
Active-Backup模式天生支持跨交换机。你把两块网卡插到不同的交换机上,完全没问题。这在LACP模式下反而需要额外配置(比如MLAG)。
- 场景四:虚拟机热迁移场景
我记得有一次做VMware的vMotion测试,发现Active-Backup模式配合OVS的流表规则,迁移过程中几乎感觉不到丢包。嗯,这个组合我后来推荐给了好几个客户。
避坑指南:我曾经犯过一个低级错误——把Active-Backup模式用在了需要高带宽的场景下。两块10G网卡,结果只有一块在干活,带宽硬生生被砍了一半。后来我换成了Balance-SLB模式才解决问题。所以记住:Active-Backup不提升带宽,只提升可靠性。
2.5 配置示例:动手试试
光说不练假把式。咱们来看看在OVS里怎么配Active-Backup模式。假设你有两块网卡eth1和eth2:
# 创建一个网桥
ovs-vsctl add-br br0
# 添加两块网卡,并设置bond模式
ovs-vsctl add-bond br0 bond0 eth1 eth2 \
bond_mode=active-backup \
lacp=off \
other_config:bond-detect-mode=miimon \
other_config:bond-miimon-interval=100
# 查看bond状态
ovs-appctl bond/show bond0
配置完成后,你可以用ovs-appctl bond/show命令查看哪块网卡是Active状态。输出结果里会明确告诉你:
---- bond0 ----
bond_mode: active-backup
bond may use recirculation: no
bond-hash-basis: 0
updelay: 0 ms
downdelay: 0 ms
next rebalance: 0 ms
lacp_status: off
active slave mac: 00:0c:29:ab:cd:01(eth1)
slave eth1: enabled
slave eth2: enabled backup
看到active slave mac那一行了吗?那就是当前干活的网卡。如果eth1的链路断了,你会看到它自动切换到eth2。
2.6 优缺点总结
最后,咱们来做个总结。Active-Backup模式就像一把瑞士军刀里的主刀——简单、可靠、通用。但它也有自己的脾气:
| 优点 | 缺点 |
|---|---|
| 配置简单,无需交换机配合 | 不提升带宽,总带宽等于单块网卡 |
| 切换速度快,通常小于1秒 | 负载不均衡,Active网卡压力大 |
| 支持跨交换机冗余 | 不适合大流量场景 |
| 兼容性好,几乎所有交换机都支持 | 链路利用率低,Backup网卡闲置 |
我个人觉得,Active-Backup模式是每个网络工程师都应该掌握的“基本功”。它可能不是最炫酷的,但绝对是最稳的。下次遇到“既要高可靠,又要简单配”的需求时,别犹豫,就用它。
好了,这一章就聊到这儿。下一章咱们会深入讲讲Balance-SLB模式,那个就有意思多了——能让两块网卡同时干活,带宽翻倍。到时候见!