端口组支持

Bare Metal 服务支持通过 configdrive 在实例中静态配置端口组(绑定)。请参阅 内核关于绑定的文档,了解为什么它可能有用以及如何在 Linux 中设置它。以下部分描述了如何在 Bare Metal 服务中使用它们。

交换机端配置

如果需要在 ironic 部署中需要端口组,则需要在交换机上进行配置。 这需要手动完成,并且在交换机上配置的模式和属性必须与在 ironic 端配置的模式和属性相对应,因为绑定模式和属性在您的交换机上可能命名不同,或者其可能的值与 内核关于绑定的文档 中描述的不同。请参阅您的交换机配置文档以获取更多详细信息。

如果需要通过 (i)PXE 启动部署 ramdisk,则无法使用需要端口组的配置和清理。 如果您的交换机或所需的端口组配置不支持端口组回退,该回退将允许端口组成员单独使用,则需要在 ironic 中将端口组的 standalone_ports_supported 值设置为 False,因为默认情况下它是 True

物理网络

如果端口组中的任何端口都有物理网络,则该端口组中的所有端口都必须具有相同的物理网络。

为了更改端口组中端口的物理网络,必须首先将所有端口从端口组中删除,然后再更改它们的物理网络(为相同的值),然后将它们添加回端口组。

有关在 Bare Metal 服务中使用物理网络的更多信息,请参阅 物理网络

Bare Metal 服务中的端口组配置

端口组配置在 ironic API 微版本 1.26 中受支持,以下 CLI 命令为了完整性而指定它。

  1. 创建端口组时,必须指定其所属的节点,以及可选地,其名称、地址、模式、属性以及是否支持回退到独立端口

    baremetal port group create \
    --node $NODE_UUID --name test --address fa:ab:25:48:fd:ba --mode 802.3ad \
    --property miimon=100 --property xmit_hash_policy="layer2+3" \
    --support-standalone-ports
    

    可以使用 baremetal port group set 命令更新端口组,有关更多详细信息,请参阅其帮助。

    如果未指定地址,则部署实例上的端口组地址将与连接到端口组的 neutron 端口的地址相同。 如果 neutron 端口未连接,则不会配置端口组。

    注意

    在独立模式下,必须手动配置端口组。 可以通过在镜像中静态配置或生成 configdrive 并将其添加到节点的 instance_info 来完成。有关如何通过 configdrive 配置绑定的更多信息,请参阅 cloud-init 文档代码。要使绑定配置生效,需要 cloud-init 版本 0.7.7 或更高版本。

    以下是配置通过 configdrive 进行绑定的简单示例

    启动实例时,需要添加用户数据文件以通过 --user-data 选项配置绑定。 例如

    {
      "networks": [
        {
          "type": "physical",
          "name": "eth0",
          "mac_address": "fa:ab:25:48:fd:ba"
        },
        {
          "type": "physical",
          "name": "eth1",
          "mac_address": "fa:ab:25:48:fd:ab"
        },
        {
          "type": "bond",
          "name": "bond0",
          "bond_interfaces": [
            "eth0", "eth1"
            ],
            "mode": "active-backup"
        }
      ]
    }
    

    如果在独立模式下未显式设置端口组地址,则将按照 内核关于绑定的文档 中描述的过程自动设置它。

    在接口附加期间,端口组比端口具有更高的优先级,因此它们将首先使用。(目前尚不可能在接口附加请求中指定所需的端口组或端口)。 没有端口的端口组将被忽略。

    模式和属性值在 内核关于绑定的文档 中描述。 默认端口组模式为 active-backup,可以通过在 ironic API 服务配置文件中设置 DEFAULT.default_portgroup_mode 配置选项来更改此默认值。

  2. 将端口与创建的端口组关联。

    可以在端口创建时完成

    baremetal port create \
    --node $NODE_UUID --address fa:ab:25:48:fd:ba --port-group test
    

    或者通过更新现有端口

    baremetal port set $PORT_UUID --port-group $PORT_GROUP_UUID
    

    在更新端口时,与端口关联的节点必须处于 enrollmanageableinspecting 状态。 端口组可以具有与单个端口相同或不同的地址。

  3. 启动一个实例(或直接启动节点,在独立 ironic 的情况下),提供一个具有 cloud-init 版本 0.7.7 或更高版本并支持绑定的镜像。

部署完成后,您可以通过在实例中运行以下命令来检查端口组是否已正确设置

cat /proc/net/bonding/bondX

其中 X 是 cloud-init 为每个配置的端口组自动生成的数字,顺序不确定。 它从 0 开始,并且对于每个配置的端口组递增 1。