搜索

7.3. 可组合的服务

download PDF

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::PacemakerOS::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([])}}

对于默认角色,这将创建以下服务列表参数: ControllerServicesComputeServicesBlockStorageServicesObjectStorageServices、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)。确保保留现有的 ControllerCompute 角色。

您还可以包括一个环境文件(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 节点的三节点环境。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.