CentOS6.5服务器端口捆绑

1 捆绑介绍

网卡,又称网络适配器。在网络中,如果没有网卡,那么这台设备将得不到服务器所提供的任何服务。当然,如果服务器没有网卡,那也就称不上是服务器了。

    网卡捆绑,也叫网卡绑定,就是将几块网卡虚拟成为一个网卡,这个聚合起来的设备看起来是一个单独的网卡,几块网卡具有相同的IP地址而进行链路聚合成一个逻辑链路工作,以提供负载均衡或者冗余,增加带宽的作用,当一块网卡坏掉时,不会影响业务。

2 网卡捆绑

2.1 检查系统

在做捆绑之前,首先要看Linux是否支持bonding,CentOS 6.5已经默认支持了。

[root@node2 ~]# modinfo bonding
filename:       /lib/modules/2.6.32-431.el6.x86_64/kernel/drivers/net/bonding/bonding.ko
author:         Thomas Davis, tadavis@lbl.gov and many others
description:    Ethernet Channel Bonding Driver, v3.6.0
version:        3.6.0
license:        GPL
srcversion:     353B1DC123506708446C57B
depends:        8021q,ipv6
vermagic:       2.6.32-431.el6.x86_64 SMP mod_unload modversions
………………
………………

2.2 捆绑步骤

(1)编辑/etc/sysconfig/network-scripts/ifcfg-bond0,配置虚拟网络接口IP地址

DEVICE=bond0
ONBOOT=yes
BOOTPROTO=static
IPADDR=1.2.6.201
BROADCAST=1.255.255.255
NETMASK=255.0.0.0
NETWORK=1.0.0.0
GATEWAY=1.0.0.254
USERCTL=no
TYPE=Ethernet
ARPCHECK=no
注意:建议不要指定MAC地址

(2)编辑/etc/sysconfig/network-scripts/ifcfg-eth4、/etc/sysconfig/network-scripts/ifcfg-eth5,这是要绑定的网卡

DEVICE=eth4
HWADDR=8C:DC:D4:00:92:08
TYPE=Ethernet
UUID=05069419-2b97-456b-98c3-db82df224fcc
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
USERCTL=no
MASTER=bond0
SLAVE=yes

(3)(可选)编辑/etc/sysconfig/network-scripts/ifcfg-eth0,配置好之后重启网络会出现Determining if ipaddress 1.2.6.101 is already in use for device eth0…,但ip确实没有问题,可以访问,没有地址冲突,这是Linux网卡配置arp检查导致的,把这个关闭即可

添加ARPCHECK=no

(4)编辑/etc/modprobe.d/dist.conf,配置绑定类型

添加alias bond0bonding

options bond0 miimon=100 mode=0

说明:miimon=100是指多久时间要检查网络一次,单位是ms(毫秒),这边是100ms

mode共有七种(0~6)

1)mode=0,即:(balance-rr))Round-robin policy(平衡轮询环策略)。特点:传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1....一直循环下去,直到最后一个传输完毕), 此模式提供负载平衡和容错能力。

2)mode=1,即: (active-backup) Active-backup policy(主-备份策略)。特点:只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得,从外面看来,bond的MAC地址是唯一的,以避免switch(交换机)发生混乱。此模式只提供了容错能力。

3)mode=2,即:(balance-xor) XOR policy(平衡策略)。特点:基于指定的传输HASH策略传输数据包。

4)mode=3,即:broadcast(广播策略)。特点:在每个slave接口上传输每个数据包,此模式提供了容错能力

5)mode=4,即:(802.3ad) IEEE 802.3ad Dynamic linkaggregation(IEEE 802.3ad 动态链接聚合)。第五种模式:mod=4,即:(802.3ad) IEEE 802.3ad Dynamic linkaggregation(IEEE 802.3ad 动态链接聚合)。特点:创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。

        必要条件:

条件1:ethtool支持获取每个slave的速率和双工设定

条件2:switch(交换机)支持IEEE 802.3ad Dynamic linkaggregation

