Linux系统配置双网卡绑定bond0

一、bonding简述

双网卡配置设置虚拟为一个网卡实现网卡的冗余,其中一个网卡坏掉后网络通讯仍可正常使用,实现网卡层面的负载均衡和高可用性。如今通常的企业都会使用双网卡接入,这样既能添加网络带宽,同时又能作相应的冗余,能够说是好处多多。而通常企业都会使用linux操做系统下自带的网卡绑定模式,固然如今网卡产商也会出一些针对windows操做系统网卡管理软件来作网卡绑定(windows操做系统没有网卡绑定功能 须要第三方支持)。html

1.1 bonding原理

网卡工做在混杂(promisc)模式,接收到达网卡的全部数据包,tcpdump工做用的也是混杂模式(promisc),将两块网卡的MAC地址修改成相同接收特定MAC的数据帧,而后把相应的数据帧传送给bond驱动程序进行处理。python

1.2 Bonding模式(bonding mode)

  • 轮询策略(round robin),mode=0,按照设备顺序依次传输数据包,提供负载均衡和容错能力linux

  • 主备策略(active-backup),mode=1,只有主网卡处于工做状态,备网卡处于备用状态,主网卡坏掉后备网卡开始工做,提供容错能力算法

  • 异或策略(load balancing (xor)),mode=2,根据源MAC地址和目的MAC地址进行异或计算的结果来选择传输设备,提供负载均衡和容错能力vim

  • 广播策略(fault-tolerance (broadcast)),mode=3,将全部数据包传输给全部接口经过所有设备来传输全部数据,一个报文会复制两份经过bond下的两个网卡分别发送出去,提供高容错能力windows

  • 动态连接聚合(lacp),mode=4,按照802.3ad协议的聚合自动配置来共享相同的传输速度,网卡带宽最高能够翻倍,链路聚合控制协议(LACP)自动通知交换机聚合哪些端口,须要交换机支持 802.3ad协议,提供容错能力服务器

  • 输出负载均衡模式(transmit load balancing),mode=5,输出负载均衡模式,只有输出实现负载均衡,输入数据时则只选定其中一块网卡接收,须要网卡和驱动支持ethtool命令网络

  • 输入/输出负载均衡模式(adaptive load balancing),mode=6,输入和输出都实现负载均衡,须要网卡和驱动支持ethtool命令并发

 

二、网卡配置文件的配置

2.1 配置环境

  环境:系统CentOS 6.7 + 虚拟机 VMware 12负载均衡

  至少两块物理网卡(VMware上添加eth0,eth1)  

2.2 须要添加或修改的配置文件有5个(mode=1)

  这5个配置文件是:

    /etc/sysconfig/network-scripts/ifcfg-eth{0,1}

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

    /etc/modprobe.d/dist.conf

    /etc/rc.local

2.2.1 /etc/sysconfig/network-scripts/ifcfg-{eth0,eth1,bonding0}修改或添加

提示:先备份好eth0和eth1,再修改这几个文件

如下是修改好的三个网卡配置文件的参数

[root@ant network-scripts]# vimdiff ifcfg-eth0 ifcfg-eth1 ifcfg-bond0

2.2.2 修改/etc/modprobe.d/dist.conf文件

 在此文件中添加如下内容:

alias bond0 bonding,表示系统在启动时加载bonding模块,对外虚拟网络接口设备为 bond0

miimon=100,表示系统每100ms监测一次链路链接状态,若是有一条线路不通就转入另外一条线

mode=1,表示绑定模式为1

primary=eth0,系统首先eth0做为bond0接口与外界信息的传输接口

2.2.3 修改配置文件/etc/rc.local

在此文件中添加如下内容:

modprobe bonding miimon=100 mode=1

2.2.4 重启网络(service network restart),并查看三个接口的mac地址

使用ifconfig命令显示,bond0,eth1,eth2物理地址相同,提示三个网卡均经过一个ip主机端口与外界通讯

