金鱼哥RHCA回忆录:RH358配置链路聚合--配置网络组Team

举报
金鱼哥 发表于 2022/04/19 14:35:54 2022/04/19
【摘要】 第二章 配置链路聚合--配置网络组Team

RH358配置链路聚合–配置网络组Team

本章节开始,介绍如何配置和管理链路聚合配置。此方面技术在实际工作中必备,特别在现各种高并发场景这么大量的时代,没HA咋行?

此文章( 第二章 配置链路聚合–配置网络组Team )收录在RHCA专栏:RHCA 回忆录


1. 介绍网络组Team概念

保持网络服务的可用性需要一个网络高可用性的坚实基础。当至少有一条trunks提供连通性时,多路冗余网络trunks可以保证网络业务的可用性。此外,当单个网络接口被传入的网络流量饱和时,服务访问可能会受到影响。

在这种情况下,将网络流量分散到多个网络接口可能是解决方案。网络分组将多个网络接口卡逻辑地连接在一起,以允许故障转移,或允许更高的吞吐量。

Red Hat Enterprise Linux 8使用一个小的内核驱动程序和一个用户空间守护进程teamd来实现网络合作。内核高效地处理网络数据包,而teamd负责逻辑和接口处理。称为runners运行器的软件实现负载均衡和active-backup主动备份逻辑,比如roundrobin。下表总结了每个runners运行器的使用:

Teamd 运行器

运行器Runner 描述
activebackup 故障转移运行程序,监视链接更改并选择活动端口进行数据传输。
roundrobin 这个运行器以轮循的方式从每个端口传输数据包。
broadcast 这个运行器从所有端口传输每个数据包。
loadbalance 这个运行器监控流量,并使用哈希函数试图在选择数据包传输端口时达到完美的均衡。
lacp 该运行器实现802.3ad链路聚合控制协议(LACP)。它具有与loadbalance负载均衡运行器相同的传输端口选择可能性。
random 这个运行程序在一个随机选择的端口上传输数据包。

当使用NetworkManager控制团队接口或对其进行故障排除时,您应该牢记以下几点:

  • 启动team接口并不会自动启动其端口接口。

  • 启动端口接口总是启动team接口。

  • 停止team接口也停止端口接口。

  • 没有端口的team接口可以启动静态IP连接。

  • 不含端口的team在启动DHCP连接时等待端口。

  • 如果一个team接口有DHCP连接,并且正在等待端口,当添加一个带有载波信号的端口时,它就完成了激活。

  • 如果一个team接口已经有DHCP连接,并且正在等待端口,当添加一个没有载波信号的端口时,它将继续等待。

所有的网络交互都是通过team接口(或主接口)完成的。 team接口由多个端口接口(端口或从属接口)组成,它们是组合到team中的网络接口。

Runner 方式(补充说明):

1.roundrobin 【mode 0】轮转策略 (balance-rr)

特点:

1)从头到尾顺序的在每一个slave接口上面发送数据包,轮询方式往每条链路发送报文,基于per packet方式发送。服务上ping 一个相同地址:1.1.1.1 双网卡的两个网卡都有流量发出。负载到两条链路上,说明是基于per packet方式 ,进行轮询发送。

2)提供负载均衡和容错的能力,当有链路出问题,会把流量切换到正常的链路上。

交换机端需要配置聚合口

2.activebackup【mode 1】活动-备份(主备)策略

特点:

一个端口处于主状态 ,一个处于从状态,所有流量都在主链路上处理,从链路不会有任何流量。当主端口down掉时,从端口接手主状态。

不需要交换机端支持

3.loadbalance【mode 2】限定流量

特点:

该模式将限定流量,以保证到达特定对端的流量总是从同一个接口上发出。既然目的地是通过MAC地址来决定的,因此该模式在“本地”网络配置下可以工作得很好。

如果所有流量是通过单个路由器(比如 “网关”型网络配置,只有一个网关时,源和目标mac都固定了,那么这个算法算出的线路就一直是同一条,那么这种模式就没有多少意义了。),那该模式就不是最好的选择。

和balance-rr一样,交换机端口需要能配置为“port channel”。这模式是通过源和目标mac做hash因子来做xor算法来选路的。

交换机端需要配置聚合口

4.broadcast【mode 3】广播策略

特点:

这种模式一个报文会复制两份往bond下的两个接口分别发送出去,当有对端交换机失效,我们感觉不到任何downtime,但此法过于浪费资源;不过这种模式有很好的容错机制。

此模式适用于金融行业,因为他们需要高可靠性的网络,不允许出现任何问题

适用于拓扑,两个接口分别接入两台交换机,并且属于不同的vlan,当一边的网络出现故障不会影响服务器另一边接入的网络正常工作。而且故障过程是0丢包。

5.lacp (implements the 802.3ad Link Aggregation ControlProtocol)【mode 4】

特点:

802.3ad模式是IEEE标准,因此所有实现了802.3ad的对端都可以很好的互操作。802.3ad 协议包括聚合的自动配置,因此只需要很少的对交换机的手动配置(要指出的是,只有某些设备才能使用802.3ad)。802.3ad标准也要求帧按顺序(一定程度上)传递,因此通常单个连接不会看到包的乱序。

缺点:

