Linux Bond4实现网络负载平衡和故障容错 (linux bond4)

在现代社会中,网络是非常重要的一部分。许多组织和企业都有着复杂的网络系统来满足其日常需求。这些系统需要具备两个重要的特性:网络负载平衡和故障容错。这两个特性可以更大限度地提高网络的性能和可靠性。在本文中,我们将介绍如何使用Linux Bond4实现这两个特性。

什么是Linux Bond4?

让我们介绍一下Linux Bond4。Linux Bond4是一个高性能的Linux网络模块,它允许多个网络接口以虚拟接口的形式组合在一起。这样就可以提高网络带宽并提供故障容错功能。

初始设置

在使用Linux Bond4之前,您需要具备一定的基础知识。你需要了解Linux操作系统以及基本的网络知识。你还需要安装两个重要的软件包的bond-utils和ifenslave。你可以通过以下命令安装它们:

sudo apt-get install ifenslave bond-utils

在安装完成后,您需要打开/etc/network/interfaces文件,并使用以下命令定义接口:

auto bond0

iface bond0 inet manual

up ifconfig bond0 up

down ifconfig bond0 down

此时,您需要重启网络服务,并使用以下命令验证生成的接口:

sudo ifconfig -a

添加物理接口

在bond接口上添加物理接口可以更大程度地提高网络负载平衡和故障容错的性能。您可以使用以下命令添加物理接口:

sudo ifenslave bond0 eth1 eth2

这里我们添加了eth1和eth2两个物理接口。您也可以添加更多的物理接口。现在您可以使用以下命令验证是否添加了这些接口:

sudo cat /proc/net/bonding/bond0

您应该会看到所有接口的状态已被显示。

缺省值和细节

缺省情况下,Linux Bond4使用一个mpls的负载平衡算法,这意味着它将根据发送方和接收方的MAC地址以及IP地址进行负载平衡。但是,我们也可以配置其他算法,例如基于源和目的端口的负载平衡算法,以便更好地满足我们自己的需求。

在使用Linux Bond4时,请注意以下几点:

– 所有接口的速度必须相等且带宽必须一致。

– 所有接口必须使用相同的MAC地址。

– 如果您的物理接口支持802.3ad协议,请将Linux Bond4协议设置为802.3ad。

故障容错

Linux Bond4还具有强大的故障容错功能。它可以在一个接口出现故障时自动地将流量切换到其他接口。这样可以保持网络的连通性。

在出现故障时,Linux Bond4有两种容错方式:主动备援和静态备援。主动备援意味着另一个接口将立即接管故障的接口,而静态备援意味着您需要手动指定另一个接口来接管故障的接口。

结论

网络负载平衡和故障容错对于现代企业来说至关重要。Linux Bond4是一个基于Linux的核心模块,它提供了高性能、可靠的网络负载平衡和故障容错机制。在文章中,我们介绍了如何使用Linux Bond4来实现这两个特性。这个模块的使用还有许多其他参数值得深入研究,但是随着您逐渐掌握它们,您将能够有效地管理和维护您的网络系统。

相关问题拓展阅读:

Linux 网卡绑定什么作用

好处:增加带宽,还可以实野困伏现主备功能,

两块网卡可以使用同一个IP工作,不会因为其中一块坏了而导致机器不可用,避免单点故障至于命颂携令,直接在/etc/sysconfig/network中编辑文件

vi /etc/sysconfig/network/ifcfg-bond0

BOOTPROTO=”static”

BROADCAST=”192.168.1.255″

IPADDR=”192.168.1.251″

NETMASK=”255.255.255.0″

NETWORK=”192.168.1.0″

REMOTE_IPADDR=””

STARTMODE=”onboot”

BONDING_MASTER=”yes”

BONDING_MODULE_OPTS=”mode=1 miimon=200 use_carrier=1 primary=eth?”

BONDING_SLAVE0=”eth0″

