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)
cutemsyucutemsyu
上一篇 2016-09-13 15:10
下一篇 2016-09-13 15:19

相关推荐

  • Apache通过mod_proxy模块连接Tomcat并使用Memcached+MSM做Tomcat会话保持

    一 实验目的 本实验使用Apache的mod_proxy模块连接Tomcat, Nginx在前端做负载均衡,并使用Memcahced+MSM的方式保持Tomcat的会话,实现会话共享。 二 实验拓扑 说明:为测试方便,Memcached与Tomcat安装在同一机器中,正式环境应该安装在不同机器中。 三 实验环境 主机 IP 安装组件 node1 192.16…

    Linux干货 2017-01-17
  • LINUX–命令的格式、类型、别名的概述及运用

    命令格式       COMMAND [OPTIONS…] [ARGUMENTS..]      [OPTIONS..] 选项:用于启用或关闭命令的某个或某些功能                &n…

    2017-05-21
  • Centos7 服务器部署ssh证书授权登录

    在当前服务器生成密钥对 ssh-keygen –t rsa –P ” ssh-keygen –t rsa –P ''[root@localhost ~]# ssh-keygen -t rsaGenerating public/private rsa key pair.Enter file in which to save the key …

    Linux干货 2016-12-05
  • rpm 程序包管理器的基本使用

    目录 安装程序包 卸载 升级 查询 校验 来源合法性和完整性验证 数据库重建 1     安装程序包 rpm -ivh /path/to/package_file -v     显示执行过程的参数。 -h   &nbsp…

    Linux干货 2016-06-22
  • 浅谈群红包的实现

    前言:红包是支付的方式, 也是社交的延伸。群红包在这两块领域串联得很好, 表现尤为的浓墨重彩. 承接上两篇技术浅谈:1). 浅谈接龙红包的技术实现.2). 浅谈微信红包摇一摇的技术实现.这一次, 让我们谈谈群红包的技术实现. 一为是红包的分配算法, 二为竞抢的技术实现. 分配算法:最初玩群红包的时候, 并没有意识到分配算法的难度…

    Linux干货 2015-03-10