可是,咱们能够看到,在mode=1的状况下,当前bond0采用eth0通讯,实际的物理网卡地址见下图:

 

 

三、验证网络的连通性

没有丢包,网络连通性可。

[root@ant ~]# tcpdump port 22 -Stn -c 6
tcpdump: WARNING: eth0: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
IP 192.168.253.129.ssh > 192.168.253.1.50595: Flags [P.], seq 2999128300:2999128400, ack 2399104519, win 141, length 100
IP 192.168.253.129.ssh > 192.168.253.1.50595: Flags [P.], seq 2999128400:2999128724, ack 2399104519, win 141, length 324
IP 192.168.253.1.50595 > 192.168.253.129.ssh: Flags [.], ack 2999128724, win 254, length 0
IP 192.168.253.129.ssh > 192.168.253.1.50595: Flags [P.], seq 2999128724:2999128888, ack 2399104519, win 141, length 164
IP 192.168.253.129.ssh > 192.168.253.1.50595: Flags [P.], seq 2999128888:2999129148, ack 2399104519, win 141, length 260
IP 192.168.253.1.50595 > 192.168.253.129.ssh: Flags [.], ack 2999129148, win 252, length 0
6 packets captured
7 packets received by filter
0 packets dropped by kernel

 

附:bond的七种工做模式介绍的详细介绍

一、mode=0(balance-rr)(平衡抡循环策略)

链路负载均衡,增长带宽,支持容错,一条链路故障会自动切换正常链路。交换机须要配置聚合口,思科叫port channel。
特色:传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1….一直循环下去,直到最后一个传输完毕),此模式提供负载平衡和容错能力;可是若是一个链接或者会话的数据包从不一样的接口发出的话,中途再通过不一样的链路,在客户端颇有可能会出现数据包无序到达的问题,而无序到达的数据包须要从新要求被发送,这样网络的吞吐量就会降低


二、mode=1(active-backup)(主-备份策略)

这个是主备模式,只有一块网卡是active,另外一块是备用的standby,全部流量都在active链路上处理,交换机配置的是捆绑的话将不能工做,由于交换机往两块网卡发包,有一半包是丢弃的。
特色:只有一个设备处于活动状态,当一个宕掉另外一个立刻由备份转换为主设备。mac地址是外部可见得,从外面看来,bond的MAC地址是惟一的,以免switch(交换机)发生混乱。此模式只提供了容错能力;因而可知此算法的优势是能够提供高网络链接的可用性,可是它的资源利用率较低,只有一个接口处于工做状态,在有 N 个网络接口的状况下,资源利用率为1/N


三、mode=2(balance-xor)(平衡策略)

表示XOR Hash负载分担,和交换机的聚合强制不协商方式配合。(须要xmit_hash_policy,须要交换机配置port channel)
特色:基于指定的传输HASH策略传输数据包。缺省的策略是:(源MAC地址 XOR 目标MAC地址) % slave数量。其余的传输策略能够经过xmit_hash_policy选项指定,此模式提供负载平衡和容错能力


四、mode=3(broadcast)(广播策略)

表示全部包从全部网络接口发出,这个不均衡,只有冗余机制,但过于浪费资源。此模式适用于金融行业,由于他们须要高可靠性的网络,不容许出现任何问题。须要和交换机的聚合强制不协商方式配合。
特色:在每一个slave接口上传输每一个数据包,此模式提供了容错能力


五、mode=4(802.3ad)(IEEE 802.3ad 动态连接聚合)

