十五、Bonding
一、 什么是 bonding
将多个物理网卡聚合成一个虚拟网卡,这样可以增加流量,增大负载。
二、 bonding 三个工作模式
0:负载均衡。默认是轮询模式。
1:主机-备机模式。
3:广播-容错,所有的包通过所有的 slave 口接受广播
三、 配置 bonding
[root@localhost ~]#vim /etc/modprobe.d/bonding.conf
alias bond0 bonding
options bond0 miimon=100(ms 毫秒) mode=0(bonding 工作模式
miimon=100:系统每 100ms 监测一次链路状态。
alias bond1 bonding
options bond1 miimon=100 mode=0
alias bond2 bonding
options bond2 miimon=100 mode=1
加载 bonding 模块
[root@localhost ~]#depmod
[root@localhost ~]#modprobe bonding
[root@localhost ~]#vlsmod | grep bonding
bonding 107911 0
现在添加 4 块网卡,2 块聚合 bond0,2 块聚合 bond1,最后 bond0 和 bond1 聚合成 bond2。
每个物理网卡都这样配
[root@localhost ~]#vim ifcfg-ethX
DEVICE=eth1 #是什么设备就写什么
NM_CONTROLLED=no
ONBOOT=yes
BOOTPROTO=none
SLAVE=yes
MASTER=bond0 #eth1,eth2 写 bond0;eth3,eth4 写 bond1
ifcfg-bond0 和 ifcfg-bond1 都按如下方式写
[root@localhost ~]#vim ifcfg-bond0
DEVICE=bond0 #是什么设备就写什么
NM_CONTROLLED=no
ONBOOT=yes
BOOTPROTO=static
SLAVE=yes
MASTER=bond2
ifcfg-bond2 需要按如下方式写
DEVICE=bond2
NM_CONTROLLED=no
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.1
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
下面是一个脚本便于查看 bonding 启动状态的
!/bin/bash
choice="$1"
case "$choice" in
start) #由于在重启网络的时候可能会出现网卡没有起来,所以最好手动起一遍
/etc/init.d/network restart
ifup eth1
ifup eth2
ifup eth3
ifup eth4
;;
stop)
ifdown eth1
ifdown eth2
ifdown eth3
ifdown eth4
;;
status) #bonding 状态的文件可以在/proc/net/bonding 和/sys/class/net 下进行查看
/etc/init.d/network status
echo -e"\n######################This is bond0:#################"
cat /proc/net/bonding/bond0
echo -e"\n####################This is bond1:###################"
cat /proc/net/bonding/bond1
echo -e "\n##########Thisis bond2:#############################"
cat /proc/net/bonding/bond2
;;
*)
echo "Usage:{start|stop|status}"
;;
esac
测试:
sar -n DEV 2 1000
可以查看每个网口数据流量的
当把 eth1 和 eth2 关闭的时候 bond2 正常运行。
bonding
[root@localhost ~]#/etc/init.d/NetworkManager stop //关闭服务
[root@localhost ~]#vim /etc/modprobe.d/bonding.conf //bonding 的配置文件
Alias bond0 bonding
[root@localhost ~]#cd /etc/sysconfig/network-scripts/
[root@localhost ~]#ls
[root@localhost ~]#cp -p ifcfg-eth0 ifcfg-bond //创建 bond0(这里用复制)
[root@localhost ~]#vim ifcfg-bond0
IPADDR=192.168.122.11
NETMASK=255.255.255.0
BONDING_OPTS=”miimon=100 mode=1”
[root@localhost ~]#vim ifcfg-eth0
MASTER=bond0
SLAVE=yes
[root@localhost ~]#cp -p ifcfg-eth0 ifcfg-eth1
[root@localhost ~]#vim ifcfg-eth1
[root@localhost ~]#service network restart //重启服务
[root@localhost ~]#cat /proc/net/bonding/bond0