7.3. 可组合的服务
7.3.1. 指南和限制
请注意,以下可组合节点架构的指南和限制。
对于不由 Pacemaker 管理的服务:
- 您可以将服务分配给独立自定义角色。
- 您可以在初始部署后创建额外的自定义角色,并将它们部署以扩展现有服务。
对于由 Pacemaker 管理的服务:
- 您可以将 Pacemaker 管理的服务分配给独立的自定义角色。
-
Pacemaker 有 16 个节点的限制。如果将 Pacemaker 服务(
OS::TripleO::Services::Pacemaker
)分配给 16 个节点,则后续任何节点都必须使用 Pacemaker 远程服务(OS::TripleO::Services::PacemakerRemote
)。您不能在同一角色中使用 Pacemaker 服务和 Pacemaker 远程服务。 -
在不含 Pacemaker 管理的服务的角色上,不要将 Pacemaker 服务(
OS::TripleO::Services::Pacemaker
)包含。 -
您无法扩展或缩减包含
OS::TripleO::Services::Pacemaker
或OS::TripleO::Services::PacemakerRemote
服务的自定义角色。
常规限制:
- 您不能在主版本升级过程中更改自定义角色和可组合服务。
- 在部署 Overcloud 后,您无法修改任何角色的服务列表。在 Overcloud 部署后修改服务列表可能会导致部署错误并离开节点上的孤立服务。
7.3.2. 检查可组合的服务架构
核心 heat 模板集合包含两组可组合服务模板:
-
Puppet/服务
包含用于配置可组合服务的基础模板。 -
Docker/服务
包含关键 OpenStack 平台服务的容器化模板。这些模板作为对某些基础模板的增强并引用回基础模板。
每个模板都包含一个标识其用途的描述。例如,ntp.yaml
服务模板包含以下描述:
description: > NTP service deployment using puppet, this YAML file creates the interface between the HOT template and the puppet manifest that actually installs and configure NTP.
这些服务模板注册为特定于 RHOSP 部署的资源。这意味着,您可以使用 overcloud-resource-registry-puppet.j2.yaml
文件中定义的唯一 heat 资源命名空间调用每个资源。所有服务都将 OS::TripleO::Services
命名空间用作其资源类型。
有些资源直接使用基本可组合服务模板:
resource_registry: ... OS::TripleO::Services::Ntp: puppet/services/time/ntp.yaml ...
但是核心服务需要容器,如使用容器化服务模板。例如,keystone
容器化服务使用以下方法:
resource_registry: ... OS::TripleO::Services::Keystone: docker/services/keystone.yaml ...
这些容器化模板通常引用到基础模板,以包括 Puppet 配置。例如,docker/services/keystone.yaml
模板将基本模板的输出存储在 KeystoneBase
参数中:
KeystoneBase: type: ../../puppet/services/keystone.yaml
然后,容器化模板可以包含基础模板中的功能和数据。
overcloud.j2.yaml
heat 模板包含 Jinja2 的代码部分,用于在 roles_data.yaml
文件中为每个自定义角色定义一个服务列表:
{{role.name}}Services: description: A list of service resources (configured in the Heat resource_registry) which represent nested stacks for each service that should get installed on the {{role.name}} role. type: comma_delimited_list default: {{role.ServicesDefault|default([])}}
对于默认角色,这将创建以下服务列表参数: ControllerServices
、ComputeServices
、BlockStorageServices
、ObjectStorageServices
、CephStorageServices 和 CephStorageServices
。
您可以在 roles_data.yaml
文件中为每个自定义角色定义默认服务。例如,默认的 Controller 角色包含以下内容:
- name: Controller CountDefault: 1 ServicesDefault: - OS::TripleO::Services::CACerts - OS::TripleO::Services::CephMon - OS::TripleO::Services::CephExternal - OS::TripleO::Services::CephRgw - OS::TripleO::Services::CinderApi - OS::TripleO::Services::CinderBackup - OS::TripleO::Services::CinderScheduler - OS::TripleO::Services::CinderVolume - OS::TripleO::Services::Core - OS::TripleO::Services::Kernel - OS::TripleO::Services::Keystone - OS::TripleO::Services::GlanceApi - OS::TripleO::Services::GlanceRegistry ...
这些服务随后被定义为 ControllerServices
参数的默认列表。
您还可以使用环境文件覆盖服务参数的默认列表。例如,您可以在环境文件中将 ControllerServices
定义为 parameter_default
,以覆盖 roles_data.yaml
文件中的服务列表。
7.3.3. 从角色添加和删除服务
添加或删除服务的基本方法涉及为节点角色创建默认服务列表的副本,然后添加或删除服务。例如,您可能会从 Controller 节点中删除 OpenStack Orchestration (heat
)。在这种情况下,创建 默认角色
目录的自定义副本:
$ cp -r /usr/share/openstack-tripleo-heat-templates/roles ~/.
编辑 ~/roles/Controller.yaml
文件并修改 ServicesDefault
参数的服务列表。滚动到 OpenStack 编排服务并移除它们:
- OS::TripleO::Services::GlanceApi - OS::TripleO::Services::GlanceRegistry - OS::TripleO::Services::HeatApi # Remove this service - OS::TripleO::Services::HeatApiCfn # Remove this service - OS::TripleO::Services::HeatApiCloudwatch # Remove this service - OS::TripleO::Services::HeatEngine # Remove this service - OS::TripleO::Services::MySQL - OS::TripleO::Services::NeutronDhcpAgent
生成新的 roles_data
文件。例如:
$ openstack overcloud roles generate -o roles_data-no_heat.yaml \ --roles-path ~/roles \ Controller Compute Networker
在运行 openstack overcloud deploy
命令时包含这个新的 roles_data
文件。例如:
$ openstack overcloud deploy --templates -r ~/templates/roles_data-no_heat.yaml
这会部署一个没有安装在 Controller 节点上的 OpenStack Orchestration 服务的 Overcloud。
您还可以使用自定义环境文件在 roles_data
文件中禁用服务。重定向服务,以禁用 OS::Heat::None
资源。例如:
resource_registry: OS::TripleO::Services::HeatApi: OS::Heat::None OS::TripleO::Services::HeatApiCfn: OS::Heat::None OS::TripleO::Services::HeatApiCloudwatch: OS::Heat::None OS::TripleO::Services::HeatEngine: OS::Heat::None
7.3.4. 启用 Disabled Services
一些服务会被默认禁用。这些服务在 overcloud-resource-registry-puppet.j2.yaml
文件中注册为 null 操作(OS::Heat::None
)。例如,块存储备份服务(cinder-backup
)被禁用:
OS::TripleO::Services::CinderBackup: OS::Heat::None
若要启用此服务,可包含一个环境文件,用于将资源链接到 puppet/services
目录中对应的 Heat 模板。有些服务在 环境
目录中具有预定义的环境文件。例如,块存储备份服务使用 environments/cinder-backup.yaml
文件,该文件包含以下内容:
resource_registry: OS::TripleO::Services::CinderBackup: ../docker/services/pacemaker/cinder-backup.yaml ...
这会覆盖默认的 null 操作资源并启用该服务。在运行 openstack overcloud deploy
命令时包括此环境文件。
$ openstack overcloud deploy --templates -e /usr/share/openstack-tripleo-heat-templates/environments/cinder-backup.yaml
有关如何启用禁用的服务的另一个示例,请参阅 OpenStack 数据处理 指南中的 安装。本节介绍如何在 overcloud 上启用 OpenStack 数据处理服务(sahara
)。
7.3.5. 使用 No Services 创建通用节点
Red Hat OpenStack Platform 提供了在不配置任何 OpenStack 服务的情况下创建通用 Red Hat Enterprise Linux 7 节点的功能。当您需要托管 Red Hat OpenStack Platform 核心环境外的软件时,这非常有用。例如,OpenStack 平台提供与 Kibana 和 Sensu 等监控工具的集成(请参阅 监控工具配置指南)。虽然红帽不提供对监控工具本身的支持,但 director 可以创建通用 Red Hat Enterprise Linux 7 节点来托管这些工具。
通用节点仍然使用基本 overcloud-full
镜像,而不是基本 Red Hat Enterprise Linux 7 镜像。这意味着该节点已安装一些 Red Hat OpenStack Platform 软件,但没有启用或配置。
创建通用节点需要没有 ServicesDefault
列表的新角色:
- name: Generic
在您的自定义 roles_data
文件中包括角色(roles_data_with_generic.yaml
)。确保保留现有的 Controller
和 Compute
角色。
您还可以包括一个环境文件(generic-node-params.yaml
)来指定所需通用 Red Hat Enterprise Linux 7 节点的数量以及要置备的节点时的类别。例如:
parameter_defaults: OvercloudGenericFlavor: baremetal GenericCount: 1
在运行 openstack overcloud deploy
命令时,同时包含角色文件和环境文件。例如:
$ openstack overcloud deploy --templates -r ~/templates/roles_data_with_generic.yaml -e ~/templates/generic-node-params.yaml
这会部署一个具有一个 Controller 节点、一个 Compute 节点和一个通用 Red Hat Enterprise Linux 7 节点的三节点环境。