本文来自公众号和社区相关内容的整理

原理知识

Linux 多网卡的7种bond模式原理

Linux 多网卡绑定

网卡绑定mode共有七种(0~6) bond0、bond1、bond2、bond3、bond4、bond5、bond6

常用的有三种

mode=0:平衡负载模式,有自动备援,但需要””支援及设定。

mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援。

mode=6:平衡负载模式,有自动备援,不必””支援及设定。

需要说明的是如果想做成mode 0的负载均衡,仅仅设置这里 bond0 =100 mode=0是不够的,与网卡相连的交换机必须做特殊配置(这两个端口应该采取聚合方式),因为做的这两块网卡是使用同一个MAC地址.从原理分析一下(bond运行在mode 0下):

mode 0下bond所绑定的网卡的IP都被修改成相同的mac地址,如果这些网卡都被接在同一个交换机,那么交换机的arp表里这个mac地址对应的端口就有多 个,那么交换机接受到发往这个mac地址的包应该往哪个端口转发呢?正常情况下mac地址是全球唯一的,一个mac地址对应多个端口肯定使交换机迷惑了。所以 mode0下的bond如果连接到交换机,交换机这几个端口应该采取聚合方式(cisco称为 ,称为),因为交换机做了聚合后,聚合下的几个端口也被捆绑成一个mac地址.我们的解 决办法是,两个网卡接入不同的交换机即可。

mode6模式下无需配置交换机,因为做的这两块网卡是使用不同的MAC地址。

七种bond模式说明:

第一种模式:mod=0 ,即:(-rr) Round-robin (平衡抡循环策略)

特点:传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1….一直循环下去,直到最后一个传输完毕),此模式提供负载平衡和容错能力;但是我们知道如果一个连接或者会话的数据包从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降。

网卡绑定模式与自动网卡绑定解析

日常工作生产环境的x86服务器都使用了双网卡接入模式,无论是出于增加网络带宽的考虑,还是冗余,高可用的考虑,双网卡绑定都能带来非常多的裨益,双网卡即把两块网卡虚拟成为一块网卡,具有相同的IP地址,可看做一个单独的以太网接口设备。

正常情况下,网卡只接收目的MAC地址是自身MAC的以太网帧。但处于绑定模式下的两个网卡运行在混杂模式下,会接受所有的以太网帧,并且将驱动程序中两块网卡的 MAC地址改成相同,可以接收特定MAC的数据帧并处理。

日常工作中使用的双网卡绑定模式主要有A/S主备模式,AA静态聚合模式,AA 802.3ad动态聚合模式三种,下面详细分析一下他们的特点和适用场景。

一. 三种绑定模式浅析

(1). A/S主备模式

顾名思义,主备模式下只有一个网络设备处于活动状态,当主网卡down掉以后,备网卡会切换为主设备。此模式提供比较高的容错能力nmcli,并且mac地址在交换机等设备看来是可见并唯一的,但是资源利用率不高,也不能满足高带宽的需求。

主备模式的实现原理是将做绑定的两个slave网口的MAC地址都改为虚拟网卡的MAC地址,而虚拟网卡的MAC地址是Bond创建启动后,主网口的MAC地址。如下示意图。

nmcli怎么读_nmcli命令详解_nmcli

而当主网卡故障时,Bond会切换到备用网口,切换过程中,上层的应用是无感知不受影响的,因为bond驱动程序会接管上层应用的数据包,缓存起来等备用网卡起来后再通过备用网卡发送出去。但是缓冲区容量有限,如果切换时间过长会造成缓冲区溢出并丢包。

主备模式的容错能力决定这种网卡绑定模式适用于对网络链路带宽不是很敏感,但是要求高冗余性的场景下,比如部署应用的机器。

实 战

RHEL6 下 bond 双网卡绑定服务 & 5/6 下网卡绑定脚本

操作步骤和注意事项如下:

1、注意事项:

首先确认要绑定的是哪2个网口,避免绑定时绑错网口。

2、说明:

这里以绑定eth0和eth1的2个网口为例。

配置文件都在/etc//-/目录下。

操作步骤

绑定前需要彻底关闭服务,否则会和bond网卡冲突

.2 系统下做网卡绑定实战录

配置过程:

最小化安装后,系统没有命令,从光盘介质中安装net-tools*x86.64.rpm 软件包,,在系统光盘下面,rpm –ivh 安装即可!

Linux网卡绑定有几种模式:

bond模式:

1. Mode=0(-rr) 表示负载分担round-robin,和交换机的聚合强制不协商的方式配合。

2. Mode=1(-) 表示主备模式,只有一块网卡是,另外一块是备的,这时如果交换机配的是捆绑,将不能正常工作,因为交换机往两块网卡发包,有一半包是丢弃的。

3. Mode=2(-xor) 表示XOR Hash负载分担,和交换机的聚合强制不协商方式配合。(需要)

4. Mode=3() 表示所有包从所有发出,这个不均衡,只有冗余机制...和交换机的聚合强制不协商方式配合。

5. Mode=4(802.3ad) 表示支持802.3ad协议,和交换机的聚合LACP方式配合(需要)

