Red Hat Training

A Red Hat training course is available for RHEL 8

第 13 章 配置网络团队(team)

这部分论述了网络团队的基础知识、绑定和团队之间的不同以及如何在 Red Hat Enterprise Linux 8 中配置网络团队。

您可以在不同类型的设备中创建网络团队,例如:

  • 物理和虚拟以太网设备
  • 网络绑定
  • 网络桥接
  • VLAN 设备

13.1. 了解网络团队

网络团队(network teaming)是一个合并或聚合网络接口的功能,它提供了一个高吞吐量或冗余的逻辑接口。

网络团队使用内核驱动程序来实现对数据包流、用户空间库以及用于其他任务的服务的快速处理。因此,网络团队是一个易扩展的解决方案,来满足负载平衡和冗余的要求。

重要

某些网络团队的功能,比如故障切换机制,不支持不通过网络交换机的直接电缆连接。详情请查看是否支持直接连接的绑定?

13.2. 了解控制器和端口接口的默认行为

在使用 NetworkManager 服务管理网络团队或对其进行故障排出时,请考虑以下默认行为:

  • 启动控制器接口不会自动启动端口接口。
  • 启动端口接口总会启动控制器接口。
  • 停止控制器接口也会停止端口接口。
  • 没有端口的控制器可以启动静态 IP 连接。
  • 没有端口的控制器在启动 DHCP 连接时会等待端口。
  • 当您添加带有载体的端口时,具有 DHCP 连接的控制器会等待端口完成。
  • 具有 DHCP 连接的控制器在您添加没有载体的端口时,将继续等待端口等待等待。

13.3. 网络团队和绑定功能的比较

了解网络团队和网络绑定支持的功能:

功能网络绑定网络团队

广播 Tx 策略

轮询 Tx 策略

Active-backup Tx 策略

LACP(802.3ad)支持

是(仅活动)

基于 hash 的 Tx 策略

用户可以设置哈希功能

TX 负载均衡支持(TLB)

LACP 哈希端口选择

LACP 支持的负载均衡

ethtool 链接监控

ARP 链路监控

NS/NA(IPv6)链路监控

端口启动/关闭延时

端口优先级和粘性("主要" 选项增强)

独立的每个端口链路监控设置

多个链路监控设置

有限

Lockless Tx/Rx 路径

否(rwlock)

是(RCU)

VLAN 支持

用户空间运行时控制

有限

用户空间中的逻辑

可扩展性

模块化设计

性能开销

非常低

D-Bus 接口

多设备堆栈

使用 LLDP 时零配置

(在计划中)

NetworkManager 支持

13.5. 安装 teamd 服务

要在 NetworkManager 中配置网络团队,您需要 teamd 服务和 NetworkManager 的团队插件。默认情况下,它们都会在 Red Hat Enterprise Linux 8 中安装。这部分论述了如何在删除所需软件包时安装它们。

先决条件

  • 为主机分配了活跃的红帽订阅。

流程

  • 安装 teamdNetworkManager-team 软件包:

    # yum install teamd NetworkManager-team

13.6. 使用 nmcli 命令配置网络团队

本节论述了如何使用 nmcli 工具配置网络团队。

先决条件

流程

  1. 创建团队接口:

    # nmcli connection add type team con-name team0 ifname team0 team.runner activebackup

    这个命令会创建一个名为 team0 的网络团队,它使用 activebackup 运行程序。

  2. 另外,还可设置链接监视器。例如,要在 team0 连接配置集中设置 ethtool 链路监视器:

    # nmcli connection modify team0 team.link-watchers "name=ethtool"

    链路监视器支持不同的参数。要为链接监视器设置参数,在 name 属性中指定它们(以空格分隔)。请注意,name 属性必须用引号包围起来。例如,使用 ethtool 链路监视器,并将其 delay-up 参数设置为 2500 毫秒(2.5 秒):

    # nmcli connection modify team0 team.link-watchers "name=ethtool delay-up=2500"

    要设置多个链路监视器,每个都使用特定的参数,不同的连接监视器以逗号分隔。以下示例使用 delay-up 参数设置 ethtool 链接监视器,使用 source-hosttarget-host 参数设置 arp_ping 链路监视器:

    # nmcli connection modify team0 team.link-watchers "name=ethtool delay-up=2, name=arp_ping source-host=192.0.2.1 target-host=192.0.2.2"
  3. 显示网络接口,并记录您要添加到团队中的接口名称:

    # nmcli device status
    DEVICE  TYPE      STATE         CONNECTION
    enp7s0  ethernet  disconnected  --
    enp8s0  ethernet  disconnected  --
    bond0   bond      connected  bond0
    bond1   bond      connected  bond1
    ...

    在本例中:

    • enp7s0enp8s0 没有配置。要将这些设备用作端口,请在下一步中添加连接配置集。请注意,您只能在没有分配给任何连接的团队中使用以太网接口。
    • bond0bond1 已有连接配置集。要将这些设备用作端口,请在下一步中修改其配置集。
  4. 为团队分配端口接口:

    1. 如果没有配置您要分配给团队的接口,为其创建新的连接配置集:

      # nmcli connection add type ethernet slave-type team con-name team0-port1 ifname enp7s0 master team0
      # nmcli connection add type ethernet slave-type team con-name team0-port2 ifname enp8s0 master team0

      .这些命令为 enp7s0enp8s0创建配置集,并将其添加到 team0 连接中。

    2. 要为团队分配现有连接配置集,将这些连接的 master 参数设置为 team0

      # nmcli connection modify bond0 master team0
      # nmcli connection modify bond1 master team0

      这些命令将名为 bond0bond1 的现有连接配置集分配给 team0 连接。

  5. 配置团队的 IP 设置。如果要使用这个团队作为其它设备的端口,请跳过这一步。

    1. 配置 IPv4 设置。例如:要设置 team0 连接的静态 IPv4 地址、网络掩码、默认网关、DNS 服务器和DNS 搜索域,请输入:

      # nmcli connection modify team0 ipv4.addresses '192.0.2.1/24'
      # nmcli connection modify team0 ipv4.gateway '192.0.2.254'
      # nmcli connection modify team0 ipv4.dns '192.0.2.253'
      # nmcli connection modify team0 ipv4.dns-search 'example.com'
      # nmcli connection modify team0 ipv4.method manual
    2. 配置 IPv6 设置。例如:要设置 team0 连接的静态 IPv6 地址、网络掩码、默认网关、DNS 服务器和DNS 搜索域,请输入:

      # nmcli connection modify team0 ipv6.addresses '2001:db8:1::1/64'
      # nmcli connection modify team0 ipv6.gateway '2001:db8:1::fffe'
      # nmcli connection modify team0 ipv6.dns '2001:db8:1::fffd'
      # nmcli connection modify team0 ipv6.dns-search 'example.com'
      # nmcli connection modify team0 ipv6.method manual
  6. 激活连接:

    # nmcli connection up team0

