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
命令将多个预定义角色加入到一个文件中。例如,以下命令将控制器、Compute
和 Networker
角色加入到一个文件中:
$ openstack overcloud roles generate -o ~/roles_data.yaml Controller Compute Networker
-o
定义要创建的文件的名称。
这会创建自定义 roles_data
文件。但是,上例使用 Controller
和 Networker
角色,这些角色都包含相同的网络代理。这意味着网络服务从控制器扩展到 Networker
角色。overcloud 在
Controller
和 Networker
节点之间平衡网络服务的负载。
要使这个 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
中提供的所有受支持角色。
角色 | Description | File |
---|---|---|
| OpenStack Block Storage (cinder)节点. |
|
| 完整的单机 Ceph Storage 节点.包括 OSD、MON、对象网关(RGW)、对象操作(MDS)、管理器(MGR)和 RBD 镜像功能。 |
|
| 单机横向扩展 Ceph 存储文件角色.包括 OSD 和对象操作(MDS)。 |
|
| 独立横向扩展 Ceph 存储对象角色。包括 OSD 和对象网关(RGW)。 |
|
| Ceph Storage OSD 节点角色. |
|
| 备用 Compute 节点角色. |
|
| DVR 启用 Compute 节点角色。 |
|
| 带有超融合基础架构的计算节点。包括计算和 Ceph OSD 服务。 |
|
|
计算实例 HA 节点角色.搭配 |
|
| 带有 Cavium Liquidio 智能 NIC 的计算节点. |
|
| 计算 OVS DPDK RealTime 角色。 |
|
| 计算 OVS DPDK 角色。 |
|
| ppc64le 服务器的计算角色。 |
|
|
针对实时行为优化的计算角色。使用此角色时,强制使用 |
|
| 计算 SR-IOV RealTime 角色。 |
|
| 计算 SR-IOV 角色。 |
|
| 标准 Compute 节点角色. |
|
|
没有包含数据库、消息传递、网络和 OpenStack Compute (nova)控制组件的控制器角色。使用,与数据库、 |
|
| 加载核心 Controller 服务的控制器角色,但没有 Ceph Storage (MON)组件。此角色处理数据库、消息传递和网络功能,但不处理任何 Ceph 存储功能。 |
|
|
没有包含 OpenStack Compute (nova)控制组件的控制器角色。使用 和 |
|
|
没有包含数据库、消息传递和网络组件的控制器角色。使用,与数据库、 |
|
| Controller 角色加载了所有核心服务并使用 Ceph NFS。此角色处理数据库、消息传递和网络功能。 |
|
| 加载所有核心服务的控制器角色。此角色处理数据库、消息传递和网络功能。 |
|
| 独立数据库角色.使用 Pacemaker 作为 Galera 集群管理的数据库。 |
|
| 具有超融合基础架构和所有 Ceph Storage 服务的计算节点。包括 OSD、MON、对象网关(RGW)、对象操作(MDS)、管理器(MGR)和 RBD 镜像功能。 |
|
| 具有超融合基础架构和 Ceph Storage 文件服务的计算节点。包括 OSD 和对象操作(MDS)。 |
|
| 具有超融合基础架构和 Ceph Storage 块存储服务的计算节点。包括 OSD、MON 和 Manager。 |
|
| 具有超融合基础架构和 Ceph Storage 对象存储服务的计算节点。包括 OSD 和对象网关(RGW)。 |
|
| ironic Conductor 节点角色。 |
|
| 独立消息传递角色.使用 Pacemaker 管理的 RabbitMQ。 |
|
| 独立网络角色.自行运行 OpenStack 网络(neutron)代理。如果您的部署使用了 ML2/OVN 机制驱动程序,请参阅使用 ML2/OVN 部署自定义角色 中的附加步骤。 |
|
|
独立 |
|
| Swift 对象存储节点角色. |
|
| 具有所有指标和警报服务的 Telemetry 角色。 |
|
7.2.4. 检查角色参数
每个角色使用以下参数:
- name
-
(必需) 角色的名称,它是没有空格或特殊字符的纯文本名称。检查所选名称是否不会导致与其他资源冲突。例如,使用
Networker
作为名称,而不是Network
。 - description
- (可选) 角色纯文本描述。
- tags
(可选) o 定义角色属性的标签的 YAML 列表。使用此参数将
控制器和
主标签一起定义主要角色
:- name: Controller ... tags: - primary - controller ...
如果没有标记主要角色,定义的第一个角色将成为主要角色。确保此角色是 Controller 角色。
- 网络
要在角色上配置的网络 YAML 列表:
networks: - External - InternalApi - Storage - StorageMgmt - Tenant
默认网络包括
外部
、InternalApi
、存储
、StorageMgmt
、Tenant
,以及管理。- 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
。-
默认为 Controller、Object Storage 和 Ceph Storage 节点的
- 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