Linux(09):网卡绑定

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

一、bond模式

  • Mode=0(balance-rr) 表示负载分担round-robin,和交换机的聚合强制不协商的方式配合。

  • Mode=1(active-backup) 表示主备模式,只有一块网卡是active,另外一块是备的standby,这时如果交换机配的是捆绑,将不能正常工作,因为交换机往两块网卡发包,有一半包是丢弃的。

  • Mode=2(balance-xor) 表示XOR Hash负载分担,和交换机的聚合强制不协商方式配合。(需要xmit_hash_policy)

  • Mode=3(broadcast) 表示所有包从所有interface发出,这个不均衡,只有冗余机制...和交换机的聚合强制不协商方式配合。

  • Mode=4(802.3ad) 表示支持802.3ad协议,和交换机的聚合LACP方式配合(需要xmit_hash_policy)

  • Mode=5(balance-tlb) 是根据每个slave的负载情况选择slave进行发送,接收时使用当前轮到的slave

  • 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=6 下有丢包现象。 推荐选择mode=0

二、Linux网口绑定

通过网口绑定(bond)技术,可以很容易实现网口冗余,负载均衡,从而达到高可用高可靠的目的。前提约定:

  • 2个物理网口分别是:eth0,eth1

  • 绑定后的虚拟口是:bond0

  • 服务器IP是:192.168.0.100

  1. 第一步,配置设定文件:

  • /etc/sysconfig/network-scripts/ifcfg-bond0

    TYPE=Ethernet
    DEVICE=bond0
    BOOTPROTO=none
    ONBOOT=yes
    USERCTL=no
    IPADDR=192.168.0.100
    NETMASK=255.255.255.0
    NETWORK=192.168.0.0
    BROADCAST=192.168.0.255
    NM_CONTROLLED=no
    
  • /etc/sysconfig/network-scripts/ifcfg-eth0

    TYPE=Ethernet
    DEVICE=eth0
    BOOTPROTO=none
    ONBOOT=yes
    MASTER=bond0
    SLAVE=yes
    USERCTL=no
    
  • /etc/sysconfig/network-scripts/ifcfg-eth1

    TYPE=Ethernet
    DEVICE=eth1
    BOOTPROTO=none
    ONBOOT=yes
    MASTER=bond0
    SLAVE=yes
    USERCTL=no
    

第二步,修改modprobe相关设定文件,并加载bonding模块:

  • 在这里,我们直接创建一个加载bonding的专属设定文件/etc/modprobe.d/bonding.conf

    [root@test ~]# vi /etc/modprobe.d/bonding.conf

    #追加

    alias bond0 bonding

    options bonding mode=0 miimon=100

  • 加载模块(重启系统后就不用手动再加载了)

    [root@test ~]# modprobe bonding

  • 确认模块是否加载成功:

    [root@test ~]# lsmod | grep bonding

    bonding 100065 0

第三步,重启一下网络,然后确认一下状况:任意拔掉一根网线,然后再访问你的服务器,看网络是否还是通的。

[root@test ~]# /etc/init.d/network restart
[root@test ~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0
……
[root@test ~]# ifconfig | grep HWaddr
bond0 Link encap:Ethernet HWaddr 00:16:36:1B:BB:74
eth0 Link encap:Ethernet HWaddr 00:16:36:1B:BB:74
eth1 Link encap:Ethernet HWaddr 00:16:36:1B:BB:74

从上面的确认信息中,我们可以看到3个重要信息:

  • 现在的bonding模式是active-backup

  • 现在Active状态的网口是eth0

  • bond0,eth1的物理地址和处于active状态下的eth0的物理地址相同,这样是为了避免上位交换机发生混乱。

第四步,系统启动自动绑定、增加默认网关:

[root@test ~]# vi /etc/rc.d/rc.local
#追加
ifenslave bond0 eth0 eth1
route add default gw 192.168.0.1

三、/etc/modprobe.d/bonding.conf

四网卡绑定两对网卡需注意,不能使用追加的方式

  • 第一种:你可以看到,这种方式的话,多个bond口的模式就只能设成相同的了:

    alias bond0 bonding
    alias bond1 bonding
    options bonding max_bonds=2 miimon=200 mode=1
    
  • 第二种,这种方式,不同的bond口的mode可以设成不一样:

    alias bond0 bonding
    options bond0 miimon=100 mode=1
    install bond1 /sbin/modprobe bonding -o bond1 miimon=200 mode=0
    

bonding.conf 含义:

  • miimon 监视网络链接的频度,单位是毫秒,我们设置的是200毫秒。

  • max_bonds 配置的bond口个数

  • mode bond模式,在一般的实际应用中,0和1用的比较多。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31490526/viewspace-2637475/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31490526/viewspace-2637475/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值