搜索

7.6. 创建和管理主机聚合

download PDF

作为云管理员,您可以将计算部署分区为逻辑组,以满足性能或管理需要。Red Hat OpenStack Platform (RHOSP)为分区逻辑组提供以下机制:

主机聚合

主机聚合是根据硬件或性能特征等属性将 Compute 节点分组到逻辑单元中。您可以将 Compute 节点分配到一个或多个主机聚合。

您可以通过在主机聚合上设置元数据,然后将类别和镜像映射到主机聚合,然后将类别额外规格或镜像元数据属性匹配到主机聚合元数据。当启用所需的过滤器时,计算调度程序可以使用此元数据来调度实例。您在主机聚合中指定的元数据将该主机的使用限制为其类别或镜像中指定的相同元数据的任何实例。

您可以通过在主机聚合元数据中设置 xxx_weight_multiplier 配置选项,为每个主机聚合配置权重倍数。

您可以使用主机聚合来处理负载平衡、强制实施物理隔离或冗余、具有通用属性的组服务器或单独的硬件类别。

在创建主机聚合时,您可以指定区域名称。此名称呈现给云用户,作为他们可以选择的可用区。

可用区

可用域是主机聚合的云用户视图。云用户无法在可用区中看到 Compute 节点,或者查看可用区的元数据。云用户只能看到可用区的名称。

您可以将每个 Compute 节点分配到一个可用区。您可以配置一个默认可用区,在云用户没有指定区时调度实例。您可以指示云用户使用具有特定功能的可用区。

7.6.1. 启用在主机聚合上的调度

要将实例调度到具有特定属性的主机聚合,请更新计算调度程序的配置,以启用根据主机聚合元数据进行过滤。

流程

  1. 打开 Compute 环境文件。
  2. NovaSchedulerEnabledFilters 参数中添加以下值(如果它们尚不存在):

    • AggregateInstanceExtraSpecsFilter: 添加此值,以通过与类别额外规格匹配的主机聚合元数据过滤 Compute 节点。

      注意

      要使此过滤器按预期执行,您需要限制类型额外规格的范围,使用 aggregate_instance_extra_specs: 命名空间作为 extra_specs 键的前缀。

    • AggregateImagePropertiesIsolation :添加此值,以通过与镜像元数据属性匹配的主机聚合元数据过滤 Compute 节点。

      注意

      要使用镜像元数据属性过滤主机聚合元数据,主机聚合元数据键必须与有效的镜像元数据属性匹配。有关有效镜像元数据属性的详情,请参考镜像 配置参数

    • AvailabilityZoneFilter: 在启动实例时添加此值来根据可用区进行过滤。

      注意

      您可以使用放置服务来处理可用性区域请求,而不使用 AvailabilityZoneFilter 计算调度程序服务过滤器。如需更多信息,请参阅使用 放置服务过滤可用区

  3. 保存对 Compute 环境文件的更新。
  4. 使用其他环境文件将计算环境文件添加到堆栈中,并部署 overcloud:

    (undercloud)$ openstack overcloud deploy --templates \
      -e [your environment files] \
      -e /home/stack/templates/<compute_environment_file>.yaml

7.6.2. 创建主机聚合

作为云管理员,您可以根据需要创建任意数量的主机聚合。

流程

  1. 要创建主机聚合,请输入以下命令:

    (overcloud)# openstack aggregate create <aggregate_name>

    <aggregate_name> 替换为您要分配给主机聚合的名称。

  2. 在主机聚合中添加元数据:

    (overcloud)# openstack aggregate set \
     --property <key=value> \
     --property <key=value> \
     <aggregate_name>
    • <key=value> 替换为元数据键值对。如果您使用 AggregateInstanceExtraSpecsFilter 过滤器,则键可以是任意字符串,如 ssd=true。如果使用 AggregateImagePropertiesIsolation 过滤器,则密钥必须与有效的镜像元数据属性匹配。有关有效镜像元数据属性的更多信息,请参阅镜像 配置参数
    • <aggregate_name > 替换为主机聚合的名称。
  3. 将 Compute 节点添加到主机聚合中:

    (overcloud)# openstack aggregate add host \
     <aggregate_name> \
     <host_name>
    • <aggregate_name > 替换为要向其添加 Compute 节点的主机聚合的名称。
    • <host_name> 替换为要添加到主机聚合中的 Compute 节点的名称。
  4. 为主机聚合创建类别或镜像:

    • 创建类别:

      (overcloud)$ openstack flavor create \
        --ram <size_mb> \
        --disk <size_gb> \
        --vcpus <no_reserved_vcpus> \
        host-agg-flavor
    • 创建镜像:

      (overcloud)$ openstack image create host-agg-image
  5. 在类别或镜像上设置与主机聚合上的键值对匹配的一个或多个键值对。

    • 要在类别上设置键值对,请使用范围 aggregate_instance_extra_specs

      (overcloud)# openstack flavor set \
       --property aggregate_instance_extra_specs:ssd=true \
       host-agg-flavor
    • 要在镜像上设置键值对,请使用有效的镜像元数据属性作为键:

      (overcloud)# openstack image set \
       --property os_type=linux \
       host-agg-image