BONDING_SLAVE1=”eth1″

最后2个为绑定的网卡的名称,此例是把eth0和eth1共同绑定成bond0

最后要注意的是,绑定做好后,把尺携eth0,eth1的配置文件删掉(保险点改个名字丢那好了)

首先检测系统是否安装开启NetworkManager服务,在root 用户下输入rpm -qa NetworkManager 如命令行下方出现NetworkManager-0.8.1-33.el6.x86_64名字类似的名字证明已经安装,命令行输入service NetworkManager status 查看NetworkManager是否为开启状态,默认为开启,如果为开启状态请输入chkconfig NetworkManager off 关闭服务。关闭后我们就可以正常的做网卡绑定配置了。切记在网卡绑定之前一定要关闭这个服务否则绑定网卡会报错,请确保如图示红色框起来的状态,否则绑定不会成功。

rhel linux 网卡绑定

之一组网卡绑定配置进入 /etc/sysconfig/network-scripts/目录,首先cp 将eth0或者em1名字的网卡配置文件复制一份(其他网卡也同样备份一份),我保存到当前目录 命名为ifcfg-em1.bak 已避免绑定失败无法回滚。备份好在当轮消备前网卡配置信息,直接vi ifcfg-bond0(这个文件在网卡没有绑定之前一般不存在我们直接vi建立就好了)将下面参数直接粘贴到band0文件里面。之后配置两块网卡的参数。

下面为bond0参数

EVICE=bond0

ONBOOT=yes

BOOTPROTO=none

IPADDR=192.168.28.(IP地址根据自的实际情况填写)

NETMASK=255.255.255.0 (掩码根据自的实际情况填写)

GATEWAY=192.168.28.254 (网关自己网路的网关)

USERCTL=no

em1网卡参数

vi ifcfg-em1 进入em1配置,将里面的配置清空,粘贴如下参数,rhel系统安装到dell 服务器会将网卡ID eth0变成em1,这里的网卡id需要根据系统里面的文件确定,有些桥茄是eth*的id。我这里就是em1的id,参数如下;

DEVICE=em1

BOOTPROTO=none

ONBOOT=yes

MASTER=bond0

USERCTL=no

保存退出,在vi ifcfg-em2 进入em2配置,直接清空配置,粘贴如下参数。

DEVICE=em2

BOOTPROTO=none

ONBOOT=yes

MASTER=bond0

USERCTL=no

rhel linux 网卡绑定

rhel linux 网卡绑定

rhel linux 网卡绑定

通过上一步bond0 和em1 em2的参数配置,网卡绑定修改参数还差一步就完成了,请在/etc/modprobe.conf文件中添加如下脚本,如果没有modprobe.conf文件看直接vi 一个填入下面的代码既可。

modprobe.conf文件添加的脚本如下

alias eth0 pcnet32

alias eth1 pcnet32

alias bond0 bonding

options bond0 miimon=100 mode=0(配置模式这里配置为mode=0负载均衡模式0,mode参数为模式类型,具体请参考相关模式资料。miimon为监听时间,我设置100为0.1毫秒)

请将以上4行添加保存。到此之一组网卡绑定参数设置已经完成,如是多个网卡绑定为一组方法相同只需要将配置参数复制粘贴到相关网卡配置文件既可只需修改DEVICE将网卡id更换既可。

rhel linux 网卡绑定

第二组网卡配置与之一组基本相同,只不过就是修改一些IP地址和腊毁网关,一般的网络只有一个网关,我们在之一组配置了网关,在第二组我们就不用在配置网关了。当前目录下新建bond1,直接vi ifcfg-bond1将下面的bond1参数粘贴过来。将这两个保存即可。网卡参数配置修改,直接将网卡现有配置删除,vi ifcfg-em3/eth4 进入网卡配置参数修改,删除网卡现有的配置参数直接粘贴以下脚本。

下面bond1参数

DEVICE=bond1