验证步骤

  • 显示团队状态:

    # teamdctl team0 state
    setup:
      runner: activebackup
    ports:
      enp7s0
        link watches:
          link summary: up
          instance[link_watch_0]:
            name: ethtool
            link: up
            down count: 0
      enp8s0
        link watches:
          link summary: up
          instance[link_watch_0]:
            name: ethtool
            link: up
            down count: 0
    runner:
      active port: enp7s0

    在这个示例中,两个端口都是上线的。

其它资源

13.7. 使用 nm-connection-editor 配置网络团队

本节论述了如何使用 nm-connection-editor 应用程序配置网络团队。

请注意, nm-connection-editor 只能向团队添加新端口。要将现有连接配置集用作端口,请使用 nmcli 工具创建团队,如使用 nmcli 命令配置网络团队 所述。

先决条件

  • 在服务器中安装两个或者两个以上物理或者虚拟网络设备。
  • 要将以太网设备用作团队的端口,必须在服务器中安装物理或者虚拟以太网设备。
  • 要使用 team、bond 或 VLAN 设备作为团队的端口,请确保这些设备还没有配置。

流程

  1. 打开终端窗口,输入 nm-connection-editor:

    $ nm-connection-editor
  2. + 按钮添加新连接。
  3. 选择 Team 连接类型,并点 Create
  4. Team 标签页中:

    1. 可选:在 Interface name 字段中设置 team 接口的名称。
    2. 添加 按钮为网络接口添加新连接配置集,并将配置集作为端口添加到团队。

      1. 选择接口的连接类型。例如,为有线连接选择 Ethernet
      2. 可选:为端口设置连接名称。
      3. 如果您是为以太网设备创建连接配置集,打开 Ethernet 标签,在 Device 字段中选择您要添加为团队的端口。如果您选择了不同的设备类型,请相应地进行配置。请注意,您只能在没有分配给任何连接的团队中使用以太网接口。
      4. Save
    3. 对您要添加到团队的每个接口重复前面的步骤。

      add nic to team in nm connection editor

    4. Advanced 按钮将高级选项设置为团队连接。

      1. Runner 选项卡中,选择运行程序。
      2. Link Watcher 标签中,设置链路监视器及其可选设置。
      3. 点击 确定
  5. 配置团队的 IP 设置。如果要使用这个团队作为其它设备的端口,请跳过这一步。

    1. IPv4 Settings 标签页中,配置 IPv4 设置。例如,设置静态 IPv4 地址、网络掩码、默认网关、DNS 服务器和 DNS 搜索域: team IPv4 settings nm connection editor
    2. IPv6 Settings 标签页中,配置 IPv6 设置。例如,设置静态 IPv6 地址、网络掩码、默认网关、DNS 服务器和 DNS 搜索域: team IPv6 settings nm connection editor
  6. 保存团队连接。
  7. 关闭 nm-connection-editor

验证步骤

  • 显示团队状态:

    # teamdctl team0 state
    setup:
      runner: activebackup
    ports:
      enp7s0
        link watches:
          link summary: up
          instance[link_watch_0]:
            name: ethtool
            link: up
            down count: 0
      enp8s0
        link watches:
          link summary: up
          instance[link_watch_0]:
            name: ethtool
            link: up
            down count: 0
    runner:
      active port: enp7s0

其它资源