7.2. 角色


7.2.1. 检查 roles_data 文件

Overcloud 创建流程利用 roles_data 文件定义其角色。roles_data 文件包含角色的 YAML 格式列表。以下是 roles_data 语法的缩写示例:

- name: Controller
  description: |
    Controller role that has all the controler services loaded and handles
    Database, Messaging and Network functions.
  ServicesDefault:
    - OS::TripleO::Services::AuditD
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::CephClient
    ...
- name: Compute
  description: |
    Basic Compute Node role
  ServicesDefault:
    - OS::TripleO::Services::AuditD
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::CephClient
    ...

核心 Heat 模板集合包含位于 /usr/share/openstack-tripleo-heat-templates/ roles_data.yaml 的默认 roles_data 文件。默认文件定义了以下角色类型:

  • Controller
  • Compute
  • BlockStorage
  • ObjectStorage
  • Ceph 存储.

openstack overcloud deploy 命令在部署期间包含此文件。您可以使用 -r 参数通过自定义 roles_data 文件覆盖此文件。例如:

$ openstack overcloud deploy --templates -r ~/templates/roles_data-custom.yaml

7.2.2. 创建 roles_data 文件

虽然您可以手动创建自定义 roles_data 文件,但也可以使用单个角色模板自动生成文件。director 提供了几个命令来管理角色模板,并自动生成自定义 roles_data 文件。

要列出默认角色模板,请使用 openstack overcloud role list 命令:

$ openstack overcloud role list
BlockStorage
CephStorage
Compute
ComputeHCI
ComputeOvsDpdk
Controller
...

要查看角色的 YAML 定义,请使用 openstack overcloud role show 命令:

$ openstack overcloud role show Compute

要生成自定义 roles_data 文件,请使用 openstack overcloud roles generate 命令将多个预定义角色加入到一个文件中。例如,以下命令将控制器、ComputeNetworker 角色加入到一个文件中:

$ openstack overcloud roles generate -o ~/roles_data.yaml Controller Compute Networker

-o 定义要创建的文件的名称。

这会创建自定义 roles_data 文件。但是,上例使用 ControllerNetworker 角色,这些角色都包含相同的网络代理。这意味着网络服务从控制器扩展到 Networker 角色。overcloud 在 ControllerNetworker 节点之间平衡网络服务的负载。

要使这个 Networker 角色独立,您可以创建自己的自定义 Controller 角色,以及所需的任何其他角色。这样,您可以从自己的自定义角色轻松生成 roles_data 文件。

将目录从核心 Heat 模板集合复制到 stack 用户的主目录:

$ cp -r /usr/share/openstack-tripleo-heat-templates/roles ~/.

在此目录中添加或修改自定义角色文件。将 --roles-path 选项用于上述任何角色子命令中的 --roles-path 选项,以将此目录用作自定义角色的源。例如:

$ openstack overcloud roles generate -o my_roles_data.yaml \
  --roles-path ~/roles \
  Controller Compute Networker

这会从 ~/roles 目录中的各个角色生成单个 my_roles_data.yaml 文件。

注意

默认角色集合还包含 ControllerOpenStack 角色,该角色不包括 网络者消息传递和数据库 角色的服务。您可以将 ControllerOpenStack 与独立 网络器消息传递和数据库 角色结合使用。

7.2.3. 支持的自定义角色

下表描述了 /usr/share/openstack-tripleo-heat-templates/roles 中提供的所有受支持角色。

角色DescriptionFile

BlockStorage

OpenStack Block Storage (cinder)节点.

BlockStorage.yaml

CephAll

完整的单机 Ceph Storage 节点.包括 OSD、MON、对象网关(RGW)、对象操作(MDS)、管理器(MGR)和 RBD 镜像功能。

CephAll.yaml

CephFile

单机横向扩展 Ceph 存储文件角色.包括 OSD 和对象操作(MDS)。

CephFile.yaml

CephObject

独立横向扩展 Ceph 存储对象角色。包括 OSD 和对象网关(RGW)。

CephObject.yaml

CephStorage

Ceph Storage OSD 节点角色.

CephStorage.yaml

ComputeAlt

备用 Compute 节点角色.

ComputeAlt.yaml

ComputeDVR

DVR 启用 Compute 节点角色。

ComputeDVR.yaml

ComputeHCI

带有超融合基础架构的计算节点。包括计算和 Ceph OSD 服务。

ComputeHCI.yaml

ComputeInstanceHA

计算实例 HA 节点角色.搭配 environments/compute-instanceha.yaml 的环境文件 使用。

ComputeInstanceHA.yaml

ComputeLiquidio

带有 Cavium Liquidio 智能 NIC 的计算节点.

ComputeLiquidio.yaml

ComputeOvsDpdkRT

计算 OVS DPDK RealTime 角色。

ComputeOvsDpdkRT.yaml

ComputeOvsDpdk

计算 OVS DPDK 角色。

ComputeOvsDpdk.yaml

ComputePPC64LE

ppc64le 服务器的计算角色。

ComputePPC64LE.yaml

ComputeRealTime

