马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
Linux的多网卡绑定功能使用的是内核中的"bonding"模块,关于此模块可以参考Linux Ethernet Bonding Driver文档, 但是目前发布各个Linux版本内核均已包含了此模块,大多数情况下不需要重新编译内核。 Linux 的 bonding 驱动提供了绑定/集成(bond)多个网卡为一个虚拟逻辑网口的功能。 将多个Linux网络端口绑定为一个,可以提升网络的性能,比如对于备份服务器,需要在一个晚上备份几个T的数据,如果使用单个的千兆网口将会是很严重的瓶颈。其它的应用,比如ftp服务器,高负载的下载网站, 都有类似的问题。因此使用Linux teaming或bond来绑定多个网卡作为一个逻辑网口,配置单个的IP地址,会大幅提升服务器的网络吞吐(I/O)。此外,做服务器端口聚合还能提高链路的可靠性。 配置步骤: 首先需要配置服务器聚合网卡,这里以聚合口名称为bond0,成员物理口名称为eno3为例:
1、创建bond0文件 [root@localhost network-scripts]# vim ifcfg-bond0 NM_CONTROLLED=no DEVICE=bond0 //设备名称 BOOTPROTO=static ONBOOT=yes //是否随机启动 IPADDR=x.x.x.x //IP地址 NETMASK=x.x.x.x //掩码 GATEWAY=x.x.x.x //网关 网关可以不用配置,根据现场情况需要配置。 2、修改物理网卡配置文件 [root@localhost network-scripts]# vim ifcfg-eno3 HWADDR=28:80:23:A1:F7:4A TYPE=Ethernet BOOTPROTO=none DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no NAME=eno3 UUID=73064264-1ec3-41b9-83db-ab1a265f5a02 ONBOOT=yes MASTER=bond0 SLAVE=yes NM_CONTROLLED=no 聚合口中的物理网卡都要修改。
3、修改modprobe配置文件 创建/etc/modprobe.d/bonding.conf文件,保证系统启动时聚合模块能加载,内容如下: alias bond0 bonding options bonding mode=4 miimon=100 xmit_hash_policy=layer3+4 说明: A、miimon=100 用来进行链路监测的。即每100ms监测一次链路状态。bonding只监测主机与交换机之间链路。如果交换机出去的链路出问题而本身没有问题,那么bonding认为链路没有问题而继续使用 B、mode模式说明: 高可用模式,运行时只使用一个网卡,其余网卡作为备份,在负载不超过单块网卡带宽或压力时建议使用。 基于HASH算法的负载均衡模式,网卡的分流按照xmit_hash_policy的TCP协议层设置来进行HASH计算分流,使各种不同处理来源的访问都尽量在同一个网卡上进行处理。 广播模式,所有被绑定的网卡都将得到相同的数据,一般用于十分特殊的网络需求,如需要对两个互相没有连接的交换机发送相同的数据。 802.3ab负载均衡模式,要求交换机也支持802.3ab模式,理论上服务器及交换机都支持此模式时,网卡带宽最高可以翻倍(如从1Gbps翻到2Gbps) (mode=4 在交换机支持LACP时推荐使用,其能提供更好的性能和稳定性)
4、加载聚合模块,使能当前的聚合功能 modprobe bonding
5、确认模块是否加载成功 lsmod | grep bonding
6、重启网络服务 service network restart
7、查看网卡聚合信息 cat /proc/net/bonding/bond0
8、交换机配置 Linux聚合配置好以后,需要在交换机上配置相应的聚合口,并配置动态聚合模式。
9. 服务器端查询bond成员网卡的mac地址方法: cat /sys/class/net/bond0/slave_eth3/address
------------------------------------------------------------------------ 留心:前面只是2个网口绑定成一个bond0的情况,如果我们要设置多个bond口,比如物理网口eth0和eth1组成bond0,eth2和eth3组成bond1, 那么网口设置文件的设置方法和上面第1步讲的方法相同,只是/etc/modprobe.d/bonding.conf的设定就不能像下面这样简单的叠加了:(如下为错误的写法) alias bond0 bonding options bonding mode=1 miimon=100 alias bond1 bonding options bonding mode=1 miimon=100 正确的设置方法有2种: 第一种,你可以看到,这种方式的话,多个bond口的模式就只能设成相同的了:(国网云平台项目亲试!!) alias bond0 bonding alias bond1 bonding options bonding max_bonds=2 miimon=100 mode=1 第二种,这种方式,不同的bond口的mode可以设成不一样: alias bond0 bonding options bond0 miimon=100 mode=1 install bond1 /sbin/modprobe bonding -o bond1 miimon=100 mode=0 仔细看看上面这2种设置方法,现在如果是要设置3个,4个,甚至更多的bond口,你应该也会了吧! 后记:简单的介绍一下上面在加载bonding模块的时候,options里的一些参数的含义: miimon 监视网络链接的频度,单位是毫秒,我们设置的是100毫秒。 max_bonds 配置的bond口个数 mode bond模式,主要有以下几种,在一般的实际应用中,0和1用的比较多, 如果你要深入了解这些模式各自的特点就需要靠读者你自己去查资料并做实践了。
文章链接: |