7.6.3. 创建可用区

作为云管理员,您可以创建一个可用性区域,在云用户创建实例时可以选择该可用区。

流程

  1. 要创建可用区,您可以创建一个新的可用区主机聚合,或者将现有主机聚合一个可用区:

    1. 要创建新可用区主机聚合,请输入以下命令:

      (overcloud)# openstack aggregate create \
       --zone <availability_zone> \
       <aggregate_name>
      • <availability_zone> 替换为您要分配给可用区的名称。
      • <aggregate_name> 替换为您要分配给主机聚合的名称。
    2. 要使现有主机聚合成为可用区,请输入以下命令:

      (overcloud)# openstack aggregate set --zone <availability_zone> \
        <aggregate_name>
      • <availability_zone> 替换为您要分配给可用区的名称。
      • <aggregate_name > 替换为主机聚合的名称。
  2. 可选:在可用区中添加元数据:

    (overcloud)# openstack aggregate set --property <key=value> \
      <aggregate_name>
    • <key=value> 替换为您的原始键值对。您可以根据需要添加任意数量的键值属性。
    • <aggregate_name> 替换为可用区主机聚合的名称。
  3. 将 Compute 节点添加到可用区主机聚合:

    (overcloud)# openstack aggregate add host <aggregate_name> \
      <host_name>
    • <aggregate_name> 替换为可用区主机聚合的名称,以将 Compute 节点添加到其中。
    • <host_name> 替换为添加到可用区的 Compute 节点的名称。

7.6.4. 删除主机聚合

要删除主机聚合,您首先从主机聚合中删除所有 Compute 节点。

流程

  1. 要查看分配给主机聚合的所有 Compute 节点的列表,请输入以下命令:

    (overcloud)# openstack aggregate show <aggregate_name>
  2. 要从主机聚合中删除所有分配的 Compute 节点,请为每个 Compute 节点输入以下命令:

    (overcloud)# openstack aggregate remove host <aggregate_name> \
      <host_name>
    • <aggregate_name > 替换为要从中删除 Compute 节点的主机聚合的名称。
    • <host_name > 替换为要从主机聚合中删除的 Compute 节点的名称。
  3. 从主机聚合中删除所有 Compute 节点后,请输入以下命令删除主机聚合:

    (overcloud)# openstack aggregate delete <aggregate_name>

7.6.5. 创建项目隔离主机聚合

您可以创建一个仅适用于特定项目的主机聚合。只有您分配给主机聚合的项目才能在主机聚合中启动实例。

注意

项目隔离使用放置服务来过滤各个项目的主机聚合。此过程取代了 AggregateMultiTenancyIsolation 过滤器的功能。因此,您不需要使用 AggregateMultiTenancyIsolation 过滤器。

流程

  1. 打开 Compute 环境文件。
  2. 要在项目隔离主机聚合上调度项目实例,请在 Compute 环境文件中将 NovaSchedulerLimitTenantsToPlacementAggregate 参数设置为 True
  3. 可选:要确保只有分配给主机聚合的项目才能在云中创建实例,请将 NovaSchedulerPlacementAggregateRequiredForTenants 参数设置为 True

    注意

    NovaSchedulerPlacementAggregateRequiredForTenants 默认为 False。当此参数为 False 时,没有分配给主机聚合的项目可以在任何主机聚合上创建实例。

  4. 保存对 Compute 环境文件的更新。
  5. 使用其他环境文件将计算环境文件添加到堆栈中,并部署 overcloud:

    (undercloud)$ openstack overcloud deploy --templates \
      -e [your environment files] \
      -e /home/stack/templates/<compute_environment_file>.yaml \
  6. 创建主机聚合。
  7. 检索项目 ID 列表:

    (overcloud)# openstack project list
  8. 使用 filter_tenant_id<suffix > 元数据键将项目分配给主机聚合:

    (overcloud)# openstack aggregate set \
     --property filter_tenant_id<ID0>=<project_id0> \
     --property filter_tenant_id<ID1>=<project_id1> \
     ...
     --property filter_tenant_id<IDn>=<project_idn> \
     <aggregate_name>
    • <ID0>, <ID1>,以及直到 <IDn> 的所有 ID 替换为您要创建的每个项目过滤器的唯一值。
    • 使用您需要分配给主机聚合的每个项目 ID 替换 <project_id0>, <project_id1>, 以及直到 <project_idn> 的所有项目 ID。
    • <aggregate_name > 替换为项目隔离主机聚合的名称。

      例如,使用以下语法将项目 78f1、 9d3taa29 分配给主机聚合 project-isolated-aggregate

      (overcloud)# openstack aggregate set \
       --property filter_tenant_id0=78f1 \
       --property filter_tenant_id1=9d3t \
       --property filter_tenant_id2=aa29 \
       project-isolated-aggregate
      提示

      您可以通过从 filter_tenant_id metadata 键中省略后缀来创建仅适用于单个项目的主机聚合:

      (overcloud)# openstack aggregate set \
       --property filter_tenant_id=78f1 \
       single-project-isolated-aggregate

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.