6. Mode=5(-tlb) 是根据每个slave的负载情况选择slave进行发送,接收时使用当前轮到的slave

7. Mode=6(-alb) 在5的tlb基础上增加了rlb。

修改配置文件, 配置绑定,只需修改如下几个文件就可以了。Linux 7系统下识别网设备名字为em1、em2这样命名的,这里可以要求em1 、em2做绑定,模式是主备模式也就是mode=1

.3进行双网卡绑定

一、前期准备:

1.1、查看系统版本:

cat /etc/issue

nmcli_nmcli怎么读_nmcli命令详解

1.2、检查系统配置上是否支持:

cat /boot/- |grep –i (回车)

=m

(返回=m表示支持,否则需要编译内核使他支持,需要编译时请查阅相关文档,此处不做详细说明)

nmcli命令详解_nmcli怎么读_nmcli

1.3、切换到网卡配置目录,进行备份,防止出错恢复:

cd /etc//-/ //切换目录

cp ifcfg-eth0 /home/bak/ifcfg-eth0.bak //备份eth0到指定目录

cp ifcfg-eth1 /home/bak/ifcfg-eth1.bak //备份eth1到指定目录

二、配置步骤:

2.1、进行bond0网卡的配置:

切换到目录/etc//-,创建一个ifcfg-bondX

vi /etc//-/ifcfg-bond0

//新建一个bond0配置文件,在文件中添加以下信息后,保存退出:

nmcli命令详解_nmcli_nmcli怎么读

2.2、修改ifcfg-eth0和ifcfg-eth1的配置信息:(此处为网卡eth0和eth1绑定)

vi /etc//-/ifcfg-ethX

修改后配置信息如下:

cat ifcfg-eth0

nmcli_nmcli怎么读_nmcli命令详解

cat ifcfg-eth1

nmcli怎么读_nmcli命令详解_nmcli

2.3、修改/etc/.d/dist.conf文件,配置绑定模型,在末尾添加以下内容:(低版本系统直接配置/etc/.conf文件)

alias bond0

bond0 =100 mode=1

//使系统启动时加载模块

注:选项 是指定隔多长时间进行链路检查,单位为ms

选项mode是表示绑定口的工作模式,有0-6种模式,常用的为0、1:

mode=0表示load (round-robin)负载均衡模式,两块网卡都在工作,当一张网卡停止工作时只会降低网络的吞吐量,不影响正常通信,需要交换机支持;

mode=1表示fault-(-)主备工作模式,提供冗余功能。即默认情况下只有一块网卡工作,另一块为备份;

mode=6表示负载均衡模式,两块网卡都工作,不需要交换机支持。

其他模式不做介绍。

2.4、配置/etc/rc.d/rc/local,设置需绑定的网卡及顺序

nmcli怎么读_nmcli_nmcli命令详解

至此,配置已基本完成。

2.5、关闭服务:

由于将接口下的设置成了no(如果设置成yes,在机器启动时会调用的配置文件,直接回调用接口的MAC地址,这样会导致物理接口mac与bond的mac不一致nmcli,这样在通讯时出现丢包现象)。同时我们需要关闭系统的服务:

stop

或 # off //永久关闭服务

然后重启机器:

三、进行验证:

3.1、查看接口配置:查看物理网卡的MAC地址是否与bond 的一致

nmcli_nmcli命令详解_nmcli怎么读

3.2、查看bond的运行状态:

nmcli怎么读_nmcli命令详解_nmcli

3.3、进行测试:

通过同网段的其他电脑进行ping该主机,然后拔掉eth1接口网线测试。看通信是否正常。(作者:)

RHEL7 配置双网卡双IP双网关

1. 从 添加新的网卡设备, 指定 好响应的VLAN

2. 进入 虚拟机 查看网卡信息 :

I –a

nmcli show | grep -i

启用 新网卡 并 创建配置文件

nmcli add type con-name eth1 eth1 yes

查看 UUID 并记录 下来

nmcli show

修改 网卡配置信息 如下:

cd /etc//-

vi ifcfg-eth1

=00:50:56:A6:13:9C # 正确的MAC地址

TYPE=

=none

=no

=

=yes

=no

=yes

=yes

=yes

=no

=-

NAME=eth1

UUID=-be5f-4565-9710- #正确的UUID

=eth1

=yes

=no

=10.76.124.11

=255.255.254.0

=0.0.0.0 # 不可以设置网关

DNS1=10.14.20.1

DNS2=10.14.20.2

为新网卡配置静态路由

vi route-eth1

10.76. 100. 0/ 24 via 10.76.124.200 dev eth1

重启服务器并查看路由信息

R eboot

Ip route list

via 10.76.128.200 dev eth0 proto 100

10.76.0.0/16 via 10.76.124.200 dev eth1 proto 100

10.76.124.0/23 dev eth1 proto scope link src 10.76.124.11 100

10.76.128.0/23 dev eth0 proto scope link src 10.76.128.11 100

特别注意:

在 RHEL7 上 执行后 可能 会导致 eth1无法 起来, 解决 方法如下:

nmcli show

nmcli show –

nmcli eth1

nmcli add type con-name eth1 eth1 yes

然后 完成后续IP以及路由的配置。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注