7.6. 创建和管理主机聚合
作为云管理员,您可以将计算部署分区为逻辑组,以满足性能或管理需要。Red Hat OpenStack Platform (RHOSP)为分区逻辑组提供以下机制:
- 主机聚合
主机聚合是根据硬件或性能特征等属性将 Compute 节点分组到逻辑单元中。您可以将 Compute 节点分配到一个或多个主机聚合。
您可以通过在主机聚合上设置元数据,然后将类别和镜像映射到主机聚合,然后将类别额外规格或镜像元数据属性匹配到主机聚合元数据。当启用所需的过滤器时,计算调度程序可以使用此元数据来调度实例。您在主机聚合中指定的元数据将该主机的使用限制为其类别或镜像中指定的相同元数据的任何实例。
您可以通过在主机聚合元数据中设置
xxx_weight_multiplier
配置选项,为每个主机聚合配置权重倍数。您可以使用主机聚合来处理负载平衡、强制实施物理隔离或冗余、具有通用属性的组服务器或单独的硬件类别。
在创建主机聚合时,您可以指定区域名称。此名称呈现给云用户,作为他们可以选择的可用区。
- 可用区
可用域是主机聚合的云用户视图。云用户无法在可用区中看到 Compute 节点,或者查看可用区的元数据。云用户只能看到可用区的名称。
您可以将每个 Compute 节点分配到一个可用区。您可以配置一个默认可用区,在云用户没有指定区时调度实例。您可以指示云用户使用具有特定功能的可用区。
7.6.1. 启用在主机聚合上的调度
要将实例调度到具有特定属性的主机聚合,请更新计算调度程序的配置,以启用根据主机聚合元数据进行过滤。
流程
- 打开 Compute 环境文件。
在
NovaSchedulerEnabledFilters
参数中添加以下值(如果它们尚不存在):AggregateInstanceExtraSpecsFilter
: 添加此值,以通过与类别额外规格匹配的主机聚合元数据过滤 Compute 节点。注意要使此过滤器按预期执行,您需要限制类型额外规格的范围,使用
aggregate_instance_extra_specs:
命名空间作为extra_specs
键的前缀。AggregateImagePropertiesIsolation
:添加此值,以通过与镜像元数据属性匹配的主机聚合元数据过滤 Compute 节点。注意要使用镜像元数据属性过滤主机聚合元数据,主机聚合元数据键必须与有效的镜像元数据属性匹配。有关有效镜像元数据属性的详情,请参考镜像 配置参数。
AvailabilityZoneFilter
: 在启动实例时添加此值来根据可用区进行过滤。注意您可以使用放置服务来处理可用性区域请求,而不使用
AvailabilityZoneFilter
计算调度程序服务过滤器。如需更多信息,请参阅使用 放置服务过滤可用区。
- 保存对 Compute 环境文件的更新。
使用其他环境文件将计算环境文件添加到堆栈中,并部署 overcloud:
(undercloud)$ openstack overcloud deploy --templates \ -e [your environment files] \ -e /home/stack/templates/<compute_environment_file>.yaml
7.6.2. 创建主机聚合
作为云管理员,您可以根据需要创建任意数量的主机聚合。
流程
要创建主机聚合,请输入以下命令:
(overcloud)# openstack aggregate create <aggregate_name>
将
<aggregate_name>
替换为您要分配给主机聚合的名称。在主机聚合中添加元数据:
(overcloud)# openstack aggregate set \ --property <key=value> \ --property <key=value> \ <aggregate_name>
-
将
<key=value>
替换为元数据键值对。如果您使用AggregateInstanceExtraSpecsFilter
过滤器,则键可以是任意字符串,如ssd=true
。如果使用AggregateImagePropertiesIsolation
过滤器,则密钥必须与有效的镜像元数据属性匹配。有关有效镜像元数据属性的更多信息,请参阅镜像 配置参数。 -
将
<aggregate_name
> 替换为主机聚合的名称。
-
将
将 Compute 节点添加到主机聚合中:
(overcloud)# openstack aggregate add host \ <aggregate_name> \ <host_name>
-
将
<aggregate_name
> 替换为要向其添加 Compute 节点的主机聚合的名称。 -
将
<host_name>
替换为要添加到主机聚合中的 Compute 节点的名称。
-
将
为主机聚合创建类别或镜像:
创建类别:
(overcloud)$ openstack flavor create \ --ram <size_mb> \ --disk <size_gb> \ --vcpus <no_reserved_vcpus> \ host-agg-flavor
创建镜像:
(overcloud)$ openstack image create host-agg-image
在类别或镜像上设置与主机聚合上的键值对匹配的一个或多个键值对。
要在类别上设置键值对,请使用范围
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. 创建可用区
作为云管理员,您可以创建一个可用性区域,在云用户创建实例时可以选择该可用区。
流程
要创建可用区,您可以创建一个新的可用区主机聚合,或者将现有主机聚合一个可用区:
要创建新可用区主机聚合,请输入以下命令:
(overcloud)# openstack aggregate create \ --zone <availability_zone> \ <aggregate_name>
-
将
<availability_zone>
替换为您要分配给可用区的名称。 -
将
<aggregate_name>
替换为您要分配给主机聚合的名称。
-
将
要使现有主机聚合成为可用区,请输入以下命令:
(overcloud)# openstack aggregate set --zone <availability_zone> \ <aggregate_name>
-
将
<availability_zone>
替换为您要分配给可用区的名称。 -
将
<aggregate_name
> 替换为主机聚合的名称。
-
将
可选:在可用区中添加元数据:
(overcloud)# openstack aggregate set --property <key=value> \ <aggregate_name>
-
将
<key=value>
替换为您的原始键值对。您可以根据需要添加任意数量的键值属性。 -
将
<aggregate_name>
替换为可用区主机聚合的名称。
-
将
将 Compute 节点添加到可用区主机聚合:
(overcloud)# openstack aggregate add host <aggregate_name> \ <host_name>
-
将
<aggregate_name>
替换为可用区主机聚合的名称,以将 Compute 节点添加到其中。 -
将
<host_name>
替换为添加到可用区的 Compute 节点的名称。
-
将
7.6.4. 删除主机聚合
要删除主机聚合,您首先从主机聚合中删除所有 Compute 节点。
流程
要查看分配给主机聚合的所有 Compute 节点的列表,请输入以下命令:
(overcloud)# openstack aggregate show <aggregate_name>
要从主机聚合中删除所有分配的 Compute 节点,请为每个 Compute 节点输入以下命令:
(overcloud)# openstack aggregate remove host <aggregate_name> \ <host_name>
-
将
<aggregate_name
> 替换为要从中删除 Compute 节点的主机聚合的名称。 -
将
<host_name
> 替换为要从主机聚合中删除的 Compute 节点的名称。
-
将
从主机聚合中删除所有 Compute 节点后,请输入以下命令删除主机聚合:
(overcloud)# openstack aggregate delete <aggregate_name>
7.6.5. 创建项目隔离主机聚合
您可以创建一个仅适用于特定项目的主机聚合。只有您分配给主机聚合的项目才能在主机聚合中启动实例。
项目隔离使用放置服务来过滤各个项目的主机聚合。此过程取代了 AggregateMultiTenancyIsolation
过滤器的功能。因此,您不需要使用 AggregateMultiTenancyIsolation
过滤器。
流程
- 打开 Compute 环境文件。
-
要在项目隔离主机聚合上调度项目实例,请在 Compute 环境文件中将
NovaSchedulerLimitTenantsToPlacementAggregate
参数设置为True
。 可选:要确保只有分配给主机聚合的项目才能在云中创建实例,请将
NovaSchedulerPlacementAggregateRequiredForTenants
参数设置为True
。注意NovaSchedulerPlacementAggregateRequiredForTenants
默认为False
。当此参数为False
时,没有分配给主机聚合的项目可以在任何主机聚合上创建实例。- 保存对 Compute 环境文件的更新。
使用其他环境文件将计算环境文件添加到堆栈中,并部署 overcloud:
(undercloud)$ openstack overcloud deploy --templates \ -e [your environment files] \ -e /home/stack/templates/<compute_environment_file>.yaml \
- 创建主机聚合。
检索项目 ID 列表:
(overcloud)# openstack project list
使用
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、
9d3t
和aa29
分配给主机聚合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
-
将
其他资源
- 有关创建主机聚合的更多信息,请参阅 创建和管理主机聚合。