Redhat6.9配置网卡bond

Posted 莅冠慕枫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redhat6.9配置网卡bond相关的知识,希望对你有一定的参考价值。

7种bond模式原理

模式0

模式0(mode=0,round-robin):此模式使用轮询策略,即顺序的在每一个被bond的网卡上发送数据包,这种模式提供负载均衡和容错能力。Bond0可以保证bond虚拟网卡和被bond的两张或多张物理网卡拥有相同的MAC地址,其中bond虚拟网卡的MAC地址是其中一张物理网卡的MAC地址,而bond虚拟网卡的MAC地址是根据bond自己实现的一个算法来选择的。

在bond0模式下,如果一个连接或者会话的数据包从不同的网口发出,途中再经过不同的链路,则在客户端很有可能会出现数据包无序到达的现象,而无序到达的数据包一般需要重新发送,这样网络的吞吐量就会下降。同时,如果做bond0的两张或多张网卡接到了同一交换机上,还需对其配置聚合模式。

模式1

模式1(mode=1,active-backup):此模式使用主被策略(热备)。在所有做bond1的物理网卡中,同一时刻只有一张网卡被激活,当且仅当活动网卡失效时才会激活其他的网卡。这种模式下做bond的两张或多张网卡的MAC地址和Bond虚拟网卡的MAC地址相同,而Bond的MAC地址是Bond创建启动后活动网卡(Active Slave)的MAC地址。这种模式要求主被网卡能快速的切换,即当主网卡出现故障后能迅速地切换至备用网卡。切换过程中,上层的应用几乎不受影响,因为Bond的驱动程序会临时接管上层应用的数据包,存放至数据缓冲区,等待备用网卡启动后再发送出去。但是如果切换时间过长,则会引起缓冲区的溢出,导致丢包。

模式2

特点:基于指定的传输HASH策略传输数据包。缺省的策略是:(源MAC地址 XOR 目标MAC地址) % slave数量。其他的传输策略可以通过xmit_hash_policy选项指定,此模式提供负载平衡和容错能力

模式3

模式3(mode=3,broadcast):使用广播策略,数据包会被广播至所有Slave网卡进行传送。

模式4

模式4(mode=4,802.3ad):使用动态链接聚合策略,启动时会创建一个聚合组,所有Slave网卡共享同样的速率和双工设定。

必要条件:

1.支持使用ethtool工具获取每个slave网卡的速率和双工设定;

2.需要交换机支持IEEE 802.3ad 动态链路聚合(Dynamic link aggregation)模式

模式5

模式5(mode=5,balance-tlbtransmitload balancing):基于每个slave网卡的速率选择传输网卡。

必要条件:支持使用ethtool工具获取每个slave网卡的速率。

模式6

模式6(mode=6,balance-alb,Adaptive load balancing):该模式包含了bond5模式,同时还支持对IPV4流量接收时的负载均衡策略(receive load balance, rlb),而且不需要任何交换机的支持。

必要条件:

1.ethtool支持获取每个slave的速率;

2.底层驱动支持设置某个网卡设备的硬件地址。

bonding模式

对应switch配置

mode=0,(balance-rr)轮询均衡模式

LACP mode on,强制链路聚合

mode=1,(active-backup)轮询均衡模式

access端口,无需特别配置

mode=2,(balance-xor)根据hash的均衡模式

LACP mode on,强制链路聚合

mode=3,(broadcast)广播模式

LACP mode on,强制链路聚合

mode=4,(IEEE802.3ad)动态链路聚合

LACP动态协商,建议主动模式

mode=5,(balance-tlb)发送均衡模式

access端口,无需特别配置

mode=6,(balance-alb)发送均衡模式

access端口,无需特别配置

配置举例

环境:两张10G网卡分别是eth0和eth1

创建bond0文件:

cat > /etc/sysconfig/network-scripts/ifcfg-bond0 << EOF
DEVICE=bond0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.115.50
NETMASK=255.255.255.0
GATEWAY=192.168.115.254
BONDING_OPTS="mode=1 miimon=100"
EOF

配置网卡文件(eth4和eth5):

cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << EOF
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
EOF

cat > /etc/sysconfig/network-scripts/ifcfg-eth1 << EOF
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
EOF

自动shell脚本

#!/bin/bash

BOND0=/etc/sysconfig/network-scripts/ifcfg-bond0
NETMASK=255.255.255.0
ETH0=/etc/sysconfig/network-scripts/ifcfg-eth0
ETH1=/etc/sysconfig/network-scripts/ifcfg-eth1

function deleteruls()

rm /etc/udev/rules.d/70-persistent-net.rules


function addbond()

touch /etc/sysconfig/network-scripts/ifcfg-bond0
echo "Now Change ip address ,Doing Backup Interface bond0"
echo -e "DEVICE=bond0" >> $BOND0
echo -e "ONBOOT=yes" >> $BOND0
echo -e "BOOTPROTO=static" >> $BOND0
read -p "Please insert ip address:" IPADDR
echo -e "IPADDR=$IPADDR\\nNETMASK=$NETMASK\\nGATEWAY=`echo $IPADDR|awk -F. print $1"."$2"."$3`.253" >>$BOND0
echo -e BONDING_OPTS="mode=1 miimon=100" >> $BOND0


function modifyeth0()

rm -rf $ETH0
echo -e "DEVICE=eth0" >> $ETH0
echo -e "TYPE=Ethernet" >> $ETH0
echo -e "ONBOOT=yes" >> $ETH0
echo -e "BOOTPROTO=none" >> $ETH0
echo -e "MASTER=bond0" >> $ETH0
echo -e "SLAVE=yes" >> $ETH0


function modifyeth1()

rm -rf $ETH1
echo -e "DEVICE=eth1" >> $ETH1
echo -e "TYPE=Ethernet" >> $ETH1
echo -e "ONBOOT=yes" >> $ETH1
echo -e "BOOTPROTO=none" >> $ETH1
echo -e "MASTER=bond0" >> $ETH1
echo -e "SLAVE=yes" >> $ETH1


function reloadservice()

service network restart

function addrc()

cat >> /etc/rc.d/rc.local << EOF
ifenslave bond0 eth0 eth1
EOF


deleteruls
addbond
modifyeth0
modifyeth1
addrc
reloadservice


以上是关于Redhat6.9配置网卡bond的主要内容,如果未能解决你的问题,请参考以下文章

网卡接口配置——bonding

linuxbond只显示一块网卡

linux系统配置网卡绑定

centos 双网卡聚合

Lnux系统网卡绑定配置详解

linux虚拟网络接口---bonding配置