数据链路层的负载均衡(Bonding)

数据链路层的负载均衡
   Linux服务器实施双网卡绑定(Bonding),可增加吞吐量,实现负载均衡,同时实现高可用。(均衡冗余)(数据链路层唯一负载均衡)
   Linux双网卡绑定使两块网卡虚拟成一块网卡,该网卡的驱动是bonding。(在/boot/config*可查看内核是否支持BONDING模块)。

配置方法:
   (环境:VMware CentOS7.2 双网卡)
   (下面配置,使用nmcli网络管理工具)
   1.查看网卡名称及状态
 
    
  1. [root@localhost 桌面]# nmcli device status
  2. 设备 类型 状态 CONNECTION
  3. virbr0 bridge 连接的 virbr0
  4. eno16777736 ethernet 连接的 eno16777736
  5. eno33554984 ethernet 连接的 有线连接 1
  6. virbr0-nic tap 连接的 virbr0-nic
  7. lo loopback 未管理 --
   2.配置网卡虚拟bond0及配置模式(配置为负载均衡轮循模式)
 
    
  1. [root@localhost 桌面]# nmcli connection add type bond con-name bond0 ifname bond0 mode balance-rr
  2. 成功添加的连接 'bond0'8654ebdb-99ac-4abb-9862-c16cd63a033f)。
   3.将物理网卡绑定到bond0  
 
       
  1. [root@localhost 桌面]# nmcli connection add type bond-slave ifname eno16777736 master bond0
  2. 成功添加的连接 'bond-slave-eno16777736'7d5cd0c8-703b-4fd3-8f86-e909700cc3a1)。
  3. [root@localhost 桌面]# nmcli connection add type bond-slave ifname eno33554984 master bond0
  4. 成功添加的连接 'bond-slave-eno33554984'2c79b9c4-8a3e-4f27-9cd0-33cc30a51d3c)。
   4.启动绑定的物理网卡
 
       
  1. [root@localhost 桌面]# nmcli connection up bond-slave-eno16777736
  2. 成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/5
  3. [root@localhost 桌面]# nmcli connection up bond-slave-eno33554984
  4. 成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/6
   5.启动虚拟bond0网卡
 
       
  1. [root@localhost 桌面]# nmcli connection up bond0
  2. Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
   6.设置静态IP,取消DHCP,设置手动模式
 
       
  1. [root@localhost 桌面]# nmcli connection modify bond0 ipv4.addresses 192.168.1.166/24 ipv4.gateway 192.168.1.1 ipv4.dns 192.168.1.1
  2. [root@localhost 桌面]# nmcli con modify team0 ipv4.method manual
  3. [root@localhost 桌面]# service network restart

bond七种模式:
   Mode=0(blance-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。

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

    mode0下bond所绑定的网卡的IP都被修改成相同的mac地址,如果这些网卡都被接在同一个交换机,那么交换机的arp表里这个mac地址对应的端口就有多个,那么交换机接受到发往这个mac地址的包应该往哪个端口转发呢?正常情况下mac地址是全球唯一的,一个mac地址对应多个端口肯定使交换机迷惑了。所以mode0下的bond如果连接到交换机,交换机这几个端口应该采取聚合方式(cisco称为ethernetchannel,foundry称为portgroup),因为交换机做了聚合后,聚合下的几个端口也被捆绑成一个mac地址.解决办法是,两个网卡接入不同的交换机即可。
   
参考博客:
http://www.cnblogs.com/lcword/p/5914089.html
http://blog.chinaunix.net/uid-20767811-id-5115849.html

你可能感兴趣的:(负载均衡与高可用)