linux配置bond学习

linux配置bond学习

1. 概念、原理、工作模式

网卡绑定,也称作网卡捆绑。就是将两个或者更多的物理网卡绑定成一个虚拟网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗的讲就是说这几块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路,以达到提供负载均衡或者冗余、增加带宽的目的。

这项技术在sun和cisico中早已存在,被称为trinking(链路聚集)和etherchannel(链路捆绑)技术,在linux的2.4.X及其以上的内核中也采用了这种技术,被称为bonding。

2. 工作模式(7种)

Bonding通过修改配置文件可以工作在以下七种工作模式:

常见的 bond 模式有:

  • balance-rr:轮询模式,数据包依次在每个物理接口上传输,提供负载均衡。

mode=0 round-robin 【轮询】
轮询策略(Round-robin policy),模式代号是0。该策略是按照设备顺序依次传输数据包,直到最后一个设备。这种模式提供负载均衡和容错能力。

  • active-backup:主备模式,一个接口处于活动状态,其他作为备份,当活动接口故障时自动切换。

mode=1 active-backup 【主备】
活动备份策略(Active-backup policy),模式代号是1。该策略只有一个设备处理数据,当它宕机的时候就会由备份代替,仅提供容错能力。

  • balance-xor:根据源和目的 MAC 地址或 IP 地址进行负载均衡。

mode=2 load balancing (xor)【根据mac地址进行异或操作,来选择处理设备】
异或策略(XOR policy),模式代号是2。该策略是根据MAC地址异或运算的结果来选择传输设备,提供负载均衡和容错能力。

  • broadcast:所有物理接口都发送数据包,提供冗余。

mode=3 fault-tolerance (broadcast)【广播】
广播策略(Broadcast policy),模式代号是3。该策略通过全部设备来传输所有数据,提供容错能力。

  • 802.3ad:使用 IEEE 802.3ad 动态链路聚合协议,需要交换机支持。

mode=4 lacp 【创建聚合组=》带宽翻倍】
IEEE 802.3ad 动态链接聚合(IEEE 802.3ad Dynamic link aggregation),模式代号是4。该策略通过创建聚合组来共享相同的传输速度,需要交换机也支持 802.3ad 模式,提供容错能力。该模式下,网卡带宽最高可以翻倍(如从1Gbps翻到2Gbps)。

  • balance-tlb:自适应负载均衡,根据负载情况分配流量,不依赖交换机。

mode=5 transmit load balancing【传输负载均衡】
适配器传输负载均衡(Adaptive transmit load balancing),模式代号是5。该策略是根据当前的负载把发出的数据分给每一个设备,由当前使用的设备处理收到的数据,如果当前正用于接收数据的网卡发生故障,则由其它网卡接管,要求所用的网卡及网卡驱动可通过ethtool命令得到speed信息。本策略的通道联合不需要专用的交换机支持,提供负载均衡和容错能力。

  • balance-alb:自适应负载均衡,包括接收和发送的负载均衡,不依赖交换机。

mode=6 adaptive load balancing 【传输+接受负载均衡】
适配器负载均衡(Adaptive load balancing),模式代号是6。该策略在IPV4情况下包含适配器传输负载均衡策略,由ARP协商完成接收的负载,通道联合驱动程序截获ARP在本地系统发送出的请求,用其中一个设备的硬件地址覆盖从属设备的原地址。即在策略6的基础之上,在接收数据的同时实现负载均衡,除要求ethtool命令可得到speed信息外,还要求支持对网卡MAC地址的动态修改功能。

注意事项:

Mode参数中的0、2、3、4模式要求交换机支持ports group功能并能进行相应的设置,例如在cisco中要将所连接的端口设为port-channel
如果系统流量不超过单个网卡的带宽,请不要选择使用mode1之外的模式,因为负载均衡需要对流量进行计算,这对系统性能会有所损耗。
如果交换机及网卡都确认支持802.3ab,则实现负载均衡时尽量使用模式4以提高系统性能。

3. 配置演示

3.1 新增虚拟网卡

本次测试在VMware中进行模拟配置

在这里插入图片描述

3.2 查看新的网卡信息

# 注:如上述第一步新增虚拟网卡是在开机状态下新增的,则需要执行命令重启网卡。如是在关机状态下新增的网卡则不需要重启。
systemctl restart network