标准要求所有设备在聚合操作时,要在同样的速率和双工模式,而且,和除了balance-rr模式外的其它bonding负载均衡模式一样,任何连接都不能使用多于一个接口的带宽。 此外,linux bonding的802.3ad实现通过对端来分发流量(通过MAC地址的XOR值),因此在“网关”型配置下,所有外出(Outgoing)流量将使用同一个设备。进入(Incoming)的流量也可能在同一个设备上终止,这依赖于对端802.3ad实现里的均衡策略。在“本地”型配置下,流量将通过 bond里的设备进行分发。

应用拓扑同mode 0,和mode 2一样,不过这种模式除了配置port channel之外还要在port channel聚合口下开启LACP功能,成功协商后,两端可以正常通信。否则不能使用。

2. 配置网络组teams

使用nmcli命令创建和管理team接口与端口接口。以下四个步骤创建和激活一个team接口:

  1. 创建team接口。

  2. 分配team接口的IPv4和/或IPv6属性。

  3. 创建端口接口。

  4. 启用或关闭team接口和端口接口。

1. 创建team接口。

使用nmcli为team接口创建一个连接,语法如下:

[root@host ~]# nmcli con add type team con-name CONN_NAME ifname IFACE_NAME team.runner RUNNER

其中CONN_NAME是连接名,IFACE_NAME是接口名,RUNNER指定team的运行器,例如activebackup。

下面的nmcli命令创建一个名为team0的NetworkManager连接。它创建一个名为team0的team接口,该接口使用负载均衡运行器,当它发送数据包时,该接口在活动接口之间交替使用。

[root@host ~]# nmcli con add type team con-name team0 ifname team0 team.runner loadbalance

2. 分配team接口的IPv4和/或IPv6属性。

创建team接口之后,您可以选择为其分配静态IPv4和/或IPv6属性。默认连接属性将team接口配置为使用DHCP进行IP设置。

以下示例为team0接口分配静态IPv4地址:

[root@host ~]# nmcli con mod team0 ipv4.addresses 192.0.2.4/24

[root@host ~]# nmcli con mod team0 ipv4.method manual

3. 创建端口接口。

# 使用nmcli命令创建每个端口接口,语法如下:。
[root@host ~]# nmcli con add type team-slave con-name CONN_NAME  \
ifname IFACE_NAME master TEAM
# 其中CONN_NAME是NetworkManager连接名,IFACE_NAME是现有网络接口,TEAM指定team接口的connection名称。
# 可以显式指定连接名称,或者默认为team-slave-IFACE_NAME。

# 下面的命令为team0  team接口创建端口接口,并将它们附加到eth1和eth2网络接口。
[root@host ~]# nmcli con add type team-slave con-name team0-eth1 \
 ifname eth1 master team0
[root@host ~]# nmcli con add type team-slave con-name team0-eth2 \
 ifname eth2 master team0

4. 启用或关闭team接口和端口接口。

# 使用nmcli管理team和端口连接,语法如下:
[root@host ~]# nmcli con up CONN_NAME
[root@host ~]# nmcli con down CONN_NAME
# 其中CONN_NAME是团队或端口接口的连接名。

# 下面的示例激活team0 team接口和team0-eth1连接:
[root@host ~]# nmcli con up team0
[root@host ~]# nmcli con up team0-eth1

使用teamdctl命令显示team接口的状态。显示的信息包括端口网口的状态信息。

[root@host ~]# teamdctl team0 state

3. 课本练习

[student@workstation ~]$ lab netlink-teaming start

1. 按要求配置网络聚合。

[root@servera ~]# nmcli con add type team con-name team0 ifname team0 team.runner activebackup team.runner-hwaddr-policy by_active
#课本没有后面的参数,此参数是为了完美模拟故障而设置,实际物理机器不用这样设置。而且这配置适合在 activebackup使用。双网卡在虚拟机上操作,测试断开时,会存在各种问题,请知悉。
[root@servera ~]# nmcli con mod team0 ipv4.addresses 192.168.0.100/24
[root@servera ~]# nmcli con mod team0 ipv4.method manual

[root@servera ~]# nmcli con add type ethernet slave-type team con-name team0-port1 ifname eth1 master team0
[root@servera ~]# nmcli con add type ethernet slave-type team con-name team0-port2 ifname eth2 master team0

[root@servera ~]# nmcli con up team0
[root@servera ~]# nmcli con up team0-port1
[root@servera ~]# nmcli con up team0-port2

[root@servera ~]# teamdctl team0 state
setup:
  runner: activebackup
ports:
  eth1
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 0
  eth2
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 0
runner:
  active port: eth1
# 注意,eth1端口是活动的,并接收所有流量。当系统出现故障时,将使用eth2。

2. 测试连接。

[root@servera ~]# ping -I team0 -c 4 192.168.0.254

3. 抓包测试。

[root@servera ~]# ping 192.168.0.254

[root@servera ~]# tcpdump -i eth1 -p icmp

[root@servera ~]# tcpdump -i eth2 -p icmp

4. 模拟故障。

(虚拟机环境问题会存在坑)

[root@servera ~]# nmcli con down team0-port1

[root@servera ~]# teamdctl team0 state

完成实验。

[student@workstation ~]$ lab netlink-teaming finish

总结

  • 介绍网络组Team的概念。
  • 演示具体命令参数如何配置网络聚合team。
  • 虚拟机环境模拟网络聚合配置会有坑,在真机不会。

RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。

以上就是【金鱼哥】对 第二章 配置链路聚合–配置网络组Team 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。

如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点,如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。