网卡bond可以把多张网卡绑定为一个逻辑网卡,实现网卡的冗余,带宽扩容和负载均衡,会大幅度提升服务器的网络吞吐(I/O)。
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地址欺骗的方式在交换机不设置的情况下不太均衡地进行接收。
常用的有三种:
mode=0:平衡负载模式,有自动备援,但需要”Switch”支援及设定。
mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援。
mode=6:平衡负载模式,有自动备援,不必”Switch”支援及设定。
mode有七种工作状态可以用modeinfo bonding查看。需要说明的是如果想做成mode 0的负载均衡,仅仅设置这里options bond0 miimon=100 mode=0是不够的,与网卡相连的交换机必须做特殊配置(这两个端口应该采取聚合方式),因为做bonding的这两块网卡是使用同一个MAC地址.从 原理分析一下(bond运行在mode 0下):
mode 0下bond所绑定的网卡的IP都被修改成相同的mac地址,如果这些网卡都被接在同一个交换机,那么交换机的arp表里这个mac地址对应的端口就有多个,那么交换机接受到发往这个mac地址的包应该往哪个端口转发呢?正常情况下mac地址是全球唯一的,一个mac地址对应多个端口肯定使交换机迷惑 了。所以 mode0下的bond如果连接到交换机,交换机这几个端口应该采取聚合方式(cisco称 为 ethernetchannel,foundry称为portgroup),因为交换机做了聚合后,聚合下的几个端口也被捆绑成一个mac地址.我们 的解 决办法是,两个网卡接入不同的交换机即可。
mode6模式下无需配置交换机,因为做bonding的这两块网卡是使用不同的MAC地址。
实验准备:
通过网口绑定(bond)技术,可以实现网口冗余,负载均衡。
bond模式:mode 1
2个物理网口分别是:eth0、eth1
绑定虚拟端口是;bond0
服务器ip:192.168.1.225
1.备份eth0和eth1的网卡配置文件
[[email protected] ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth0{,.ori}
[[email protected] ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth1{,.ori}
2.编辑eth0和eth1网卡的配置文件
主要配置DEVICE,USERCTL,ONBOOT,MASTER,SLAVE,BOOTPROTO其他的不用配置,eth1网卡的配置文件和eth0一样就是把DEVICE的值改成eth1。
[[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
MASTER=bond0
SLAVE=yes
TYPE=Ethernet
NM_CONTROLLED=yes
PEERDNS=yes
IPV6INIT=no
3.配置虚拟网卡bond0
配置虚拟网卡我用的自动获取ip的方式,也可以静态配置ip
dhcp自动获取ip地址:
[[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp
USERCTL=no
PEERDNS=yes
IPV6INIT=no
用静态ip地址(本次实验以这种方式为例):
[[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
DNS1=192.168.18.1
NM_CONTROLLED=yes
PEERDNS=yes
DNS2=114.114.114.114
TYPE=Ethernet
IPV6INIT=no
IPADDR=192.168.1.225
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
4.修改modprobe相关的配置文件
编辑加载bonding的专属配置文件/etc/modprobe.d/bonding.conf,没有就在创建一个。
[[email protected] ~]# cat /etc/modprobe.d/bonding.conf
alias bond0 bonding
options bonding miimon=100 mode=1
5.加载模块(重启系统后就不用手动加载了)
[[email protected] ~]# modprobe bonding
6.确认模块是否加载成功
[[email protected] ~]# lsmod|grep bonding
bonding 133013 0
7.重启网络确认一下情况
[[email protected] ~]# /etc/init.d/network restart
Shutting down interface bond0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface:[ OK ]
Bringing up interface bond0:
Determining IP information for bond0... done.
[ OK ]
[[email protected] ~]# ifconfig|grep HWaddr
bond0 Link encap:Ethernet HWaddr 00:0C:29:9C:41:1C
eth0 Link encap:Ethernet HWaddr 00:0C:29:9C:41:1C
eth1 Link encap:Ethernet HWaddr 00:0C:29:9C:41:1C
现在查看的mac地址是一样的其实是不一样的如下所示
8.增加默认网关
启动系统自动绑定,增加默认网关
[[email protected] ~]# vim /etc/rc.d/rc.local
#追加
route add default gw 192.168.1.1 《==根据需求配置
9.将modprobe相关文件写入/etc/rc.local中
开机自动加载
[[email protected] ~]# grep "modprobe" /etc/rc.local
modprobe bonding miimon=100 mode=1
10.添加负载均衡工具ifenslave
ifenslave负载均衡工具可以将数据包有效的分配,通常结合交换机和路由使用。这时会新建一个bond0的虚拟设备,使用我们设置ip地址。这个时候eth0和eth1的工作模式混杂,什么数据都接收,但是数据过来之后ifenslave的底层驱动来做负载均衡,决定哪些数据规组里面的那个成员处理。
将负载均衡设置添加到/etc/rc.local中,开机自动加载
[[email protected] ~]# cat /etc/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don‘t
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
modprobe bonding miimon=10 mode=1
ifenslave bond0 eth0 eth1
11.添加两个虚拟网卡的方法
添加两个网卡就不能在/etc/modprobe.d/bonding.conf里面堆叠了。正确的做法是
alias bond0 bonding
alias bond1 bonding
options bonding max_bonds=2 miimon=200 mode=1
提示:配置好之后重启系统生效
12.测试
工作服务器可以拔掉第一块网卡的网线测试。虚拟机我们可以断开第一块网卡的连接,切记不是down掉第一块网卡而是断开第一块网卡的网络连接,在虚拟机的右下角断开连接。
原文地址:http://blog.51cto.com/10642812/2284372