Ubuntu 配置双网卡绑定,实现负载均衡

Ubuntu 配置双网卡绑定,实现负载均衡

1、Bond的工作模式

Linux bonding驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余。

bonding一共有7种工作模式(mode):

  • 1)、bond=0,(balance-rr) Round-robin policy: (平衡轮询策略):传输数据包顺序是依次传输,直到最后一个传输完毕,此模式提供负载平衡和容错能力。
  • 2)、bond=1,(active-backup) Active-backup policy:(活动备份策略):只有一个设备处于活动状态。一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得。此模式提供了容错能力。
  • 3)、bond=2,(balance-xor) XOR policy:(平衡策略):传输根据[(源MAC地址xor目标MAC地址)mod设备数量]的布尔值选择传输设备。 此模式提供负载平衡和容错能力。
  • 4)、bond=3,(broadcast) Broadcast policy:(广播策略):将所有数据包传输给所有设备。此模式提供了容错能力。
  • 5)、bond=4,(802.3ad) IEEE 802.3ad Dynamic link aggregation. IEEE 802.3ad 动态链接聚合:创建共享相同的速度和双工设置的聚合组。此模式提供了容错能力。每个设备需要基于驱动的重新获取速度和全双工支持;如果使用交换机,交换机也需启用 802.3ad 模式。
  • 6)、bond=5,(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡):通道绑定不需要专用的交换机支持。发出的流量根据当前负载分给每一个设备。由当前设备处理接收,如果接受的设 备传不通就用另一个设备接管当前设备正在处理的mac地址。
  • 7)、bond=6,(balance-alb) Adaptive load balancing: (适配器负载均衡):包括mode5,由 ARP 协商完成接收的负载。bonding驱动程序截获 ARP在本地系统发送出的请求,用其中之一的硬件地址覆盖从属设备的原地址。就像是在服务器上不同的人使用不同的硬件地址一样。

2、配置步骤

以下步骤为配置bond=6的双网卡绑定步骤,其他模式的方法一样;

2.1、安装ifenslave软件

fenslave为一种粘合和分离式的软件,可以将数据包有效的分配到bonding驱动

sudo apt install ifenslave

2.2、/etc/modules文件

在/etc/modules文件中加入以下配置

bonding mode=6 miimon=100

mode=6 表示采用模式1;
miimon是用来进行链路监测的。比如miimon=100,表示系统每100ms监测一次链路连接状态,如果有一条线路不通就切换另一条线路。

2.3、修改/etc/network/interfaces文件配置

首先需要确定网卡接口的名称,可以通过ifconfig命令查看,当前是网卡接口分别是ens33和ens34;在/etc/network/interfaces文件增加如下配置

# 双网卡配置
auto ens33
iface ens33 inet manual
bond-master bond0

auto ens34
iface ens34 inet manual
bond-master bond0

auto bond0
iface bond0 inet static
address 192.168.20.10
netmask 255.255.255.0
gateway 192.168.20.2
dns-nameservers 192.168.20.1 119.29.29.29
bond-slaves ens33 ens34
bond-lacp-rate 1
bond-mode 6
bond-miimon 100

2.4、加载binding模块

#  载入模块
$ sudo modprobe bonding
# 查看模块,如果模块已经加载,显示出来
$ sudo lsmod|grep bonding
bonding               163840  0

2.5、查看状态

  • 查看网络配置
$ ifconfig
bond0     Link encap:以太网  硬件地址 00:0c:29:34:7a:4a
          inet 地址:192.168.20.10  广播:192.168.20.255  掩码:255.255.255.0
          inet6 地址: fe80::20c:29ff:fe34:7a4a/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  跃点数:1
          接收数据包:964 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:4205 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1000
          接收字节:75022 (75.0 KB)  发送字节:300032 (300.0 KB)

ens33     Link encap:以太网  硬件地址 00:0c:29:34:7a:4a
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  跃点数:1
          接收数据包:2740 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:3416 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1000
          接收字节:3899473 (3.8 MB)  发送字节:278409 (278.4 KB)

ens34     Link encap:以太网  硬件地址 00:0c:29:34:7a:54
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  跃点数:1
          接收数据包:1369 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:2125 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1000
          接收字节:106846 (106.8 KB)  发送字节:139061 (139.0 KB)
  • 查看binding状态
$ cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: adaptive load balancing
Primary Slave: None
Currently Active Slave: ens33
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: ens33
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:34:7a:4a
Slave queue ID: 0

Slave Interface: ens34
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:34:7a:54
Slave queue ID: 0

2.6、验证测试

  • 物理上关闭一个网卡(拔网线)
# 关闭前,速率是2000Mb/s
$ ethtool bond0
Settings for bond0:
    Supported ports: [ ]
    Supported link modes:   Not reported
    Supported pause frame use: No
    Supports auto-negotiation: No
    Advertised link modes:  Not reported
    Advertised pause frame use: No
    Advertised auto-negotiation: No
    Speed: 2000Mb/s
    Duplex: Full
    Port: Other
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: off
Cannot get wake-on-lan settings: Operation not permitted
    Link detected: yes

# 关闭后,速率速率变成1000Mb/s
$ ethtool bond0
Settings for bond0:
    Supported ports: [ ]
    Supported link modes:   Not reported
    Supported pause frame use: No
    Supports auto-negotiation: No
    Advertised link modes:  Not reported
    Advertised pause frame use: No
    Advertised auto-negotiation: No
    Speed: 1000Mb/s
    Duplex: Full
    Port: Other
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: off
Cannot get wake-on-lan settings: Operation not permitted
    Link detected: yes