BOOTPROTO=none

ONBOOT=yes

IPADDR=172.18.99.(IP地址根据自的实际情况填写)

NETMASK=255.255.255.(掩码根据自的实际情况填写)

USERCTL=no

网卡配置参数

DEVICE=eth3

BOOTPROTO=none

ONBOOT=yes

MASTER=bond1 (掩码写bond1)

USERCTL=no

DEVICE=eth4

BOOTPROTO=none

ONBOOT=yes

MASTER=bond1 (掩码写bond1)

USERCTL=no

rhel linux 网卡绑定

通过上一步bond1 和em3 em4的参数配置,网卡绑定修改参数还差一步就完成了,请在/etc/modprobe.conf文件中添加如下脚本,之前的bond0配置文件也配置过,直接在bond0下面添加既可,

modprobe.conf文件添加的脚本如下

alias eth3 pcnet32

alias eth4 pcnet32

alias bond1 bonding

options bond0 miimon=100 mode=0(配置模式这里配置为mode=0负载均衡模式0,mode参数为模式类型,具体请参考相关模式资料。miimon为监听时间,我设置100为0.1毫秒)

请将以上4行添加保存。到此第二组网卡绑定参数设置已经完成,如是多个网卡绑定为一组方法相同只需要将配置参数复制粘贴到相关网卡配置文件既可只需修改DEVICE将网卡id更换既可。

rhel linux 网卡绑定

通过以上配置,两组网卡配置基本完成,现在我们重启网络服务 输入命令

service network restart 等待从其完成,现在网卡配置还没有生效,请输入以下两行代码是网卡绑定生效;

ifenslave bond0 em1 em2

ifenslave bond1 em3 em4

为了更好的利用系统资源,我们还需要将生效过程开机自动启动,需要在/etc/rc.d/rc.local目录下将这两行代码添加进去,下次重启服务器就会自动生效,否者还需要手动生效。

配置全部完成,只剩下检测了,现在我需要用ifconfig 来检测一下绑定信息如图所示,bond0下的em1 em2 的mac地址全部相同证明成功了。bond1也是一个道理,这里我缺少bond1的图片,正常ifconfig是全部都会有的只要确定bond1和em3 em4的mac地址相同基本就是正常。

rhel linux 网卡绑定

网卡绑定戚腔洞的最主要作用是用来ACL做访问圆祥控制限制

这样只有这个IP或者这个MAC的机器可以访问指定的资高枯源

在linux(redhat)下双网卡负载均衡(lacp)

之一步:创建一个ifcfg-bondX

# touch /etc/sysconfig/network-scripts/ifcfg-bond0  新建一个bond0配置文件

#  cat /etc/雹雀悄sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 BOOTPROTO=static IPADDR=1.1.1.2

NETMASK=255.255.255.0

BROADCAST=1.1.1.255

NETWORK=1.1.1.0

GATEWAY=1.1.1.1

ONBOOT=yes

TYPE=Ethernet

编辑ifcfg-bond0如上

第二步:修改/etc/sysconfig/network-scripts/ifcfg-ethX

这个实验中把网卡1和2绑定,修改/etc/sysconfig/network-scripts/ifcfg-ethX相应网卡配置如下:

#  cat  /etc/sysconfig/network-scripts/ifcfg-eth1

TYPE=Ethernet

DEVICE=eth1

HWADDR=00:d0:f8:40:f1:a0  网卡1mac

BOOTPROTO=none

ONBOOT=yes

USERCTL=no

MASTER=bond0

SLAVE=yes

#  cat  /etc/sysconfig/network-scripts/ifcfg-eth2

TYPE=Ethernet DEVICE=eth2

HWADDR=00:d0:f8:00:0c:0c  网卡2mac

BOOTPROTO=none

ONBOOT=yes

USERCTL=no

MASTER=bond0

SLAVE=yes

