Centos下实现多网卡绑定

实现多网卡绑定在Centos6和Centos7可采用bonding方式,Centos7上team网络组也可实现,并且功能更强大。

  • Linux bonding 模块提供一种将多个网卡聚合成一块逻辑捆绑网卡的实现方法。 捆绑的网卡拥有多种模式,根据模式的特性,可实现网络负载均衡,网络冗余切换,提高网络吞吐量等功能。

大多流行Linux发行版都已装载bonding模块,及其用户控制工具ifenslave。查询语句:

modinfo bonding


  • “频道绑定”、“以太网绑定”、“端口聚合”、“频道成组”、“NIC 成组”、“链接合并” 等等。这个最初在 Linux 内核中应用的概念泛指“绑定”。Centos7上以网络组代表这个概念的最新应用。网络组依靠teamd模块驱动实现。

检查teamd模块语句:

rpm -q teamd

一、bonding方式

bonding参数介绍

设定bonding 驱动参数值,以配置成需要的所需工作方式。以下并未列出全部参数,更多详见文档

/usr/share/doc/kernel-doc-2.6.32/Documentation/networking/bonding.txt

此文档需要安装kernel-doc rpm包。

1、mode模式设定

指定一种网卡绑定策略。常用模式为0,1,4,6。

balance-rr or 0 

    round-robin,平衡轮循策略。依次在活动的slave上传输数据包。

    次模式提供负载均衡,网络冗余。

active-backup or 1

    主备策略。只有一个slave处于激活工作状态,当且仅当活动的slave失败时,去激活下一个slave工作。为避免交换机产生混乱,绑定网口的MAC地址对外只有一个接口上可见。

    此模式提供网络冗余。

balance-xor or 2

     XOR策略。基于指定的传输HASH策略传输数据包。缺省的策略是:(源MAC地址 XOR 目标MAC地址)% slave数量。其他的传输策略可以通过xmit_hash_policy选项指定。

    此模式提供负载平衡和网络冗余。

broadcast or 3

    广播策略。在所有slave上传输所有数据包。

    此模式提供网络冗余。

802.3ad or 4

    IEEE 802.3ad 链接聚合策略。创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。

      条件1:ethtool支持获取每个slave的速率和双工设定

      条件2:switch(交换机)支持IEEE802.3ad Dynamic link aggregation。多数交换机需要配置启用802.3ad模式。

    此模式可提高网络吞吐量。

balance-tlb or 5

    适应传输负载均衡策略。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。

    条件:ethtool支持获取每个slave的速率和双工设定

    此模式提供负载平衡和网络冗余。

balance-alb or 6

    适应负载均衡模式。该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receiveload balance, rlb)。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的目标硬件地址来和本机通信。

    条件1ethtool支持获取每个slave的速率;

      条件2:底层驱动支持设置某个设备的硬件地址。

      此模式支持负载均衡和网络冗余。

需要说明的是:active-backup、balance-tlb 和 balance-alb 模式不需要交换机的任何特殊配置。其他绑定模式需要配置交换机以便整合链接。

2、fail_over_mac

指定active-backup模式下bond及slave的MAC地址设定

none or 0

    默认值。激活某一slave时,将所有slave及bond设置为该设备的MAC地址。

active or 1

    bond的MAC地址跟随当前活动slave的MAC地址。在slave失败切换时,bond的MAC地址进行改变,而不是slave。这种模式适合slave设备不能自己更改MAC地址的情况。

follow or 2

    bond的MAC地址进行通常性选择。通常,bond的MAC地址被设定为第一个激活的slave,但其他处于备用状态下的slave不会被设定该MAC地址。

3、miimon

MII 链路检测频率设定,单位为毫秒,默认值为0。

4、primary

设定值为网卡设备名(eth0,eth1)。指定active-backup模式下,只要该slave可用时,总是指定其为活动slave。


配置实例

在目录/etc/sysconfig/network-scripts/,使用配置文件ifcfg-bondN创建bonding组,N为接口序号。

bond配置文件

DEVICE=bond0
NAME=bond0
TYPE=Bond
BONDING_MASTER=yes
IPADDR=10.1.252.234
PREFIX=16
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="miimon=100 mode=1 primary=eth1 fail_over_mac=1"

这里指定mode模式为1,即active-backup,监听间隔为100毫秒,主设备为eth1。如果指定primary选项,fail_over_mac值要指定为1。

slave配置文件

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

DEVICE=eth2
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes

配置完成后,重启网络服务,注意在Centos6上关掉NetworkManager服务。

service network restart

查看接口状态,slave的MAC地址设为不同地址,bond0跟随活动slave的MAC地址,因为fail_over_mac=1。状态都为up。

bond0可以使用命令ifup bond0/ifdown bond0启用或禁用

blob.png

查看bonding状态

cat /proc/net/bonding/bond0

可以看到模式,主设备信息,当前活动slave,及各slave状态。

blob.png

冗余测试试验

从另外一个主机ping bond0 IP:10.1.252.234。网络连通。

blob.png

刚才查看bond状态,可知活动slave为eth1,现在在虚拟机控制台断掉eth1

bond状态信息中,活动slave已切换为eth2,而且eth1状态为down

blob.png

查看接口MAC,bond0跟随eth2的MAC地址blob.png

网络ping没有问题,此处体现了active-backup模式的冗余功能。

blob.png

现在恢复eth1,

blob.png

网络连通没问题

blob.png

二、网络组方式

