将适配器团队添加到 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 模板示例也应有助于使用团队进行部署。

参考资料