Linux双网卡绑定

双网卡绑定这项继续特别适合利用再生产环境7x24小时的网络传输服务,采取双网卡绑定模式不仅可以提高网络传输速度,更重要的是,还可以确保其中一块网卡出现故障时,依然可以正常高效可靠的措施。

下面我会使用两种方案来完成网双卡绑定

  • 一种是传统的配置文件修改方案
  • 另一种是最新的命令生成配置文件方案。

什么是bond?

网卡bond是通过多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡,在生产场景中是一种常用的技术。Kernels 2.4.12及以后的版本均供bonding模块,以前的版本可以通过patch实现。

可以通过以下命令确定内核是否支持 bonding:

[root@oldboy network-scripts]# cat /boot/config-2.6.32-573.el6.x86_64 |grep -i bonding
CONFIG_BONDING=m

bond的主要常用的三种模式:

  • mode0(平衡负载模式):平时两块网卡均工作,且自动备援,但需要在与服务器本地网卡相连的交换机设备上进行端口聚合来支持绑定技术。
  • mode1(自动备援模式):平时只有一块网卡工作,在它故障后自动替换为另外的网卡。
  • mode6(平衡负载模式):平时两块网卡均工作,且自动备援,无须交换机设备提供辅助支持。(推荐)

其他模式介绍

  • balance-rr (mode=0)       默认, 有高可用 (容错) 和负载均衡的功能,  需要交换机的配置,每块网卡轮询发包 (流量分发比较均衡).
    • 表示负载分担round-robin,并且是轮询的方式比如第一个包走eth0,第二个包走eth1,直到数据包发送完毕。

    • 优点:流量提高一倍。

    • 缺点:需要接入交换机做端口聚合,否则可能无法使用。
  • active-backup (mode=1)  只有高可用 (容错) 功能, 不需要交换机配置, 这种模式只有一块网卡工作, 对外只有一个mac地址。缺点是端口利用率比较低。
    •  表示主备模式,即同时只有1块网卡在工作。

    • 优点:冗余性高。

    • 缺点:链路利用率低,两块网卡只有1块在工作。
  • balance-xor (mode=2)     不常用
  • broadcast (mode=3)        不常用
  • 802.3ad (mode=4)          IEEE 802.3ad 动态链路聚合,需要交换机配置,没用过
  • balance-tlb (mode=5)      不常用
  • balance-alb (mode=6)     有高可用 ( 容错 )和负载均衡的功能,不需要交换机配置  (流量分发到每个接口不是特别均衡)

bond模式小结:

    mode5和mode6不需要交换机端的设置,网卡能自动聚合。mode4需要支持802.3ad。mode0,mode2和mode3理论上需要静态聚合方式。


bond 模式 修改配置文件实现双网卡绑定

注意:

  • 必须保证服务器有两块同网段网卡设备

环境:

  • 已添加 网卡1 eth3
  • 已添加 网卡2 eth4

首先在/etc/sysconfig/network-scripts/下创建虚拟网卡bond6的配置文件ifcfg-bond6,内容如下:

1、新建Master配置文件

/etc/sysconfig/network-scripts/ifcfg-bond6

# 设备名
DEVICE=bond6
# 手动配置地址
BOOTPROTO=none
# 配置模式
BONDING_OPTS="miimon=100 mode=6"
# IP地址
IPADDR=192.168.0.100
# 子网掩码
PREFIX=24
# 网关地址
GATEWAY=192.168.0.1
# DNS1地址
DNS1=114.114.114.114
# DNS2地址
DNS2=8.8.8.8

2、新建Slave1配置文件

/etc/sysconfig/network-scripts/ifcfg-eth3

# 设备名
DEVICE=eth3
# 手动获取                                                            
BOOTPROTO=none
# master设备名
MASTER=bond6
# 开启SLAVE
SLAVE=yes
#是否允许普通用户管理此端口
USERCTL=no

3、新建Slave2配置文件

/etc/sysconfig/network-scripts/ifcfg-eth4

# 设备名
DEVICE=eth4
# 手动获取                                                            
BOOTPROTO=none
# master设备名
MASTER=bond6
# 开启SLAVE
SLAVE=yes
#是否允许普通用户管理此端口
USERCTL=no

4、重启网卡服务

service network restart

5、查看详情信息

cat /proc/net/bonding/bond6 

[root@oldboy ~]# cat /proc/net/bonding/bond6
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

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

Slave Interface: eth3
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:4c:6f:ad
Slave queue ID: 0

Slave Interface: eth4
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:ae:d5:87
Slave queue ID: 0

查看结果:

[root@oldboy ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:10:a5:56 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
    inet6 fe80::a00:27ff:fe10:a556/64 scope link 
       valid_lft forever preferred_lft forever
3: eth3: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond6 state UP qlen 1000
    link/ether 08:00:27:4c:6f:ad brd ff:ff:ff:ff:ff:ff
4: eth4: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond6 state UP qlen 1000
    link/ether 08:00:27:ae:d5:87 brd ff:ff:ff:ff:ff:ff
5: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN 
    link/ether 32:cb:6e:c9:fe:10 brd ff:ff:ff:ff:ff:ff
6: bond6: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 08:00:27:4c:6f:ad brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.100/24 brd 192.168.0.255 scope global bond6
    inet6 fe80::a00:27ff:fe4c:6fad/64 scope link tentative dadfailed 
       valid_lft forever preferred_lft forever

bond 模式  nmcli命令行实现双网卡绑定

注意:

  • 必须保证服务器有两块同网段网卡设备

环境:

  • 已添加 网卡1 eth3
  • 已添加 网卡2 eth4

1、创建Master配置文件

# nmcli connection add type bond con-name 设备名称 ifname 设备名称 mode 模式号 miimon 毫秒
nmcli connection add type bond con-name bond6 ifname bond6 mode 6 miimon 100

注:miimon:指定当发现一个链路恢复时,在激活该链路之前的等待时间,以毫秒计算

2、新建Slave1配置文件

# nmcli connection add type bond-slave ifname 设备名称 master master设备名称
nmcli connection add type bond-slave ifname eth3 master bond6

3、新建Slave2配置文件

# nmcli connection add type bond-slave ifname 设备名称 master master设备名称
nmcli connection add type bond-slave ifname eth4 master bond6

4、激活网路设备

复制代码
# 激活bond6网络设备
nmcli connection up "bond6"
# 激活eth3网络设备
nmcli connection up "bond-slave-eth3"
# 激活eth4网络设备
nmcli connection up "bond-slave-eth4"
复制代码

5、查看详情信息

cat /proc/net/bonding/bond6 
原文地址:https://www.cnblogs.com/zoe233/p/11917378.html