针对实时行为优化的计算角色。使用此角色时,强制使用 overcloud-realtime-compute 镜像,以及特定角色参数 IsolCpusListNovaVcpuPinSet 相应地设置为实时计算节点的硬件。

ComputeRealTime.yaml

ComputeSriovRT

计算 SR-IOV RealTime 角色。

ComputeSriovRT.yaml

ComputeSriov

计算 SR-IOV 角色。

ComputeSriov.yaml

Compute

标准 Compute 节点角色.

Compute.yaml

ControllerAllNovaStandalone

没有包含数据库、消息传递、网络和 OpenStack Compute (nova)控制组件的控制器角色。使用,与数据库、MessagingNetworkerNovacontrol 角色结合使用。

ControllerAllNovaStandalone.yaml

ControllerNoCeph

加载核心 Controller 服务的控制器角色,但没有 Ceph Storage (MON)组件。此角色处理数据库、消息传递和网络功能,但不处理任何 Ceph 存储功能。

ControllerNoCeph.yaml

ControllerNovaStandalone

没有包含 OpenStack Compute (nova)控制组件的控制器角色。使用 和 Novacontrol 角色。

ControllerNovaStandalone.yaml

ControllerOpenstack

没有包含数据库、消息传递和网络组件的控制器角色。使用,与数据库、MessagingNetworker 角色结合使用。

ControllerOpenstack.yaml

ControllerStorageNfs

Controller 角色加载了所有核心服务并使用 Ceph NFS。此角色处理数据库、消息传递和网络功能。

ControllerStorageNfs.yaml

Controller

加载所有核心服务的控制器角色。此角色处理数据库、消息传递和网络功能。

Controller.yaml

数据库

独立数据库角色.使用 Pacemaker 作为 Galera 集群管理的数据库。

database.yaml

HciCephAll

具有超融合基础架构和所有 Ceph Storage 服务的计算节点。包括 OSD、MON、对象网关(RGW)、对象操作(MDS)、管理器(MGR)和 RBD 镜像功能。

HciCephAll.yaml

HciCephFile

具有超融合基础架构和 Ceph Storage 文件服务的计算节点。包括 OSD 和对象操作(MDS)。

HciCephFile.yaml

HciCephMon

具有超融合基础架构和 Ceph Storage 块存储服务的计算节点。包括 OSD、MON 和 Manager。

HciCephMon.yaml

HciCephObject

具有超融合基础架构和 Ceph Storage 对象存储服务的计算节点。包括 OSD 和对象网关(RGW)。

HciCephObject.yaml

IronicConductor

ironic Conductor 节点角色。

IronicConductor.yaml

消息传递

独立消息传递角色.使用 Pacemaker 管理的 RabbitMQ。

messaging.yaml

Networker

独立网络角色.自行运行 OpenStack 网络(neutron)代理。如果您的部署使用了 ML2/OVN 机制驱动程序,请参阅使用 ML2/OVN 部署自定义角色 中的附加步骤。

Networker.yaml

Novacontrol

独立 nova-control 角色,用来自行运行 OpenStack Compute (nova)控制代理。

novacontrol.yaml

ObjectStorage

Swift 对象存储节点角色.

ObjectStorage.yaml

Telemetry

具有所有指标和警报服务的 Telemetry 角色。

Telemetry.yaml

7.2.4. 检查角色参数

每个角色使用以下参数:

name
(必需) 角色的名称,它是没有空格或特殊字符的纯文本名称。检查所选名称是否不会导致与其他资源冲突。例如,使用 Networker 作为名称,而不是 Network
description
(可选) 角色纯文本描述。
tags

(可选) o 定义角色属性的标签的 YAML 列表。使用此参数将 控制器和 主标签一起定义 主要角色

- name: Controller
  ...
  tags:
    - primary
    - controller
  ...
重要

如果没有标记主要角色,定义的第一个角色将成为主要角色。确保此角色是 Controller 角色。

网络

要在角色上配置的网络 YAML 列表:

  networks:
    - External
    - InternalApi
    - Storage
    - StorageMgmt
    - Tenant

默认网络包括 外部InternalApi存储StorageMgmtTenant,以及管理。

CountDefault
(可选) 定义要为此角色部署的默认节点数量。
HostnameFormatDefault

(可选) 定义角色的默认主机名格式。默认命名规则使用以下格式:

[STACK NAME]-[ROLE NAME]-[NODE ID]

例如,默认的 Controller 节点被命名:

overcloud-controller-0
overcloud-controller-1
overcloud-controller-2
...
disable_constraints
(可选) 定义在使用 director 部署时是否禁用 OpenStack Compute (nova)和 OpenStack Image Storage (glance)约束。使用预置备节点部署 overcloud 时使用。有关更多信息,请参阅 Director 安装和使用 指南中的 "使用预置备节点配置基本 Overcloud "。
disable_upgrade_deployment
(可选) 定义是否为特定角色禁用升级。这提供了一种升级角色中各个节点的方法,并确保服务的可用性。例如,Compute 和 Swift Storage 角色使用此参数。
update_serial