表示支持802.3ad协议,和交换机的聚合LACP方式配合(须要xmit_hash_policy).标准要求全部设备在聚合操做时,要在一样的速率和双工模式,并且,和除了balance-rr模式外的其它bonding负载均衡模式同样,任何链接都不能使用多于一个接口的带宽。
特色:建立一个聚合组,它们共享一样的速率和双工设定。根据802.3ad规范将多个slave工做在同一个激活的聚合体下。
外出流量的slave选举是基于传输hash策略,该策略能够经过xmit_hash_policy选项从缺省的XOR策略改变到其余策略。须要注意的是,并非全部的传输策略都是802.3ad适应的,尤为考虑到在802.3ad标准43.2.4章节说起的包乱序问题。不一样的实现可能会有不一样的适应 性。
必要条件:
条件1:ethtool支持获取每一个slave的速率和双工设定
条件2:switch(交换机)支持IEEE 802.3ad Dynamic link aggregation
条件3:大多数switch(交换机)须要通过特定配置才能支持802.3ad模式


六、mode=5(balance-tlb)(适配器传输负载均衡)

是根据每一个slave的负载状况选择slave进行发送,接收时使用当前轮到的slave。该模式要求slave接口的网络设备驱动有某种ethtool支持;并且ARP监控不可用。
特色:不须要任何特别的switch(交换机)支持的通道bonding。在每一个slave上根据当前的负载(根据速度计算)分配外出流量。若是正在接受数据的slave出故障了,另外一个slave接管失败的slave的MAC地址。
必要条件:ethtool支持获取每一个slave的速率


七、mode=6(balance-alb)(适配器适应性负载均衡)

在5的tlb基础上增长了rlb(接收负载均衡receive load balance).不须要任何switch(交换机)的支持。接收负载均衡是经过ARP协商实现的.
特色:该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receive load balance, rlb),并且不须要任何switch(交换机)的支持。接收负载均衡是经过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的惟一硬件地址,从而使得不一样的对端使用不一样的硬件地址进行通讯。来自服务器端的接收流量也会被均衡。当本机发送ARP请求时,bonding驱动把对端的IP信息从ARP包中复制并保存下来。当ARP应答从对端到达 时,bonding驱动把它的硬件地址提取出来,并发起一个ARP应答给bond中的某个slave。
使用ARP协商进行负载均衡的一个问题是:每次广播 ARP请求时都会使用bond的硬件地址,所以对端学习到这个硬件地址后,接收流量将会所有流向当前的slave。这个问题能够经过给全部的对端发送更新 (ARP应答)来解决,应答中包含他们独一无二的硬件地址,从而致使流量从新分布。
当新的slave加入到bond中时,或者某个未激活的slave从新 激活时,接收流量也要从新分布。接收的负载被顺序地分布(round robin)在bond中最高速的slave上
当某个链路被从新接上,或者一个新的slave加入到bond中,接收流量在全部当前激活的slave中所有从新分配,经过使用指定的MAC地址给每一个 client发起ARP应答。下面介绍的updelay参数必须被设置为某个大于等于switch(交换机)转发延时的值,从而保证发往对端的ARP应答 不会被switch(交换机)阻截。
必要条件:
条件1:ethtool支持获取每一个slave的速率;
条件2:底层驱动支持设置某个设备的硬件地址,从而使得老是有个slave(curr_active_slave)使用bond的硬件地址,同时保证每一个bond 中的slave都有一个惟一的硬件地址。若是curr_active_slave出故障,它的硬件地址将会被新选出来的 curr_active_slave接管其实mod=6与mod=0的区别:mod=6,先把eth0流量占满,再占eth1,….ethX;而mod=0的话,会发现2个口的流量都很稳定,基本同样的带宽。而mod=6,会发现第一个口流量很高,第2个口只占了小部分流量。

mode5和mode6不须要交换机端的设置,网卡能自动聚合。mode4须要支持802.3ad。mode0,mode2和mode3理论上须要静态聚合方式。
但实测中mode0能够经过mac地址欺骗的方式在交换机不设置的状况下不太均衡地进行接收。

 

 

参考:

https://www.cnblogs.com/st-jun/p/LinuxLoadbalance.html

https://www.linuxidc.com/Linux/2017-11/148410.htm?utm_source=tuicool&utm_medium=referral

https://www.cnblogs.com/luoahong/p/6243065.html

相关文章
相关标签/搜索