4.3. 配置多个云
您可以配置多个 Red Hat OpenStack Platform (RHOSP)云以单一 Service Telemetry Framework (STF)实例为目标。当您配置多个云时,每个云都必须在其自己唯一的消息总线主题上发送指标和事件。在 STF 部署中,智能网关实例侦听这些主题,以将信息保存到通用数据存储中。在数据存储域中由智能网关存储的数据通过利用每个智能网关创建的元数据进行过滤。
图 4.1. 两个 RHOSP 云连接到 STF

要为多个云场景配置 RHOSP overcloud,请完成以下任务:
- 规划您要为每个云使用的 AMQP 地址前缀。更多信息请参阅 第 4.3.1 节 “规划 AMQP 地址前缀”。
- 为每个云部署指标和事件使用者智能网关,以侦听对应的地址前缀。更多信息请参阅 第 4.3.2 节 “部署智能网关”。
- 使用唯一的域名配置每个云。更多信息请参阅 第 4.3.4 节 “设置唯一的云域”。
- 为 STF 创建基础配置。更多信息请参阅 第 4.1.3 节 “为 STF 创建基本配置”。
- 配置每个云,使其指标和事件发送到正确地址上的 STF。更多信息请参阅 第 4.3.5 节 “为多个云创建 Red Hat OpenStack Platform 环境文件”。
4.3.1. 规划 AMQP 地址前缀
默认情况下,Red Hat OpenStack Platform (RHOSP)节点通过两个数据收集器接收数据: collectd 和 Ceilometer。collectd-sensubility 插件需要唯一的地址。这些组件将遥测数据或通知发送到对应的 AMQP 地址,如 collectd/telemetry。STF 智能网关侦听这些用于数据的 AMQP 地址。要支持多个云并识别哪个云生成监控数据,请配置每个云以将数据发送到唯一的地址。将云标识符前缀添加到地址的第二部分。以下列表显示了一些地址和标识符示例:
-
collectd/cloud1-telemetry -
collectd/cloud1-notify -
sensubility/cloud1-telemetry -
anycast/ceilometer/cloud1-metering.sample -
anycast/ceilometer/cloud1-event.sample -
collectd/cloud2-telemetry -
collectd/cloud2-notify -
sensubility/cloud2-telemetry -
anycast/ceilometer/cloud2-metering.sample -
anycast/ceilometer/cloud2-event.sample -
collectd/us-east-1-telemetry -
collectd/us-west-3-telemetry
4.3.2. 部署智能网关
您必须为每个云的每个数据收集类型部署智能网关;一个用于 collectd 指标,一个用于 collectd 指标,一个用于 Ceilometer 指标,一个用于 Ceilometer 事件,另一个用于 collectd-sensubility 指标。将每个智能网关配置为侦听您为对应云定义的 AMQP 地址。要定义智能网关,请在 ServiceTelemetry 清单中配置 clouds 参数。
当您首次部署 STF 时,会创建智能网关清单,以定义单个云的初始智能网关。当您为多个云支持部署智能网关时,您可以为处理指标和每个云的事件数据的每个数据收集类型部署多个智能网关。初始智能网关在 cloud1 中定义,包括以下订阅地址:
| collector | type | 默认订阅地址 |
| collectd | metrics | collectd/telemetry |
| collectd | Events | collectd/notify |
| collectd-sensubility | metrics | sensubility/telemetry |
| ilo | metrics | anycast/ceilometer/metering.sample |
| ilo | Events | anycast/ceilometer/event.sample |
前提条件
- 您已确定了云命名方案。有关确定命名方案的详情请参考 第 4.3.1 节 “规划 AMQP 地址前缀”。
-
您已创建了 clouds 对象列表。有关为
clouds参数创建内容的更多信息,请参阅 “clouds 参数”一节。
流程
- 登录到 Red Hat OpenShift Container Platform。
进入
service-telemetry命名空间:$ oc project service-telemetry
编辑默认ServiceTelemetry 对象,并使用您的配置添加clouds参数:警告较长的节点名称可能会超过最大 pod 名称 63 个字符。确保
ServiceTelemetry名称default和clouds.name的组合没有超过 19 个字符。云名称不能包含任何特殊字符,如-。将云名称限制为字母数字(a-z、0-9)。主题地址没有字符限制,可以与
clouds.name值不同。$ oc edit stf default
apiVersion: infra.watch/v1beta1 kind: ServiceTelemetry metadata: ... spec: ... clouds: - name: cloud1 events: collectors: - collectorType: collectd subscriptionAddress: collectd/cloud1-notify - collectorType: ceilometer subscriptionAddress: anycast/ceilometer/cloud1-event.sample metrics: collectors: - collectorType: collectd subscriptionAddress: collectd/cloud1-telemetry - collectorType: sensubility subscriptionAddress: sensubility/cloud1-telemetry - collectorType: ceilometer subscriptionAddress: anycast/ceilometer/cloud1-metering.sample - name: cloud2 events: ...- 保存 ServiceTelemetry 对象。
验证每个智能网关是否正在运行。这可能需要几分钟,具体取决于智能网关的数量:
$ oc get po -l app=smart-gateway NAME READY STATUS RESTARTS AGE default-cloud1-ceil-event-smartgateway-6cfb65478c-g5q82 2/2 Running 0 13h default-cloud1-ceil-meter-smartgateway-58f885c76d-xmxwn 2/2 Running 0 13h default-cloud1-coll-event-smartgateway-58fbbd4485-rl9bd 2/2 Running 0 13h default-cloud1-coll-meter-smartgateway-7c6fc495c4-jn728 2/2 Running 0 13h default-cloud1-sens-meter-smartgateway-8h4tc445a2-mm683 2/2 Running 0 13h
4.3.3. 删除默认智能网关
为多个云配置 Service Telemetry Framework (STF)后,如果不再使用它们,您可以删除默认的智能网关。Service Telemetry Operator 可以删除创建的 SmartGateway 对象,但不再列在 ServiceTelemetry 云 对象列表中。要启用删除由 clouds 参数定义的 SmartGateway 对象,您必须在 ServiceTelemetry 清单中将 cloudsRemoveOnMissing 参数设置为 true。
如果您不想部署任何智能网关,请使用 clouds: [] 参数定义空云列表。
cloudsRemoveOnMissing 参数默认为禁用。如果启用了 cloudsRemoveOnMissing 参数,您可以在当前命名空间中删除所有手动创建的 SmartGateway 对象,而无需恢复。
流程
-
使用您要管理 Service Telemetry Operator 的云对象列表定义您的
clouds参数。更多信息请参阅 “clouds 参数”一节。 编辑 ServiceTelemetry 对象并添加
cloudsRemoveOnMissing参数:apiVersion: infra.watch/v1beta1 kind: ServiceTelemetry metadata: ... spec: ... cloudsRemoveOnMissing: true clouds: ...- 保存修改。
验证 Operator 是否删除了 Smart Gateways。Operator 协调更改时可能需要几分钟时间:
$ oc get smartgateways
4.3.4. 设置唯一的云域
为确保从 Red Hat OpenStack Platform (RHOSP)到 Service Telemetry Framework (STF)的 AMQ Interconnect 路由器连接是唯一的,且不会冲突,请配置 CloudDomain 参数。
确保您不会在现有部署中更改主机或域名。只有新的云部署支持主机和域名配置。
流程
-
创建新的环境文件,如 hostname
.yaml。 在环境文件中设置
CloudDomain参数,如下例所示:hostnames.yaml
parameter_defaults: CloudDomain: newyork-west-04 CephStorageHostnameFormat: 'ceph-%index%' ObjectStorageHostnameFormat: 'swift-%index%' ComputeHostnameFormat: 'compute-%index%'- 将新的环境文件添加到您的部署中。
其他资源
- 第 4.3.5 节 “为多个云创建 Red Hat OpenStack Platform 环境文件”
- Overcloud 参数指南中的 核心 Overcloud 参数
4.3.5. 为多个云创建 Red Hat OpenStack Platform 环境文件
要根据原始云标记流量,您必须使用特定于云的实例名称创建配置。创建一个 stf-connectors.yaml 文件,并调整 CeilometerQdrEventsConfig、CeilometerdrMetricsConfig 和 CollectdAmqpInstances 的值,以匹配 AMQP 地址前缀方案。
如果启用了容器健康和 API 状态监控,还必须修改 CollectdSensubilityResultsChannel 参数。更多信息请参阅 第 5.9 节 “Red Hat OpenStack Platform API 状态和容器化服务健康状况”。
先决条件
- 您已从 STF 部署的 AMQ Interconnect 中检索 CA 证书。更多信息请参阅 第 4.1.1 节 “从 Service Telemetry Framework 获取用于 overcloud 配置的 CA 证书”。
- 您已创建了 clouds 对象列表。有关为 clouds 参数创建内容的更多信息,请参阅 clouds 配置参数。
- 您已检索了 AMQ Interconnect 路由地址。更多信息请参阅 第 4.1.2 节 “检索 AMQ Interconnect 路由地址”。
- 您已为 STF 创建了基础配置。更多信息请参阅 第 4.1.3 节 “为 STF 创建基本配置”。
- 您已创建了唯一的域名环境文件。更多信息请参阅 第 4.3.4 节 “设置唯一的云域”。
流程
-
以
stack用户身份登录 undercloud 主机。 -
在
/home/stack目录中创建一个名为stf-connectors.yaml的配置文件。 在
stf-connectors.yaml文件中,配置MetricsQdrConnectors地址,以连接到 overcloud 部署上的 AMQ Interconnect。配置CeilometerQdrEventsConfig、CeilometerdrMetricsConfig、CollectdAmqpInstances和CollectdSensubilityResultsChannel主题值,以匹配您想要用于此云部署的 AMQP 地址。stf-connectors.yaml
resource_registry: OS::TripleO::Services::Collectd: /usr/share/openstack-tripleo-heat-templates/deployment/metrics/collectd-container-puppet.yaml parameter_defaults: MetricsQdrConnectors: - host: default-interconnect-5671-service-telemetry.apps.infra.watch port: 443 role: edge verifyHostname: false sslProfile: sslProfile MetricsQdrSSLProfiles: - name: sslProfile caCertFileContent: | -----BEGIN CERTIFICATE----- <snip> -----END CERTIFICATE----- CeilometerQdrEventsConfig: driver: amqp topic: cloud1-event CeilometerQdrMetricsConfig: driver: amqp topic: cloud1-metering CollectdAmqpInstances: cloud1-notify: notify: true format: JSON presettle: false cloud1-telemetry: format: JSON presettle: false CollectdSensubilityResultsChannel: sensubility/cloud1-telemetry-
resource_registry配置直接加载 collectd 服务,因为您没有为多个云部署包含collectd-write-qdr.yaml环境文件。 -
将
host参数替换为您在 第 4.1.2 节 “检索 AMQ Interconnect 路由地址” 中检索的值。 -
将
caCertFileContent参数替换为 第 4.1.1 节 “从 Service Telemetry Framework 获取用于 overcloud 配置的 CA 证书” 中检索的内容。 -
将
MetricsQdrConnectors的主机子参数替换为您在 第 4.1.2 节 “检索 AMQ Interconnect 路由地址” 中检索的值。 -
设置
CeilometerQdrEventsConfig的主题值,以定义 Ceilometer 事件的主题。该值是云的唯一主题限定符,如cloud1-event。 -
设置
CeilometerQdrMetricsConfig.值,以定义 Ceilometer 指标的主题。该值是云的唯一标识符,如topic的主题cloud1-metering。 -
设置
CollectdAmqpInstances子参数,以定义 collectd 事件的主题。部分名称是云的唯一标识符,如cloud1-notify。 -
设置
CollectdAmqpInstances子参数,以定义 collectd 指标的主题。部分名称是云的唯一标识符,如cloud1-telemetry。 设置
CollectdSensubilityResultsChannel,以定义 collectd-sensubility 事件的主题。该值是云的唯一主题标识符,如sensubility/cloud1-telemetry。注意当您为 collectd 和 Ceilometer 定义主题时,您提供的值将转换为智能网关客户端用于侦听消息的完整主题。
Ceilometer 主题值被转换为主题地址
anycast/ceilometer/<TOPIC>.sample,collectd 主题值被转换为主题地址collectd/<TOPIC>。sensubility 的值是完整主题路径,且没有从主题值转换为主题地址。有关
ServiceTelemetry对象中的云配置示例,请参阅 “clouds 参数”一节。
-
-
确保
stf-connectors.yaml文件中的命名约定与 Smart Gateway 配置中的spec.bridge.amqpUrl字段一致。例如,将CeilometerQdrEventsConfig.topic字段配置为cloud1-event的值。 -
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭证文件:$ source stackrc
在
openstack overcloud deployment命令中包含stf-connectors.yaml文件以及唯一域名环境文件hostname.yaml,以及其他与您环境相关的环境文件:警告如果您使用带有自定义
CollectdAmqpInstances参数的collectd-write-qdr.yaml文件,数据会发布到自定义和默认主题。在多个云环境中,stf-connectors.yaml文件中的resource_registry参数的配置会加载 collectd 服务。(undercloud)$ openstack overcloud deploy --templates \ -e [your environment files] \ -e /usr/share/openstack-tripleo-heat-templates/environments/metrics/ceilometer-write-qdr.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/metrics/qdr-edge-only.yaml \ -e /home/stack/hostnames.yaml \ -e /home/stack/enable-stf.yaml \ -e /home/stack/stf-connectors.yaml
- 部署 Red Hat OpenStack Platform overcloud。
4.3.5.1. 基于 Ansible 的 Service Telemetry Framework 部署
这个功能的内容在此发行版本中作为 文档预览 提供,因此红帽不会完全验证。仅用于测试,不要在生产环境中使用。
从 Red Hat OpenStack Platform 17.0 开始,您可以预览使用 Ansible 而不是 Puppet 来部署 Service Telemetry Framework (STF)组件。Ansible 的使用有以下优点:
- 将配置整合到单个特定于服务的 THT 变量下(MetricsQdrVars 和 CollectdVars)
- 将 QDR 模式从 mesh-mode 切换到 edge-only 的能力
- 部署堆栈中使用的较少技术,从而简化调试过程
要使用基于 Ansible 的部署,请替换 stf-connectors.yaml 文件的 resource_registry 部分中的 "puppet" 一词:
OS::TripleO::Services::Collectd: /usr/share/openstack-tripleo-heat-templates/deployment/metrics/collectd-container-ansible.yaml
OS::TripleO::Services::MetricsQdr: /usr/share/openstack-tripleo-heat-templates/deployment/metrics/qdr-container-ansible.yaml要设置配置,请使用特定于服务的 THT 变量,如下例所示:
parameter_defaults:
MetricsQdrVars:
tripleo_metrics_qdr_deployment_mode: edge-only
CollectdVars:
tripleo_collectd_amqp_host: stf.mycluster.example.com支持的配置参数的完整列表可在上面引用的部署文件中找到。https://github.com/openstack/tripleo-heat-templates/blob/stable/wallaby/deployment/metrics/qdr-container-ansible.yaml#L172
其他资源
- 有关如何验证部署的详情,请参考 第 4.1.6 节 “验证客户端安装”。
4.3.6. 从多个云查询指标数据
Prometheus 中存储的数据根据从中提取的智能网关具有 服务 标签。您可以使用此标签从特定云查询数据。
要查询特定云的数据,请使用与 service 标签相关的匹配的 Prometheus promql 查询 ; 例如: collectd_uptime{service="default-cloud1-coll-meter"}。