第三步:配置/etc/modprobe.conf,添加alias bond0 bonding

#  cat /etc/modprobe.conf alias eth0 e100

alias snd-card-0 snd-intel8x0

options snd-card-0 index=0 

options snd-intel8x0 index=0 

remove snd-intel8x0 { /usr/in/alsactl store 0 >/dev/null 2>&1 || : ; }; /in/modprobe -r –ignore-remove snd-intel8x0 alias eth1 8139too

options 3c501 irq=3 

alias eth2 tulip

上面是三网卡本身的配置如果要绑定和做lacp只源渣要再加上下面两条配岁州置

alias bond0 bonding  绑定

options bond0 miimon=100 mode=4    mode=4是lacp

第四步:配置/etc/rc.d/rc.local,添加需要绑定的网卡

# cat /etc/rc.d/rc.local 

touch /var/lock/subsys/local  配置本身就有这条命令

ifenslave bond0 eth1 eth2    这条命令是添加需要绑定的网卡1和2 

到这里就完成bonding的配置了可以查看一下

第五步:重启网络服务和重启pc

#service network restart    重启网络服务

# shutdown -r now    重启pc

重启后可以查看bonding情况:网卡1和2 都绑定上了,模式为802.3ad

# cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.0.3 (March 23, 2023) 

Bonding Mode: IEEE 802.3ad Dynamic link aggregation

Tranit Hash Policy: layer2 (0) MII Status: up

MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 

802.3ad info

LACP rate: slow

Active Aggregator Info:

Aggregator ID:

Number of ports:

Actor Key:

Partner Key: 1

Partner Mac Address: 00:d0:f8:22:33:ba Slave Interface: eth1

MII Status: up

Link Failure Count: 0

Permanent HW addr: 00:d0:f8:40:f1:a0

Aggregator ID: 1

Slave Interface: eth2

MII Status: up

Link Failure Count: 0

Permanent HW addr: 00:d0:f8:00:0c:0c

Aggregator ID: 1

接口配置信息:新增了bond0的配置信息,接口bond0和eth1,eth2,绑定后三个接口使用的mac都是同一个:00:D0:F8:40:F1:A0 # ifconfig

bond0    Link encap:Ethernet  HWaddr 00:D0:F8:40:F1:A

inet addr:1.1.1.2  Bcast:1.1.1.255  Mask:255.255.255.0

inet6 addr: fe80::2d0:f8ff:fe40:f1a0/64 Scope:Link

UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:

RX packets:128 errors:0 dropped:0 overruns:0 frame:

TX packets:259 errors:0 dropped:0 overruns:0 carrier:

collisions:0 txqueuelen:0 

RX bytes:15466 (15.1 KiB)  TX bytes:39679 (38.7 KiB)

ethLink encap:Ethernet  HWaddr 00:11:11:EB:71:E2 

inet addr:192.168.180.8  Bcast:192.168.180.15  Mask:255.255.255.

inet6 addr: fe80::211:11ff:feeb:71e2/64 Scope:Link

UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:

RX packets:311 errors:0 dropped:0 overruns:0 frame:

TX packets:228 errors:0 dropped:0 overruns:0 carrier:

collisions:0 txqueuelen:1000 

RX bytes:30565 (29.8 KiB)  TX bytes:35958 (35.1 KiB) eth1     

Link encap:Ethernet  HWaddr 00:D0:F8:40:F1:A

inet6 addr: fe80::2d0:f8ff:fe40:f1a0/64 Scope:Link

UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:

RX packets:54 errors:0 dropped:0 overruns:0 frame:

TX packets:97 errors:0 dropped:0 overruns:0 carrier:

collisions:0 txqueuelen:1000 

RX bytes:6696 (6.5 KiB)  TX bytes:13821 (13.4 KiB)

Interrupt:209 Base address:0x2e00 

ethLink encap:Ethernet  HWaddr 00:D0:F8:40:F1:A0 