网络组的守护进程,teamd,使用libteam控制一个网络组驱动的一个实例,此实例添加硬件设备驱动多个实例来组成网络连接的成组。网络组驱动对内核其他部分呈现一个接口来调用,这个接口一般命名为team0,team1之类。用户可以以JASON格式配置一个网络组实例,配置当中用runner来指定teamd运行的特性,相当于bonding方式中的mode。

主接口和从属接口的默认行为:

  1. 启动主接口不会自动启动端口接口。

  2. 启动端口接口总是会启动主接口。

  3. 停止主接口总是会停止端口接口。

  4. 没有端口的主机可启动静态 IP 连接。

  5. 没有端口的主机在启动 DHCP 连接时会等待端口。

  6. 添加附带载波的端口后,使用 DHCP 连接的主机会等待端口完成连接。

  7. 添加不附带载波的端口后,使用 DHCP 连接的主机会让端口继续等待。

runner可配置成:  

  • broadcast(可将数据传送到所有端口)

  • round-robin(可按顺序将数据传送到所有端口)

  • active-backup(使用一个端口或链接时其他则处于备用状态)

  • loadbalance(使用主动 Tx 负载平衡及基于 BPF 的 Tx 端口选择程序)

  • lacp(采用 802.3ad 链接合并控制协议)

配置实例

使用ifcfg文件配置一个网络组,路径为/etc/sysconfig/network-scripts/ifcfg-team0

配置主接口文件

DEVICE=team0
DEVICETYPE=Team
ONBOOT=yes
BOOTPROTO=none
IPADDR=10.1.252.235
PREFIX=16
TEAM_CONFIG='{"runner": {"name": "activebackup","hwaddr_policy": "by_active"}}'

这里指定运行方式为activebackup,hwaddr_policy相当于bonding中的fail_over_mac参数,指定硬件地址策略为by_active。

配置从属接口文件

ifcfg-tp1

DEVICE=eno33554984
NAME=tp1
DEVICETYPE=TeamPort
ONBOOT=yes
TEAM_MASTER=team0
TEAM_PORT_CONFIG='{"prio": 100}'

ifcfg-tp2

DEVICE=eno50332208
NAME=tp2
DEVICETYPE=TeamPort
ONBOOT=yes
TEAM_MASTER=team0
TEAM_PORT_CONFIG='{"prio": 50}'

这里指定了端口优先权。

~]$ ifup team0    #启动team0主接口,创建守护进程teamd
~]$ teamdctl team0 state    #查看teamd状态

blob.png

blob.png

可以看到主接口已创建,但是从属接口没有加进来。ip命令查看,team0处于down状态。

~]$ ifup tp1
~]$ ifup tp2           #启动从属接口

blob.pngblob.png

可以看到team0 网络组已正常运行。


更多信息查询请参考:rhel7联网指南–网络组






原创文章,作者:cutemsyu,如若转载,请注明出处:http://www.178linux.com/45043

(0)
上一篇 2016-09-13 15:10
下一篇 2016-09-13 15:19

相关推荐

  • VIM 文 本 编 辑 工 具-20160808

    VIM 文 本 编 辑 工 具 §·学习大纲   一·使用vi和vim的三种主要模式 二·扩展模式下基本操作 三·命令模式下基本操作 四·编辑模式下基本操作 五·VIM寄存器 六·编辑二进制文件 七·可视化模式 八·多文件模式 九·使用多个“窗口” 十·定制vim的工作特性 十一·VIM了解更多 十二·练习题     §·使用v…

    Linux干货 2016-08-10
  • Boot目录下内容丢失导致系统无法启动

    Boot目录下内容丢失导致系统无法启动 笔者朋友近期在一次学习过程中不慎将虚拟机中boot目录下内容丢失,导致系统无法启动。当然此前他并不知道是这样,只是应为莫名的弹出框报错所有导致系统无法启动。此后朋友将此故障告知笔者,笔者本身其实也是小白刚刚学习linux不就,但是对这些稀奇古怪的故障感觉很有兴趣,所以笔者就掉进坑里搞了好久才搞出来点眉目来。为了让更多学…

    Linux干货 2016-10-24
  • ldd 的一个安全问题

    我们知道“ldd”这个命令主要是被程序员或是管理员用来查看可执行文件所依赖的动态链接库的。是的,这就是这个命令的用处。可是,这个命令比你想像的要危险得多,也许很多黑客通过ldd的安全问题来攻击你的服务器。其实,ldd的安全问题存在很长的时间了,但居然没有被官方文档所记录来下,这听上去更加难以理解了。怎么?是不是听起来有点不可思议?下面,让我为你细细道来。 首…

    Linux干货 2016-05-05
  • 网络基础笔记

    网络管理笔记 1. 网络概念:     一组网络设备或计算机,通过无形的规则链接起来的体系!    2. 应用程序种类:     (1)批处理应用程序:            FTP、TFTP、库存更新    &nbsp…

    Linux干货 2017-03-16
  • 第三周n28

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 who | cut -d ” ” -f 1 | sort -u 2、取出最后登录到当前系统的用户的相关信息。 who | tail -1 3、取出当前系统上被用户当作其默认shell的最多的那个shell。 cat /etc/passwd | …

    Linux干货 2017-12-17
  • Nginx 基础 (IO模型、编译安装、几大块配置文件详解)

    Nginx基础 前言 apache在设计的时候已经考虑了并发访问模型,select()机制可以响应1024个访问,但是当数量再大,千万级别的时候http就响应不过来了。这个时候,nginx的出现解决了这一个问题。nginx是一个安装简单、配置文件简单、占用内存少、稳定性高、处理并发能力非常强、灵活好用等有点聚集于一身的轻量级服务器。在Linux操作系统中,N…

    Linux干货 2016-12-24