RHEL的bond与team网卡绑定实践

前言

        为了提高网络容错或吞吐量,一般服务器都会采取多网卡绑定的策略,在RHEL6中使用的是Bond,而RHEL7/8提供了一项新的实现技术Team,Team是通过内核模块和一个用户空间服务来处理操作。Team是另一种聚合方式,不会取代红帽企业 Linux 6/7 中的bonding。Team实现为负载平衡和冗余要求提供了一个易于扩展和可扩展的解决方案。Team由内核驱动和teamd守护进程实现。Bond和Team有多种方式:nmclii命令、配置文件、nmtui、nm-connection-editor图形界面、cockpit(web配置)方式。

官方说明:在 Red Hat Enterprise Linux 9 中已被弃用Team。如果您计划将服务器升级到将来的 RHEL 版本,请考虑使用内核绑定驱动程序作为替代方案

一、Bond的实现

使用nmcli方式创建bonding

1、bind的绑定模式:

绑定模式

交换机上的配置

0 - balance-rr

轮询策略

需要启用静态的 Etherchannel(未启用 LACP 协商)

1 - active-backup

主备策略

需要可自主端口

2 - balance-xor

异或策略

需要启用静态的 Etherchannel(未启用 LACP 协商)

3 - broadcast

广播策略

需要启用静态的 Etherchannel(未启用 LACP 协商)

4 - 802.3ad

动态链路聚合

需要启用 LACP 协商的 Etherchannel

5 - balance-tlb

适配器传输负载均衡

需要可自主端口

6 - balance-alb

适配器负载均衡

需要可自主端口

有关在交换机中配置这些设置,请查看交换机文档。

常用的有三种

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

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

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

2、创建名称为bond1的绑定

[root@localhost ~]# nmcli con add type bond con-name bond1 ifname bond1 mode active-backup 
Connection 'bond1' (74659382-3e46-4a95-851d-66f90b2ece30) successfully added.

3、给bond1配置IP

[root@localhost ~]# nmcli connection modify bond1 ipv4.addresses 192.168.2.200/24 ipv4.gateway 192.168.2.1

4、将两个网卡enp0s3、enp0s8增加到bond1

root@localhost ~]# nmcli connection add type bond-slave ifname enp0s3 master bond1 
Connection 'bond-slave-enp7s0f0' (061f5c5c-3366-4025-8149-7c89e49ab1b3) successfully added.
[root@localhost ~]# nmcli connection add type bond-slave ifname enp0s8 master bond1 
Connection 'bond-slave-enp0s8' (45440593-243e-4618-ab1a-0845555e11c1) successfully added.  

bond获取mac地址有两种方式:

1)、从第一个活跃网卡中获取mac地址,然后其余的SLAVE网卡的mac地址都使用该mac地址;

2)、bond组使用当前活跃网卡的mac地址,mac地址随活跃网卡的转换而变。  

虚拟机(vmware workstation、 virtualbox)不支持第一种获取mac地址的方式,那么需要使用fail_over_mac=1参数,所以这里我们添加fail_over_mac=1参数

vmware workstation虚拟机配置双网卡时需要设置fail_over_mac

# nmcli c modify bond0 bond.options fail_over_mac=1 mode active-backup

设置时,必须同时设置mode参数,否则会报错。

也可以通过修改bond0的配置文件ifcfg-bond0中添加如下行信息

# BONDING_OPTS="fail_over_mac=1 mode=active-backup"

5、启动bonging

启动从属接口enp0s3

[root@localhost ~]# nmcli connection up bond-slave-enp0s3 
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)

启动从属接口enp0s8

[root@localhost ~]# nmcli connection up bond-slave-enp0s8
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)

启动bind1

[root@localhost ~]# nmcli connection up  bond1 
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/Act

6、查看绑定情况

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

Bonding Mode: fault-tolerance (active-backup) (fail_over_mac active)
Primary Slave: None
Currently Active Slave: enp0s3
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: enp0s3
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:28:29:09
Slave queue ID: 0

Slave Interface: enp0s8
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 08:00:27:79:25:30
Slave queue ID: 0

7、验证bond是否配置成功

在客户端电脑上ping 192.168.2.200,断开其中一个网卡后是否有超时,如果有多个超时或丢包则异常。

二、Team的实现

红帽官方命令行配置team文档

team的聚合方式:broadcast、roundrobin、activebackup、loadbalance、lacp

1、创建team0接口

[root@localhost ~]# nmcli con add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}'

#nmcli con add type team con-name CNAME ifname INAME [config JSON] 3 #CNAME 指代连接的名称,INAME 是接口名称,JSON (JavaScript Object Notation) 指定所使用的处理器(runner)。 4 #JSON语法格式:'{"runner":{"name":"METHOD"}}' METHOD 是以下的其中一个:broadcast、activebackup、roundrobin、loadbalance 或者lacp。

2、查看网络接口名称及状态,并记录要添加到team中的接口名称

[root@localhost ~]# nmcli device status
DEVICE      TYPE      STATE   CONNECTION
team0       team      已连接  team0
enp0s3      ethernet  已连接  team0-p1
enp0s8      ethernet  已连接  team0-p2

3、将接口加入team中

[root@localhost ~]# nmcli con add type team-slave con-name team0-p1 ifname enp0s3 master team0
[root@localhost ~]# nmcli con add type team-slave con-name team0-p2 ifname enp0s8 master team0

如果原来有配置bond,直接将现有连接配置中的 master 参数设置为 team0 :

# nmcli connection modify bond-slave-enp0s8 master team0

# nmcli connection modify bond-slave-enp0s3 master team0

这些命令将名为 bond-slave-enp0s3 和 bond-slave-enp0s8 的现有连接配置文件分配给 team0 连接。

4、为team配置IP信息

[root@localhost ~]# nmcli con modify team0 ipv4.addresses 192.168.2.200/24 ipv4.gateway 192.168.2.1 ipv4.method manual

5、激活接口

[root@localhost ~]# nmcli con reload    # 重载网络配置信息
[root@localhost ~]# nmcli con up team0-p1
[root@localhost ~]# nmcli con up team0-p2
[root@localhost ~]# nmcli con up team0

# 查看接口状态
[root@localhost ~]# nmcli con show
NAME               UUID                                  TYPE      DEVICE
team0              6cec7dad-005a-46cb-86d7-c6296417d5a4  team      team0
virbr0             921ed677-2dba-4f5a-9e1f-416b38d8fdb0  bridge    virbr0
team0-p1           bc960b2c-0bb2-42cd-8adb-0a5fc1d5dd67  ethernet  enp0s3
team0-p2           b7e2778d-5c05-47a6-9cb7-e15ba3d56451  ethernet  enp0s8

6、查看team状态

[root@localhost ~]# teamdctl team0 state
setup:
runner: activebackup
ports:
enp0s3
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
enp0s8
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
runner:
active port: enp0s3

7、team删除命令

[root@localhost ~]#  nmcli connection delete team0
[root@localhost ~]# nmcli connection delete team0-port1
[root@localhost ~]# nmcli connection delete team0-port2

8、更改team的模式

# 修改为轮巡模式
[root@localhost ~]#  nmcli connection modify team0 config '{"runner":{"name":"roundrobin"}}'
 
[root@localhost ~]# nmcli connection reload
[root@localhost ~]# nmcli con up team0

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值