LINUX-网卡Bond

网卡bond是通过把多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡。在应用部署中是一种常用的技术,我们公司基本所有的项目相关服务器都做了bond,这里总结整理,以便待查。

bond模式:

  1. Mode=0(balance-rr) 表示负载分担round-robin,和交换机的聚合强制不协商的方式配合。
  2. Mode=1(active-backup) 表示主备模式,只有一块网卡是active,另外一块是备的standby,这时如果交换机配的是捆绑,将不能正常工作,因为交换机往两块网卡发包,有一半包是丢弃的。
  3. Mode=2(balance-xor) 表示XOR Hash负载分担,和交换机的聚合强制不协商方式配合。(需要xmit_hash_policy)
  4. Mode=3(broadcast) 表示所有包从所有interface发出,这个不均衡,只有冗余机制...和交换机的聚合强制不协商方式配合。
  5. Mode=4(802.3ad) 表示支持802.3ad协议,和交换机的聚合LACP方式配合(需要xmit_hash_policy)
  6. Mode=5(balance-tlb) 是根据每个slave的负载情况选择slave进行发送,接收时使用当前轮到的slave
  7. Mode=6(balance-alb) 在5的tlb基础上增加了rlb。

5和6不需要交换机端的设置,网卡能自动聚合。4需要支持802.3ad。0,2和3理论上需要静态聚合方式
但实测中0可以通过mac地址欺骗的方式在交换机不设置的情况下不太均衡地进行接收。

以上信息来自网络,不是所有的都明白。目前我们常用的主要是1(主备冗余)和6(与交换机无关的负载均衡)

本文以小本上虚拟机安装的两台REDHAT AS 5为环境进行说明。

 

1.创建bond0配置文件

 

Bash代码   收藏代码
  1. # vi /etc/sysconfig/network-scripts/ifcfg-bond0  

 添加内容

Python代码   收藏代码
  1. DEVICE=bond0  
  2. IPADDR=10.10.10.11  
  3. NETWORK=10.10.10.0  
  4. NETMASK=255.255.255.0  
  5. USERCTL=no  
  6. BOOTPROTO=none  
  7. ONBOOT=yes  

 你需要修改上面的IPADDR,NETWORK,NETMASK为你自己的环境配置

 

2.修改eth0和eth1配置文件 
注意:这里是虚拟机上配置,所以可以很方便的添加多块网卡。

使用vi修改eth0配置文件

 

Python代码   收藏代码
  1. # vi /etc/sysconfig/network-scripts/ifcfg-eth0  

 

添加或替换内容:

 

Python代码   收藏代码
  1. DEVICE=eth0  
  2. USERCTL=no  
  3. ONBOOT=yes  
  4. MASTER=bond0  
  5. SLAVE=yes  
  6. BOOTPROTO=none  

 

使用vi修改eth1配置文件 

Python代码   收藏代码
  1. # vi /etc/sysconfig/network-scripts/ifcfg-eth1  
 

添加或替换内容:

 

Python代码   收藏代码
  1. DEVICE=eth1  
  2. USERCTL=no  
  3. ONBOOT=yes  
  4. MASTER=bond0  
  5. SLAVE=yes  
  6. BOOTPROTO=none  

 

保存并退出

3.加载bond驱动 
通过修改内核模块配置文件modprobe.conf加载bond驱动。

 

Python代码   收藏代码
  1. # vi /etc/modprobe.conf  

 也有可能在/etc/modprobe.d/modprobe.conf 

添加下面的两行内容:

 

Python代码   收藏代码
  1. alias bond0 bonding  
  2. options bond0 mode=6 miimon=100  

 

注意:这里使用的是模式6,负载均衡模式;网卡检查时间100ms

#mode=1 是主备模式  #primary=eth0 #默认active 是eth0 
4.测试配置 
首先,加载bond module:

 

Python代码   收藏代码
  1. # modprobe bonding  

 

然后,重新启动网络服务

 

Python代码   收藏代码
  1. # service network restart  

 

查看内核中bond状态

 

Python代码   收藏代码
  1. cat /proc/net/bonding/bond0  

 

我机器的输出样例:

 

Python代码   收藏代码
  1. Ethernet Channel Bonding Driver: v3.0.3 (March 232006)  
  2.   
  3. Bonding Mode: load balancing (round-robin)  
  4. MII Status: up  
  5. MII Polling Interval (ms): 0  
  6. Up Delay (ms): 0  
  7. Down Delay (ms): 0  
  8.   
  9. Slave Interface: eth0  
  10. MII Status: up  
  11. Link Failure Count: 0  
  12. Permanent HW addr: 00:0c:29:e7:21:13  
  13.   
  14. Slave Interface: eth1  
  15. MII Status: up  
  16. Link Failure Count: 0  
  17. Permanent HW addr: 00:0c:29:e7:21:09  

 

查看所有网络配置

 

Python代码   收藏代码
  1. # ifconfig  

 

Python代码   收藏代码
  1. bond0     Link encap:Ethernet  HWaddr 00:0C:29:E7:21:13   
  2.           inet addr:10.10.10.11  Bcast:10.10.10.255  Mask:255.255.255.0  
  3.           inet6 addr: fe80::20c:29ff:fee7:2113/64 Scope:Link  
  4.           UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1  
  5.           RX packets:2155 errors:0 dropped:0 overruns:0 frame:0  
  6.           TX packets:685 errors:0 dropped:0 overruns:0 carrier:0  
  7.           collisions:0 txqueuelen:0  
  8.           RX bytes:507558 (495.6 KiB)  TX bytes:83759 (81.7 KiB)  
  9.   
  10. eth0      Link encap:Ethernet  HWaddr 00:0C:29:E7:21:13   
  11.           inet6 addr: fe80::20c:29ff:fee7:2113/64 Scope:Link  
  12.           UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1  
  13.           RX packets:889 errors:0 dropped:0 overruns:0 frame:0  
  14.           TX packets:563 errors:0 dropped:0 overruns:0 carrier:0  
  15.           collisions:0 txqueuelen:1000  
  16.           RX bytes:238996 (233.3 KiB)  TX bytes:59080 (57.6 KiB)  
  17.           Interrupt:67 Base address:0x20a4  
  18.   
  19. eth1      Link encap:Ethernet  HWaddr 00:0C:29:E7:21:13   
  20.           inet6 addr: fe80::20c:29ff:fee7:2113/64 Scope:Link  
  21.           UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1  
  22.           RX packets:1266 errors:0 dropped:0 overruns:0 frame:0  
  23.           TX packets:122 errors:0 dropped:0 overruns:0 carrier:0  
  24.           collisions:0 txqueuelen:1000  
  25.           RX bytes:268562 (262.2 KiB)  TX bytes:24679 (24.1 KiB)  
  26.           Interrupt:67 Base address:0x2024   

 

删除bond网卡:

1、# ls /sys/class/net
bond0  bond1  bonding_masters  br0  eth0  eth1  lo
注意:直接删除bond0目录会提示权限问题
2、# cat bonding_masters
bond0  bond1
注意:直接编辑此文件也会提示权限问题
方法如下:
# echo -bond0 > bonding_masters
备注:echo后的 - 号表示删除设备, + 号表示添加设备
3、查看
# ll /proc/net/bonding
total 0
-r--r--r-- 1 root root 0 Jun 29 18:38 bond1
说明删除成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值