(可选) 定义在 OpenStack 更新选项中同时要更新的节点数量。在默认的 roles_data.yaml 文件中:

  • 默认为 Controller、Object Storage 和 Ceph Storage 节点的 1
  • Compute 和 Block Storage 节点的默认值为 25

如果从自定义角色省略此参数,则默认为 1

ServicesDefault
(可选) 定义要在节点上包括的服务的默认列表。如需更多信息,请参阅 第 7.3.2 节 “检查可组合的服务架构”

这些参数提供了创建新角色以及定义要包含哪些服务的方法。

openstack overcloud deploy 命令将参数从 roles_data 文件集成到一些基于 Jinja2 的模板。例如,在某些点上,overcloud.j2.yaml Heat 模板会迭代 roles_data.yaml 中的角色列表,并创建特定于各个角色的参数和资源。

overcloud.j2.yaml Heat 模板中每个角色的资源定义显示为以下代码片段:

  {{role.name}}:
    type: OS::Heat::ResourceGroup
    depends_on: Networks
    properties:
      count: {get_param: {{role.name}}Count}
      removal_policies: {get_param: {{role.name}}RemovalPolicies}
      resource_def:
        type: OS::TripleO::{{role.name}}
        properties:
          CloudDomain: {get_param: CloudDomain}
          ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
          EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
...

此片段显示基于 Jinja2 的模板如何融合 {{role.name}} 变量,将每个角色的名称定义为 OS::Heat::ResourceGroup 资源。反过来,使用 roles_data 文件中的每个 name 参数来命名每个对应的 OS::Heat::ResourceGroup 资源。

7.2.5. 创建新角色

在本例中,旨在创建一个新的 Horizon 角色,以仅托管 OpenStack 仪表板(horizon)。在这种情况下,您可以创建一个自定义 角色 目录,其中包含新角色信息。

创建 默认角色 目录的自定义副本:

$ cp -r /usr/share/openstack-tripleo-heat-templates/roles ~/.

创建一个名为 ~/roles/Horizon.yaml 的新文件,再创建一个名为 base 和 core OpenStack Dashboard 服务的新 Horizon 角色。例如:

- name: Horizon
  CountDefault: 1
  HostnameFormatDefault: '%stackname%-horizon-%index%'
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Fluentd
    - OS::TripleO::Services::AuditD
    - OS::TripleO::Services::Collectd
    - OS::TripleO::Services::MySQLClient
    - OS::TripleO::Services::Apache
    - OS::TripleO::Services::Horizon

最好将 CountDefault 设置为 1,以便默认的 Overcloud 始终包含 Horizon 节点。

如果在现有 overcloud 中扩展服务,请将现有服务保留在 Controller 角色上。如果创建新 overcloud,并且希望 OpenStack 控制面板保留在独立角色中,请从 Controller 角色定义中删除 OpenStack 控制面板组件:

- name: Controller
  CountDefault: 1
  ServicesDefault:
    ...
    - OS::TripleO::Services::GnocchiMetricd
    - OS::TripleO::Services::GnocchiStatsd
    - OS::TripleO::Services::HAproxy
    - OS::TripleO::Services::HeatApi
    - OS::TripleO::Services::HeatApiCfn
    - OS::TripleO::Services::HeatApiCloudwatch
    - OS::TripleO::Services::HeatEngine
    # - OS::TripleO::Services::Horizon                # Remove this service
    - OS::TripleO::Services::IronicApi
    - OS::TripleO::Services::IronicConductor
    - OS::TripleO::Services::Iscsid
    - OS::TripleO::Services::Keepalived
    ...

使用角色目录作为源生成新的 roles _data 文件:

$ openstack overcloud roles generate -o roles_data-horizon.yaml \
  --roles-path ~/roles \
  Controller Compute Horizon

您可能需要为此角色定义一个新类别,以便可以标记特定的节点。在本例中,使用以下命令来创建 horizon 类别:

$ openstack flavor create --id auto --ram 6144 --disk 40 --vcpus 4 horizon
$ openstack flavor set --property "cpu_arch"="x86_64" --property "capabilities:boot_option"="local" --property "capabilities:profile"="horizon" horizon
$ openstack flavor set --property resources:VCPU=0 --property resources:MEMORY_MB=0 --property resources:DISK_GB=0 --property resources:CUSTOM_BAREMETAL=1 horizon

使用以下命令将节点标记到新类型中:

$ openstack baremetal node set --property capabilities='profile:horizon,boot_option:local' 58c3d07e-24f2-48a7-bbb6-6843f0e8ee13

使用以下环境文件片段定义 Horizon 节点数和类别:

parameter_defaults:
  OvercloudHorizonFlavor: horizon
  HorizonCount: 1

在运行 openstack overcloud deploy 命令时,包含新的 roles_data 文件和环境文件。例如:

$ openstack overcloud deploy --templates -r ~/templates/roles_data-horizon.yaml -e ~/templates/node-count-flavor.yaml

部署完成后,这会创建一个由一个 Controller 节点、一个 Compute 节点和一个 Networker 节点组成的三节点 Overcloud。要查看 Overcloud 的节点列表,请运行以下命令:

$ openstack server list
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.