注意:不可以使用ifdown 关闭网卡,会导致网络中断

3、总结

Linux bonding一共有7种工作模式(mode),如果是想要加大网卡的吞吐量,通常会使用mode=6的模式,如果是注重网络的稳定,通常会使用mode=1的模式;

原文地址:http://blog.51cto.com/balich/2131991

时间: 2024-07-31 13:07:17

Ubuntu 配置双网卡绑定,实现负载均衡的相关文章

双网卡绑定之负载均衡高可用(bond)

一.bond的工作原理 所谓的bond就是将两块或两块以上网卡绑定同一个IP地址对外提供服务,从而实现负载均衡高可用.当然,直接给两块网卡设置同一IP地址 是不可能的.通过bonding,虚拟一块网卡对外提供连接, 物理网卡的被修改为相同的MAC地址. 二.bond工作模式分类 1)Mode 0 (balance-rr) 轮转(Round-robin)策略:从头到尾顺序的在每一个slave 接口上面发送数据包.本模式提供负载均衡和容错的能力 2)Mode 1 (active-backup) 活动

Windows Server 2012 R2配置双网卡绑定

生产环境的服务器硬件设备:2块网卡,分别接入2根网线 需要实现的效果:无论拔掉哪1根网线,都不会中断网络,实现网络的负载均衡,保证网络的持续可用. 前提条件:与这2块网卡相连的交换机必须做特殊配置(即这2个端口应该采取聚合方式),因为绑定的这2块网卡是使用同一个MAC地址. 1.在VMware Workstation中新增1块网卡,并查看网卡设备: 2.将2块网卡的IP地址都设置为"自动获得IP地址": Ethernet0: Ethernet1: 3.设置NIC组合: 点击NIC组合后

Ubuntu server 14.04 LTS 多网卡绑定实现负载均衡

将两张网卡绑定,共用一个IP,实现冗余效果.实际上linux双网卡的绑定模式有7种: mode=0 表示 load balancing (round-robin)为负载均衡方式,两块网卡都工作. mode=1 表示 fault-tolerance (active-backup)提供冗余功能,工作方式是主 从的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份. mode=2 表示 XOR policy 为平衡策略.此模式提供负载平衡和容错能力 mode=3 表示 broadcast 为广

Linux如何配置双网卡绑定bond

什么是bind? 将多块网卡虚拟成为一块网卡的技术,通过bond技术让多块网卡看起来是一个单独的以太网接口设备并具有相同的ip地址. 原理: 网卡工作在混杂(promisc)模式,接收到达网卡的所有数据包,tcpdump工作用的也是混杂模式(promisc),将两块网卡的 MAC地址修改为相同接收特定MAC的数据帧,然后把相应的数据帧传送给bond驱动程序进行处理. mode=1:在主备模式下,只有主网卡eth0工作,eth1作为备份网卡是不工作的,只有当一个网络接口失效时(例如交换机掉电等),

Ubuntu 配置双网卡的问题

一台双网卡电脑拥有两个网关是不可能的,因为默认网关(default gateway)只能是一个.给Ubuntu Linux服务器安装两块网卡,分别设置不同的ip和网关(内网和外网),外网的通过外网网卡来访问,内网的通过内网网卡来访问,似乎实现起来很简单,但有些问题,因为默认网关(default gateway)只能是一个! 解决的办法就是: 1.将其中一块网卡(如外网)设置默认网关,另外一块网卡eth1不设置网关 sudo vi /etc/network/interfaces # The loo

Linux下双网卡绑定(bonding技术)

http://www.cnblogs.com/qmfsun/p/3810905.html Linux网卡绑定探析 2013-08-20 15:39:31 现在很多服务器都自带双千兆网口,利用网卡绑定既能增加网络带宽,同时又能做相应的冗余,目前应用于很多的场景.linux操作系统下自带的网卡绑定模式,Linux bonding驱动提供了一个把多个网络接口设备捆绑为单个网络接口设置来使用,用于网络负载均衡及网络冗余.当然现在网卡产商也会出一些针对windows操作系统网卡管理软件来做网卡绑定(win

RHEL6子接口及双网卡绑定配置

RHEL6子接口及双网卡绑定配置 1.子接口配置 Linux就是一台路由器,只要开启路由转发功能.CISCO中,我们知道子接口的配置为fa0/0.1,那么在Linux中,子接口如何配置呢? 虚拟主机可以配置多大254个子接口,下面且看子接口的配置: 创建子接口配置文件 [[email protected] ~]# cd /etc/sysconfig/net netconsole       network          networking/      network-scripts/ [[

Linux平台双网卡绑定技术实现负载均衡(网卡聚合)bonding

Linux平台双网卡绑定技术实现负载均衡 保持服务器的高可用性是企业级 IT 环境的重要因素.其中最重要的一点是服务器网络连接的高可用性.网卡(NIC)绑定技术有助于保证高可用性特性并提供其它优势以提高网络性能. 双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作.其实这项技术在Sun和Cisco中早已存在,被称为Trunking和Etherchannel技术,在Linux的2

RedHat 7配置bonding双网卡绑定

redhat 7虽然新增了teaming技术支持双网卡绑定,但bonding技术依然可以沿用,不过与redhat 6的配置稍微有一点区别. 配置负载均衡模式的bond绑定 创建并编辑bond0配置文件:vi ifcfg-bond0,并填写以下内容:其中mode=6代表MAC地址不同的负载均衡模式   BOOTPROTO=static DEVICE=bond0 NAME=bond0 TYPE=Bond BONDING_MASTER=yes ONBOOT=yes IPADDR=192.168.10.