inet6 addr: fe80::2d0:f8ff:fe40:f1a0/64 Scope:Link

UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:

RX packets:74 errors:0 dropped:0 overruns:0 frame:

TX packets:162 errors:0 dropped:0 overruns:0 carrier:

collisions:0 txqueuelen:1000 

RX bytes:8770 (8.5 KiB)  TX bytes:25858 (25.2 KiB)

Interrupt:201 Base address:0x2f00 

loLink encap:Local Loopback 

inet addr:127.0.0.1  Mask:255.0.0.

inet6 addr: ::1/128 Scope:Host

UP LOOPBACK RUNNING  MTU:Metric:1

RX packets:6283 errors:0 dropped:0 overruns:0 frame:

TX packets:6283 errors:0 dropped:0 overruns:0 carrier:

collisions:0 txqueuelen:0 

RX bytes:(9.3 MiB)  TX bytes:(9.3 MiB)

(二)锐捷交换机配置:

lacp system-priority全局配置lacp优先级

interface GigabitEthernet 0/23

no switchport

lacp port-priority接口的lacp优先级 

port-group 1 mode active接口下开启lacp 主动模式

interface GigabitEthernet 0/24 

no switchport

lacp port-priority 100 

port-group 1 mode active

interface AggregatePort 1 

no switchport  no ip proxy-arp

ip address 1.1.1.1 255.255.255.0

和linux成功建立lacp后状态信息如下:

Show  lacp summary 

System Id:100, 00d0.f822.33ba

Flags:  S – Device is requesting Slow LACPDUs  F – Device is requesting Fast LACPDUs. A – Device is in active mode.P – Device is in passive mode. Aggregate port 1:

Local information:

LACP portOper    Port    Port

Port      Flags    StatePriorityKey    Number  State-

Gi0/23    SAbndl3d

Gi0/24    SAbndl3d

Partner information:

LACP port    Oper    Port    Port

Port      Flags    Priority      Dev IDKey    Number  State

Gi0/23    SA   00d0.f840.f1a0  03d

Gi0/24    SA   00d0.f840.f1a0  03d

State表示状态信息:bndl表示lacp建立成功,sup表示不成功。

建立成功后在交换机上去ping  linux 1.1.1.2

Ruijie#ping 1.1.1.2

Sending 5, 100-byte ICMP Echoes to 1.1.1.2, timeout is 2 seconds:  !!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms 在linux上ping交换机

# ping 1.1.1.1

PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.

64 bytes from 1.1.1.1: icmp_seq=1 ttl=64 time=0.601 ms

64 bytes from 1.1.1.1: icmp_seq=2 ttl=64 time=0.606 ms

64 bytes from 1.1.1.1: icmp_seq=3 ttl=64 time=0.608 ms

64 bytes from 1.1.1.1: icmp_seq=4 ttl=64 time=0.607 ms

— 1.1.1.1 ping statistics —

4 packets tranitted, 4 received, 0% packet loss, time 3002ms rtt min/avg/max/mdev = 0.601/0.605/0.608/0.024 ms

#

可以ping通,lacp建立正常。

把原传输数据的那个网卡shut down异常测试时,需要等到lacp状态超时才能切换到另一条链路。

Ruijie#sh lacp summary 

System Id:100, 00d0.f822.33ba

Flags:  S – Device is requesting Slow LACPDUs  F – Device is requesting Fast LACPDUs. A – Device is in active mode.P – Device is in passive mode. Aggregate port 1:

Local information:

    LACP portOper    Port    Port

Port      Flags    StatePriorityKey    Number  State-

Gi0/23    SAsups45

Gi0/24    SAbndl3d

Partner information:

LACP port    Oper    Port    Port

Port      Flags    Priority      Dev IDKey    Number  State

Gi0/23    SP.0000.0

关于linux bond4的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » Linux Bond4实现网络负载平衡和故障容错 (linux bond4)