Linux链路聚合工具之ifenslave命令案例解析
目录
1. 基础场景:创建简单链路聚合(模式 0 负载均衡)
1.1 场景说明
1.2 操作步骤
1.2.1 加载 bonding 内核模块
1.2.2 创建 bond0 配置文件
1.2.3 配置物理网卡(eth0、eth1),使其从属 bond0:
1.2.4 绑定接口并激活
1.2.5 验证配置:
2. 高可用场景:主备模式(模式 1 冗余备份)
2.1 场景说明
2.2 操作步骤
2.2.1 加载 bonding 模块
2.2.2. 配置 bond0 为模式 1
2.2.3 物理网卡配置
2.2.4 绑定接口并激活
2.2.5 激活配置并验证
3. 进阶场景:动态链路聚合(模式 4,LACP 协议)
3.1 场景说明
3.2 操作步骤
3.2.1 加载 bonding 模块
3.2.2 配置 bond0 为模式 4(ifcfg-bond0)
3.2.3 物理网卡配置
3.2.4 交换机配置
3.2.5 激活并验证
4. 维护场景:添加 / 移除从属接口
4.1 场景说明
4.2 操作步骤
5. 关键注意事项
5.1 模式选择依据
5.2 配置文件一致性
5.3 验证工具
5.4 常见问题
ifenslave
是 Linux 系统中用于配置 链路聚合(Link Aggregation,又称 bonding) 的工具,其核心功能是将多个物理网络接口(如 eth0
、eth1
)绑定为一个逻辑接口(通常命名为 bond0
、bond1
等),实现 带宽叠加(负载均衡) 或 冗余备份(高可用)。
以下是 ifenslave
的典型使用案例,按场景分类说明(基于 RHEL/CentOS 系统,其他发行版配置文件路径可能不同):
1. 基础场景:创建简单链路聚合(模式 0 负载均衡)
1.1 场景说明
将 2 块物理网卡(eth0
、eth1
)绑定为 bond0
,采用 模式 0(balance-rr,轮询模式),实现流量负载均衡(需交换机支持链路聚合,如配置 LACP)。
1.2 操作步骤
1.2.1 加载 bonding 内核模块
必需,链路聚合依赖此模块
modprobe bonding # 临时加载,重启后失效
echo "bonding" >> /etc/modules-load.d/bonding.conf # 永久加载(开机自动加载)
1.2.2 创建 bond0 配置文件
vim /etc/sysconfig/network-scripts/ifcfg-bond0
TYPE=Bond
DEVICE=bond0
NAME=bond0
BOOTPROTO=static # 静态IP(或dhcp动态获取)
IPADDR=192.168.1.100 # bond0的IP地址
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
ONBOOT=yes # 开机自启
BONDING_OPTS="mode=0 miimon=100" # mode=0:轮询负载均衡;miimon=100:每100ms检测链路状态
1.2.3 配置物理网卡(eth0、eth1),使其从属 bond0:
ifcfg-eth0
:
TYPE=Ethernet
DEVICE=eth0
NAME=eth0
ONBOOT=yes
MASTER=bond0 # 指定主接口为bond0
SLAVE=yes # 声明为从属接口
BOOTPROTO=none # 无需单独配置IP(由bond0统一管理)
-
ifcfg-eth1
(与 eth0 配置相同):
TYPE=Ethernet
DEVICE=eth1
NAME=eth1
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
1.2.4 绑定接口并激活
# 绑定eth0和eth1到bond0(若配置文件已指定MASTER/SLAVE,此步可省略,直接重启网络服务)
ifenslave bond0 eth0 eth1# 重启网络服务使配置生效
systemctl restart network # 或 nmcli connection reload
1.2.5 验证配置:
# 查看bond0状态(确认eth0、eth1已加入,模式正确)
cat /proc/net/bonding/bond0# 查看接口IP(确认bond0已获取IP)
ip addr show bond0
2. 高可用场景:主备模式(模式 1 冗余备份)
2.1 场景说明
需保证网络接口故障时自动切换(如服务器双网卡冗余),采用 模式 1(active-backup,主备模式):仅主网卡(如 eth0)工作,故障时自动切换到备网卡(eth1),无需交换机特殊配置。
2.2 操作步骤
2.2.1 加载 bonding 模块
同基础场景一 。
2.2.2. 配置 bond0 为模式 1
修改 ifcfg-bond0
的 BONDING_OPTS
:
BONDING_OPTS="mode=1 miimon=100 primary=eth0" # primary=eth0:指定eth0为主网卡
(其他配置如 IP、网关等与基础场景一相同)
2.2.3 物理网卡配置
同基础场景一,eth0、eth1 均设为 MASTER=bond0
、SLAVE=yes。
2.2.4 绑定接口并激活
# 绑定eth0和eth1到bond0(若配置文件已指定MASTER/SLAVE,此步可省略,直接重启网络服务)
ifenslave bond0 eth0 eth1
2.2.5 激活配置并验证
systemctl restart network# 查看bond状态(确认“Current Active Slave”为eth0)
cat /proc/net/bonding/bond0# 模拟主网卡故障,测试切换(拔掉eth0网线或禁用接口)
ifconfig eth0 down
# 再次查看bond状态,确认“Current Active Slave”切换为eth1
cat /proc/net/bonding/bond0
3. 进阶场景:动态链路聚合(模式 4,LACP 协议)
3.1 场景说明
需与交换机配合实现 动态链路聚合(遵循 IEEE 802.3ad 标准),采用 模式 4(802.3ad,LACP 模式),交换机需提前配置对应聚合组(LAG)。
3.2 操作步骤
3.2.1 加载 bonding 模块
同基础场景一 。
3.2.2 配置 bond0 为模式 4(ifcfg-bond0
)
BONDING_OPTS="mode=4 miimon=100 lacp_rate=fast" # lacp_rate=fast:每1秒发送LACP报文(默认30秒)
(IP、网关等配置同上)
3.2.3 物理网卡配置
同基础场景一,eth0、eth1 设为从属接口。
3.2.4 交换机配置
关键!以 Cisco 交换机为例:
# 创建聚合组1,开启LACP
Switch(config)# interface range GigabitEthernet0/1 - 2 # 连接服务器eth0、eth1的端口
Switch(config-if-range)# channel-group 1 mode active # 主动发送LACP报文
Switch(config-if-range)# exit
Switch(config)# interface port-channel 1 # 聚合接口
Switch(config-if)# switchport mode access
Switch(config-if)# switchport access vlan 10 # 与服务器同VLAN
3.2.5 激活并验证
systemctl restart network# 查看bond状态(确认“LACP Active”,且与交换机建立聚合)
cat /proc/net/bonding/bond0
4. 维护场景:添加 / 移除从属接口
4.1 场景说明
已创建 bond0,需临时添加新网卡(如 eth2)或移除故障网卡(如 eth1)。
4.2 操作步骤
- 添加新从属接口(eth2):
# 临时添加(立即生效,重启后失效)
ifenslave bond0 eth2# 永久生效(创建ifcfg-eth2,配置MASTER=bond0、SLAVE=yes)
cat > /etc/sysconfig/network-scripts/ifcfg-eth2 << EOF
TYPE=Ethernet
DEVICE=eth2
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
EOF# 重启网络服务
systemctl restart network
- 移除从属接口(eth1):
# 临时移除(立即生效)
ifenslave -d bond0 eth1 # -d:解除绑定# 永久移除(删除ifcfg-eth1或注释MASTER/SLAVE配置)
mv /etc/sysconfig/network-scripts/ifcfg-eth1 /tmp/ # 备份并移除配置文件# 重启网络服务
systemctl restart network
5. 关键注意事项
-
5.1 模式选择依据
- 模式 0/6:适合需要提高带宽的场景(模式 0 需交换机支持,模式 6 无需)。
- 模式 1:适合高可用场景(单链路故障自动切换)。
- 模式 4:适合企业级环境(与交换机动态协商聚合,更可靠)。
-
5.2 配置文件一致性
- 物理网卡必须设置
MASTER=bondX
和SLAVE=yes
,且BOOTPROTO=none
(不单独配置 IP)。 bondX
的配置文件需指定BONDING_OPTS
明确模式和检测参数。
- 物理网卡必须设置
-
5.3 验证工具
cat /proc/net/bonding/bondX
:查看 bond 状态、从属接口、模式、故障切换记录。ip addr
/ifconfig
:确认 bond 接口的 IP 和状态。ethtool bondX
:查看 bond 接口的链路状态。
-
5.4 常见问题
- 若 bond 接口无 IP:检查配置文件
ONBOOT=yes
和BOOTPROTO
是否正确。 - 故障不切换:检查
miimon
参数(建议 100-1000ms),或物理链路是否真的故障。 - 模式 0/4 带宽不叠加:确认交换机是否配置对应聚合(模式 0 需静态聚合,模式 4 需 LACP)。
- 若 bond 接口无 IP:检查配置文件