4.3. 配置多个云
您可以配置多个 Red Hat OpenStack Platform (RHOSP)云以单一 Service Telemetry Framework (STF)实例为目标。当您配置多个云时,每个云都必须在其自己唯一的消息总线主题上发送指标和事件。在 STF 部署中,智能网关实例侦听这些主题,以将信息保存到通用数据存储中。在数据存储域中由智能网关存储的数据通过利用每个智能网关创建的元数据进行过滤。
确保您使用唯一的云域配置部署每个云。有关为您的云部署配置域的更多信息,请参阅 第 4.3.4 节 “设置唯一的云域”。
图 4.1. 两个 RHOSP 云连接到 STF
要为多个云场景配置 RHOSP overcloud,请完成以下任务:
- 规划您要为每个云使用的 AMQP 地址前缀。更多信息请参阅 第 4.3.1 节 “规划 AMQP 地址前缀”。
- 为每个云部署指标和事件使用者智能网关,以侦听对应的地址前缀。更多信息请参阅 第 4.3.2 节 “部署智能网关”。
- 使用唯一的域名配置每个云。更多信息请参阅 第 4.3.4 节 “设置唯一的云域”。
- 为 STF 创建基础配置。更多信息请参阅 第 4.1.4 节 “为 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)的遥测可以唯一标识且不冲突,请配置 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
文件,并调整 CeilometerQdrMetricsConfig
和 CollectdAmqpInstances
的值,以匹配 AMQP 地址前缀方案。
如果启用了容器健康和 API 状态监控,还必须修改 CollectdSensubilityResultsChannel
参数。更多信息请参阅 第 6.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.3 节 “检索 AMQ Interconnect 路由地址”。
- 您已为 STF 创建了基础配置。更多信息请参阅 第 4.1.4 节 “为 STF 创建基本配置”。
- 您已创建了唯一的域名环境文件。更多信息请参阅 第 4.3.4 节 “设置唯一的云域”。
流程
-
以
stack
用户身份登录 undercloud 主机。 -
在
/home/stack
目录中创建一个名为stf-connectors.yaml
的配置文件。 在
stf-connectors.yaml
文件中,配置MetricsQdrConnectors
地址,以连接到 overcloud 部署上的 AMQ Interconnect。配置CeilometerQdrMetricsConfig
、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: ExtraConfig: qdr::router_id: %{::hostname}.cloud1 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----- CeilometerQdrMetricsConfig: driver: amqp topic: cloud1-metering CollectdAmqpInstances: cloud1-telemetry: format: JSON presettle: false CollectdSensubilityResultsChannel: sensubility/cloud1-telemetry
-
qdr::router_id
配置是覆盖使用主机的完全限定域名(FQDN)的默认值。在某些情况下,FQDN 可能会导致路由器 ID 长度大于 61 个字符,这会导致 QDR 连接失败。对于带有较短的 FQDN 值的部署,这不是必要条件。 -
resource_registry
配置直接加载 collectd 服务,因为您没有为多个云部署包含collectd-write-qdr.yaml
环境文件。 -
将
host
参数替换为您在 第 4.1.3 节 “检索 AMQ Interconnect 路由地址” 中检索的值。 -
将
caCertFileContent
参数替换为 第 4.1.1 节 “从 Service Telemetry Framework 获取用于 overcloud 配置的 CA 证书” 中检索的内容。 -
将
MetricsQdrConnectors
的主机
子参数替换为您在 第 4.1.3 节 “检索 AMQ Interconnect 路由地址” 中检索的值。 -
设置
CeilometerQdrMetricsConfig.topic
的topic
值,以定义 Ceilometer 指标的主题。该值是云的唯一标识符,如cloud1-metering
。 -
设置
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
字段一致。例如,将CeilometerQdrMetricsConfig.topic
字段配置为cloud1-metering
的值。 -
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:$ 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.1.7 节 “验证客户端安装”。
4.3.6. 从多个云查询指标数据
Prometheus 中存储的数据根据从中提取的智能网关具有 服务
标签。您可以使用此标签从特定云查询数据。
要查询特定云的数据,请使用与 service
标签相关的匹配的 Prometheus promql 查询 ; 例如: collectd_uptime{service="default-cloud1-coll-meter"}
。