centos双网卡聚合

遇到在centos下使用双网口聚合来提升服务器的数据接入能力的问题。就这个问题做一个记录,方便以后使用时查阅。

1. 环境及条件

系统:CentOS Linux release 7.6.1810 (Core)
硬件:包含有多个物理网卡(实验时使用虚拟机模拟多网卡)

2. 什么是网卡聚合

网卡绑定也称作"网卡捆绑",就是使用多块物理网卡虚拟成为一块网卡,以提供负载均衡或者冗余,增加带宽的作用。当一个网卡坏掉时,不会影响业务。这个聚合起来的设备看起来是一个单独的以太网接口设备,也就是这几块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作。这种技术在Cisco等网络公司中,被称为Trunking和Etherchannel 技术,在Linux的2.4.x的内核中把这种技术称为bonding。

2.1 网卡聚合的模式

网卡聚合的有7中模式,balance-rr,active-backup,balance-xor,broadcast,802.3ad,balance-tlb,balance-alb。模式的代号从0开始到6结束。其工作模式可以分为两类:多主型工作模式和主备型工作模式。分别解释一下模式:

  1. balcancec-rr
    This mode is based on Round-robin policy and it is the default mode. This mode offers fault tolerance and load balancing features. It transmits the packets in Round robin fashion that is from the first available slave through the last.
    该模式基于轮询策略,为默认模式。这种模式提供了容错和负载平衡特性。它以轮询的方式传输数据包,从第一个可用的slave到最后一个可用的slave。
  2. active-backup
    This mode is based on Active-backup policy. Only one slave is active in this band, and another one will act only when the other fails. The MAC address of this bond is available only on the network adapter part to avoid confusing the switch. This mode also provides fault tolerance.
    该模式基于Active-backup策略。在这个频带中只有一个slave是活跃的,另一个只有在另一个失败时才会起作用。为避免交换机混淆,此bond的MAC地址仅在网卡部分可用。该模式还提供了容错功能。
  3. balance-xor
    This mode sets an XOR (exclusive or) mode that is the source MAC address is XOR’d with destination MAC address for providing load balancing and fault tolerance. Each destination MAC address the same slave is selected.
    该模式设置源MAC地址与目的MAC地址异或(exclusive or)模式,以提供负载均衡和容错功能。每个目的MAC地址选择相同的slave。
  4. broadcast
    This method is based on broadcast policy that is it transmitted everything on all slave interfaces. It provides fault tolerance. This can be used only for specific purposes.
    该方法基于广播策略,即在所有从接口上传输所有内容。它提供了容错功能。这只能用于特定的目的。
  5. 802.3ad
    This mode is known as a Dynamic Link Aggregation mode that has it created aggregation groups having same speed. It requires a switch that supports IEEE 802.3ad dynamic link. The slave selection for outgoing traffic is done based on a transmit hashing method. This may be changed from the XOR method via the xmit_hash_policy option.
    这种模式称为动态链路聚合模式,即创建速率相同的聚合组。需要一台支持ieee802.3 ad动态链路的交换机。传出流量的从选是基于一种传输哈希方法来完成的。这可以通过xmit_hash_policy选项从XOR方法更改。
  6. balance-tlb
    This mode is called Adaptive transmit load balancing. The outgoing traffic is distributed based on the current load on each slave and the incoming traffic is received by the current slave. If the incoming traffic fails, the failed receiving slave is replaced by the MAC address of another slave. This mode does not require any special switch support.
    这种模式称为自适应传输负载均衡。流出的流量根据每个slave的当前负载进行分配,流入的流量由当前slave接收。如果进入的流量失败,则用另一个slave的MAC地址替换失败的slave。该模式不需要任何特殊的交换机支持。
  7. balance-alb
    This mode is called adaptive load balancing. This mode does not require any special switch support.
    这种模式称为自适应负载均衡。该模式不需要任何特殊的交换机支持。

2.2 模式选择

根据业务情况,只能选择mode=6的balance-alb模式,这种模式不依赖于交换机,同时能够将2个1000Mbps的网卡聚合到总流量为2000Mbps

3.配置mode=6的双网卡聚合

我们期望在配置后,主机总的流量能够达到2000Mbps,下面为详细的操作过程。

3.1 配置虚拟网卡bond0

进入/etc/sysconfig/network-scripts目录,在该目录下新建一个名为ifcfg-bond0的文件,里面内容为:

DEVICE=bond0
ONBOOT=yes
BONDING_OPTS="mode=6 miimon=100"
BOOTPROTO=static
TYPE=Ethernet
USERCTL=no
IPADDR=172.20.36.11
NETMASK=255.255.255.0
NM_CONTROLLED=no