条件3:大多数switch(交换机)需要经过特定配置才能支持802.3ad模式

6)mode=5,即:(balance-tlb)Adaptive transmit load balancing(适配器传输负载均衡)。特点:不需要任何特别的switch(交换机)支持的通道bonding。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。

      必要条件:ethtool支持获取每个slave的速率

7)mode=6,即:(balance-alb) Adaptive load balancing(适配器适应性负载均衡)。特点:该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receive load balance, rlb),而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。

必要条件:

条件1:ethtool支持获取每个slave的速率

条件2:底层驱动支持设置某个设备的硬件地址,从而使得总是有个slave(curr_active_slave)使用bond的硬件地址,同时保证每个bond 中的slave都有一个唯一的硬件地址。

(5)编辑/etc/rc.d/rc.local,系统启动时将虚拟网卡和捆绑的物理网卡绑定

添加ifenslave bond0 eth4 eth5

配置完成,重启服务器,就可以看到一张bond0的新网卡。

2.3 验证

[root@node1 ~]# cat /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth4
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 64:51:06:f0:27:e0
Slave queue ID: 0

Slave Interface: eth5
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 64:51:06:f0:27:e4
Slave queue ID: 0
通过验证查看,可以看到绑定后的虚拟网卡bond0,说明配置成功。

3 注意事项

如果在RHEL6下执行:

servicenetwork restart时,报如下错误:

Bringing up interface bond0: Error: Connection activation failed: Device not managed by NetworkManager
此错误是因为系统中默认由NetworkManager服务管理网络,可以将其停止:
[root@Hostname ~]#chkconfig NetworkManager off
[root@Hostname ~]#service NetworkManager stop
[root@Hostname ~]#chkconfig network on
[root@Hostname ~]#service network restart
注意NetworkManager区分大小写。

附shell脚本

read -p "input your bond interface(eth0 eth1): " eth 
echo $eth > /mnt/eth.txt
read -p "input your IPADDR(1.2.6.200): " IPADDR
read -p "input your BROADCAST(1.255.255.255): " BROADCAST
read -p "input your NETMASK(255.0.0.0): " NETMASK
read -p "input your NETWORK(1.0.0.0): " NETWORK
read -p "input your GATEWAY(1.0.0.254): " GATEWAY
read -p "input your mode(0-6): " mode

service NetworkManager stop
chkconfig NetworkManager off

for i in $(cat /mnt/eth.txt)
	do
		echo "USERCTL=no" >> /etc/sysconfig/network-scripts/ifcfg-$i
		echo "MASTER=bond0" >> /etc/sysconfig/network-scripts/ifcfg-$i
		echo "SLAVE=yes" >> /etc/sysconfig/network-scripts/ifcfg-$i
	done
rm -rf /mnt/eth.txt
	
cd /etc/sysconfig/network-scripts
rm -rf ifcfg-bond0
touch ifcfg-bond0
echo "DEVICE=bond0" > ifcfg-bond0
echo "ONBOOT=yes" >> ifcfg-bond0
echo "BOOTPROTO=static" >> ifcfg-bond0
echo "IPADDR=$IPADDR" >> ifcfg-bond0
echo "BROADCAST=$BROADCAST" >> ifcfg-bond0
echo "NETMASK=$NETMASK" >> ifcfg-bond0
echo "NETWORK=$NETWORK" >> ifcfg-bond0
echo "GATEWAY=$GATEWAY" >> ifcfg-bond0
echo "USERCTL=no" >> ifcfg-bond0
echo "TYPE=Ethernet" >> ifcfg-bond0
echo "ARPCHECK=no" >> ifcfg-bond0

echo "alias bond0 bonding" >> /etc/modprobe.d/dist.conf
echo "options bond0 miimon=100 mode=$mode" >> /etc/modprobe.d/dist.conf
echo "ifenslave bond0 $eth" >> /etc/rc.d/rc.local

chkconfig network on
service network restart


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值