[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:73:d1:8d brd ff:ff:ff:ff:ff:ff
    inet 192.168.244.112/24 brd 192.168.244.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::a267:2d7f:2cc2:737b/64 scope link tentative noprefixroute dadfailed 
       valid_lft forever preferred_lft forever
    inet6 fe80::4d1a:ac50:9db3:87cb/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:73:d1:97 brd ff:ff:ff:ff:ff:ff
    inet 192.168.244.142/24 brd 192.168.244.255 scope global noprefixroute dynamic ens36
       valid_lft 1419sec preferred_lft 1419sec
    inet6 fe80::e9eb:70cd:b9d4:acd1/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
4: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:73:d1:a1 brd ff:ff:ff:ff:ff:ff
    inet 192.168.244.143/24 brd 192.168.244.255 scope global noprefixroute dynamic ens37
       valid_lft 1419sec preferred_lft 1419sec
    inet6 fe80::56a5:34de:3d22:8b52/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

信息简述:

​ 使用 ip a 命令检查网卡信息时需注意当前新增的两个虚拟网卡的 MAC 地址是不同的,绑定 bond 之后则会是一个统一的 MAC 地址

在这里插入图片描述

3.3 配置bond

使用 nmcli 命令进行配置

nmcli是一个用于控制 NetworkManager 的命令行工具。NetworkManager 是 Linux 系统中管理网络连接的守护进程,nmcli提供了一种在命令行界面方便地配置和管理网络连接的方式。

nmcli connection add type bond ifname bond0 mode 0
  • 参数说明
  • type bond:表示创建的是 bond 类型的连接。
  • ifname bond0bond 接口的名称,这里为 bond0
  • mode 0bond 的工作模式为 balance-rr,这里参考第二章节“工作模式”的内容,mode 0 也可以写做 mode balance-rr
  • 添加从属接口

将新增的两个虚拟网卡添加到新建的 bond

nmcli connection add type bond-slave ifname ens36 master bond0
nmcli connection add type bond-slave ifname ens37 master bond0

在这里插入图片描述

3.4 查看配置文件

上述配置完成之后,查看并修改bond配置文件信息

在这里插入图片描述

  • 修改 ifcfg-bond-bond0 配置文件
vim ifcfg-bond-bond0

# 重启网卡
systemctl restart network

# 或者使用如下命令激活(首先激活从属接口,再激活 bond 接口),这种方式本次没有验证。
nmcli connection up bond-slave-eth36
nmcli connection up bond-slave-eth37
nmcli connection up mybond # mybond 是创建bond时指定的名称,示例:nmcli connection add type bond con-name mybond ifname bond0 mode balance-rr

注:

​ 如果需要改变 bond 的工作模式,则可以直接在文件中修改 BONDING_OPTS=mode参数,然后重启网卡即可

在这里插入图片描述

3.5 检查网卡信息

# 这个时候他们的MAC信息已经变成了同一个,此时他们的状态也都是 up 状态
[root@localhost network-scripts]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:73:d1:8d brd ff:ff:ff:ff:ff:ff
    inet 192.168.244.112/24 brd 192.168.244.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::a267:2d7f:2cc2:737b/64 scope link tentative noprefixroute dadfailed 
       valid_lft forever preferred_lft forever
    inet6 fe80::4d1a:ac50:9db3:87cb/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens36: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
    link/ether 00:0c:29:73:d1:97 brd ff:ff:ff:ff:ff:ff
4: ens37: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
    link/ether 00:0c:29:73:d1:97 brd ff:ff:ff:ff:ff:ff
6: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:0c:29:73:d1:97 brd ff:ff:ff:ff:ff:ff
    inet 192.168.244.115/24 brd 192.168.244.255 scope global noprefixroute bond0
       valid_lft forever preferred_lft forever
    inet6 fe80::5d94:aaad:d60f:b89b/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

在这里插入图片描述

  • 也可以通过配置文件查看网卡状态

在配置文件中可以看到每个网卡的状态及实际的 MAC 地址信息

[root@localhost ~]# cat /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: ens36
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:73:d1:97
Slave queue ID: 0

Slave Interface: ens37
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:73:d1:a1
Slave queue ID: 0

在这里插入图片描述

3.6 验证

可以在另外一台虚拟机上使用 ping 命令进行测试

ping 192.168.244.115

在这里插入图片描述

注:如果是在实际环境中有多块网卡的情况下,可以使用如下命令进行进一步的验证。关闭一个网卡之后实际在多个网卡情况下网络仍然可用(当前使用VMware模拟的环境,在关闭一个网卡之后使用 ping 命令则不能通信)

# 关闭 ens36 网卡
ifconfig ens36 down

在这里插入图片描述

4. 其他常用命令

4.1 查看bond名称

查看 bond 名称,bond 名称可在创建时指定(con-name mybond:为该 bond 连接取一个名称,这里是 mybond,示例:nmcli connection add type bond con-name mybond ifname bond0 mode balance-rr),不指定默认为 bond-bond0

[root@localhost ~]# nmcli connection show
NAME                UUID                                  TYPE      DEVICE 
ens33               faf84baf-5d19-4388-b332-a2cc69e3cd41  ethernet  ens33  
bond-bond0          219c606b-b60c-42cb-b2c0-b86e7469531d  bond      bond0  
bond-slave-ens36    86ebcf5f-2599-4a51-a153-a0757cc1256b  ethernet  ens36  
bond-slave-ens37    32d8d57a-d8c0-4bb6-a871-3c02ea68555b  ethernet  ens37  
Wired connection 1  74b43bd1-867d-3c35-86da-bc9a0a96eb1e  ethernet  --     
Wired connection 2  cae1b12a-0fdc-3872-9ffd-2a6d01696d71  ethernet  --

在这里插入图片描述

4.2 显示bond连接的详细信息

显示 bond-bond0 连接的详细信息,包括其配置参数

nmcli connection show bond-bond0

在这里插入图片描述

显示 bond0 设备的信息,如状态、硬件地址、IP 地址等

[root@localhost ~]# nmcli device show bond0
GENERAL.DEVICE:                         bond0
GENERAL.TYPE:                           bond
GENERAL.HWADDR:                         00:0C:29:73:D1:97
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     bond-bond0
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/6
IP4.ADDRESS[1]:                         192.168.244.115/24
IP4.GATEWAY:                            192.168.244.2
IP4.ROUTE[1]:                           dst = 192.168.244.0/24, nh = 0.0.0.0, mt = 300
IP4.ROUTE[2]:                           dst = 0.0.0.0/0, nh = 192.168.244.2, mt = 300
IP4.DNS[1]:                             8.8.8.8
IP6.ADDRESS[1]:                         fe80::5d94:aaad:d60f:b89b/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 300
IP6.ROUTE[2]:                           dst = ff00::/8, nh = ::, mt = 256, table=255

在这里插入图片描述

4.3 删除bond信息

如果需要删除 bond 配置,可以使用以下命令

先删除从属接口的连接,再删除 bond 连接。

nmcli connection delete mybond
nmcli connection delete bond-slave-eth36
nmcli connection delete bond-slave-eth37

 
 
 
 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值