3.2 修改聚合网卡的配置信息

同样在/etc/sysconfig/network-scripts目录下,对需要聚合的两个网卡的配置文件进行修改,下面是虚拟机的实验环境的网卡信息:
在这里插入图片描述
我们使用了ifcfg-ens37ifcfg-ens38ifcfg-ens37ifcfg-ens38分别的配置信息为:

# ens37
DEVICE=ens37
NAME=ens37
ONBOOT=yes
BOOTPROTO=none
TYPE=Ethernet
MASTER=bond0
SLAVE=yes
USERCTL=no
NM_CONTROLLED=no
# ens38
DEVICE=ens38
NAME=ens38
ONBOOT=yes
BOOTPROTO=none
TYPE=Ethernet
MASTER=bond0
SLAVE=yes
USERCTL=no
NM_CONTROLLED=no

3.3 最后的配置

使用以下两个配置完成最后的配置,完成配置后即可。

modprobe bonding
systemctl restart network

重启之后用ethtool bonding就能看到详细的聚合信息。
在这里插入图片描述
聚合的网卡详细信息再目录/proc/net/bonding/bond0下:
在这里插入图片描述

3.4 带宽的测试

使用测试工具iperf3测试,分别在聚合机器上启动两个端口监听,然后找两台单独的机器用iperf3向服务端发数据,测试的服务器的整体的上下行带宽都约为2000Mbps

4.自动化脚本

在上面流程的基础上实现了一个自动配置mode=6的聚合模式脚本,通过交互式的脚本,配置聚合。

  1. 启动脚本,开始配置聚合,其中172.20.36.14为虚拟ip
    在这里插入图片描述
  2. 选择聚合的网卡
    在这里插入图片描述
  3. 确认网卡
    在这里插入图片描述
  4. 聚合的过程
    在这里插入图片描述
  5. 聚合后的bond0
    在这里插入图片描述
    在这里插入图片描述
    自动化脚本参考
    参考资料:
    https://www.interserver.net/tips/kb/network-bonding-types-network-bonding/
    https://www.unixmen.com/linux-basics-create-network-bonding-on-centos-76-5/
    https://www.cnblogs.com/yxy-linux/p/8327818.html
    https://blog.csdn.net/wuanwujie/article/details/79855261
  • 6
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
CentOS 7支持双网卡聚合,也称为网络适配器绑定(NIC bonding)或链路聚合(Link Aggregation)。通过将多个物理网卡绑定在一起,可以增加网络带宽和冗余性。 在CentOS 7中,双网卡聚合可以通过两种方式实现:模式0(负载均衡)和模式1(冗余备份)。 1. 负载均衡模式(模式0):在这种模式下,多个网卡被绑定成一个逻辑接口,流量会根据一定的算法(如源IP地址、目标IP地址、源MAC地址等)分发到不同的物理网卡上,从而实现负载均衡。这样可以提高网络吞吐量和性能。 2. 冗余备份模式(模式1):在这种模式下,多个网卡被绑定成一个逻辑接口,其中一个网卡作为主网卡处理所有的流量,其他网卡则作为备份网卡。如果主网卡故障,备份网卡会自动接管流量,从而实现冗余备份。 要配置双网卡聚合,首先需要安装`bonding`内核模块和`ifenslave`工具。然后,您需要编辑`/etc/sysconfig/network-scripts/ifcfg-bondX`文件(其中X是聚合接口的编号)和`/etc/sysconfig/network-scripts/ifcfg-ethX`文件(其中X是物理网卡的编号),并设置相应的参数。 以下是一个示例配置文件的内容: `/etc/sysconfig/network-scripts/ifcfg-bond0`: ``` DEVICE=bond0 TYPE=Bond BONDING_MASTER=yes IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 ONBOOT=yes BOOTPROTO=none BONDING_OPTS="mode=0 miimon=100" ``` `/etc/sysconfig/network-scripts/ifcfg-eth0`: ``` DEVICE=eth0 TYPE=Ethernet BOOTPROTO=none ONBOOT=yes MASTER=bond0 SLAVE=yes ``` `/etc/sysconfig/network-scripts/ifcfg-eth1`: ``` DEVICE=eth1 TYPE=Ethernet BOOTPROTO=none ONBOOT=yes MASTER=bond0 SLAVE=yes ``` 请根据您的网络环境和需求进行相应的配置。完成配置后,重启网络服务或使用`ifup bond0`命令激活双网卡聚合
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值