将适配器团队添加到 os-net-config¶
https://blueprints.launchpad.net/os-net-config/+spec/os-net-config-teaming
本文档描述了为 os-net-config 添加功能,以支持适配器团队作为绑定接口的一种选项。适配器团队由于使用了团队代理,比常规绑定提供额外的功能。
问题描述¶
os-net-config 支持 OVS 绑定和 Linux 内核绑定,但有些用户希望使用适配器团队代替绑定。适配器团队提供了绑定不支持的额外选项,并且支持绑定支持的大部分选项。
提议的变更¶
概述¶
添加一个类似于现有绑定类的新的类,允许通过 teamdctl 配置 teamd 守护进程。团队的配置语法应与配置绑定的语法在功能上相似。
替代方案¶
我们已经使用了两种绑定方法,Linux 绑定内核模块和 Open vSwitch。但是,适配器团队正变得最佳实践,此更改将开放该可能性。
安全影响¶
从安全角度来看,使用团队代替其他绑定模式的最终结果应该相同。适配器团队不会干扰 iptables 或 selinux。
其他最终用户影响¶
在调试使用团队的部署时,操作员可能需要熟悉 teamdctl 实用程序。
性能影响¶
使用团队而不是绑定对性能将产生积极影响。团队非常轻量级,并且可能比其他绑定模式(尤其是 OVS)使用更少的 CPU。团队具有以下影响
对负载均衡哈希算法进行细粒度控制。
端口优先级和粘性
每端口监控。
其他部署者影响¶
在 TripleO 中,os-net-config 已经存在 OVS 模式绑定和 Linux 绑定的示例模板。关于未来统一绑定模板,已经与 Dan Prince 进行了一些讨论。
绑定类型可以作为 NIC 配置模板中的参数进行设置。为此,使团队配置尽可能类似于绑定配置可能是有意义的。
开发人员影响¶
如果可能,配置应尽可能类似于绑定配置。事实上,只要可以提供团队所需的元数据,就可以将其视为不同形式的绑定。
实现¶
负责人¶
- 主要负责人
Dan Sneddon <dsneddon@redhat.com>
工作项¶
添加团队对象和单元测试。
配置示例模板以演示团队的使用。
使用配置了新版本的 os-net-config 和适配器团队测试 TripleO。
配置示例¶
以下是 os-net-config 应该能够实现的团队配置示例
-
type: linux_team
name: team0
bonding_options: "{"runner": {"name": "activebackup"}, "link_watch": {"name": "ethtool"}}"
addresses:
-
ip_subnet: 192.168.0.10/24
members:
-
type: interface
name: eno2
primary: true
-
type: interface
name: eno3
在上述示例中,Linux 绑定配置和适配器团队配置之间的唯一区别是类型(linux_team)以及 bonding_options 的内容(绑定具有不同格式的选项)。
Implementation Details¶
os-net-config 将不得不配置团队的 ifcfg 文件。团队接口的 ifcfg 格式在此处记录 [1]。
如果某个接口被标记为主要接口,则该接口的 ifcfg 文件应以高于默认值(0)的优先级列出
TEAM_PORT_CONFIG='{"prio": 100}'
模式在 runner: 语句中设置,以及适用于该团队模式的任何设置。
我们有选择仅使用 ifcfg 文件或使用 ip 实用程序来影响适配器团队的设置。从团队文档来看,这两种方法都可以。
os-net-config 中适配器团队的提议实现 [2] 仅使用 ifcfg 文件来设置团队设置、从属接口以及设置主接口。这种方法的潜在缺点是,当进行配置更改时,接口必须关闭并重新启动,但这与 os-net-config 中的其他设备类型一致。这可能是可以接受的,因为网络更改很少进行,并且假定对正在重新配置的主机具有破坏性。
依赖项¶
teamd 守护进程和 teamdctl 命令行实用程序必须安装。teamd 默认情况下未安装在 RHEL/CENTOS 上,但是 teamd 当前包含在 RDO overcloud-full 镜像中。这应该添加到 os-net-config RPM 依赖项列表中。
对于使用 802.3ad 的 LACP 绑定,需要配置交换机支持,并且至少需要配置两个端口用于 LACP 绑定。
测试¶
为了在 CI 中测试此功能,我们需要一个具有多个物理 NIC 的环境。适配器团队支持 LACP 以外的模式,因此我们可能可以使用多个链路而无需任何特殊配置。
文档影响¶
部署文档需要更新,以涵盖团队的使用。os-net-config 示例配置将演示在 os-net-config 中的使用。TripleO Heat 模板示例也应有助于使用团队进行部署。
参考资料¶
[1] - 文档:使用 ifcfg 文件创建网络团队 https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/sec-Configure_a_Network_Team_Using-the_Command_Line.html#sec-Creating_a_Network_Team_Using_ifcfg_Files
[2] - 审查:为 ifcfg 系统添加使用 teamd 的适配器团队支持 https://review.openstack.org/#/c/339854/