4.4. 配置多个云
您可以将多个 Red Hat OpenStack Platform (RHOSP)云配置为以单个服务遥测框架(STF)实例为目标。当您配置多个云时,每个云都必须自行发送指标和事件。在 STF 部署中,智能网关实例侦听这些主题,以将信息保存到常见数据存储中。使用每个智能网关创建的元数据过滤在数据存储域中通过智能网关存储的数据过滤。
图 4.1. 两个 RHOSP 云连接到 STF
要为多个云场景配置 RHOSP overcloud,请完成以下任务:
- 规划要用于每个云的 AMQP 地址前缀。更多信息请参阅 第 4.4.1 节 “规划 AMQP 地址前缀”。
- 为每一个云部署指标和事件消费者智能网关,以侦听对应的地址前缀。更多信息请参阅 第 4.4.2 节 “部署智能网关”。
- 使用唯一域名配置每个云。更多信息请参阅 第 4.4.4 节 “设置唯一云域”。
- 为 STF 创建基本配置。更多信息请参阅 第 4.1.2 节 “为 STF 创建基本配置”。
- 配置每个云,使其指标和事件在正确的地址上发送到 STF。更多信息请参阅 第 4.4.5 节 “为多个云创建 Red Hat OpenStack Platform 环境文件”。
4.4.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.4.2. 部署智能网关 复制链接链接已复制到粘贴板!
您必须为每个云部署智能网关类型;一个用于 collectd 指标,一个用于 collectd 事件,一个用于 Ceilometer 指标,一个用于 Ceilometer 事件,一个用于 collectd-sensubility 指标。配置每个智能网关,以侦听您为相应云定义的 AMQP 地址。要定义智能网关,请在 ServiceTelemetry 清单中配置 cloud 参数。
当您第一次部署 STF 时,会创建智能网关清单来为单个云定义初始智能网关。当您为多个云支持部署智能网关时,您可以为处理每个云指标和事件数据的数据收集类型部署多个智能网关。初始智能网关在 cloud1 中使用以下订阅地址定义:
| collector | type | 默认订阅地址 |
| collectd | metrics | collectd/telemetry |
| collectd | 事件 | collectd/notify |
| collectd-sensubility | metrics | sensubility/telemetry |
| Ceilometer | metrics | anycast/ceilometer/metering.sample |
| Ceilometer | 事件 | anycast/ceilometer/event.sample |
前提条件
- 您已确定了云命名方案。有关确定您的命名方案的更多信息,请参阅 第 4.4.1 节 “规划 AMQP 地址前缀”。
-
您已创建了云对象列表。有关为
clouds参数创建内容的更多信息,请参阅 “clouds 参数”一节。
流程
- 登录 Red Hat OpenShift Container Platform。
进入
service-telemetry命名空间:$ oc project service-telemetry编辑默认ServiceTelemetry 对象,并使用您的配置添加一个 cloud参数:警告长云名称可能会超过最大 pod 名称 63 个字符。确保
ServiceTelemetry名称default和clouds.name的组合没有超过 19 个字符。云名称不能包含任何特殊字符,如-。将云名称限制为字母数字(a-z、0-9)。主题地址没有字符限制,可以和
clouds.name值不同。$ oc edit stf defaultapiVersion: 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-gatewayNAME 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.4.3. 删除默认智能网关 复制链接链接已复制到粘贴板!
为多个云配置 Service Telemetry Framework (STF)后,如果不再使用默认智能网关,可以删除默认智能网关。Service Telemetry Operator 可以移除创建的 SmartGateway 对象,但不再列在对象的 ServiceTelemetry 云 列表中。要启用删除不是由 clouds 参数定义的 SmartGateway 对象,您必须在 ServiceTelemetry 清单中将 cloudsRemoveOn Mising 参数设置为 true。
如果您不想部署任何智能网关,请使用 cloud : [] 参数定义一个空云 列表。
cloudsRemoveOnMissing 参数会被默认禁用。如果启用 cloudsRemoveOnMis ing 参数,您可以删除当前命名空间中的手动创建的 SmartGateway 对象,而无需恢复。
流程
-
使用您要管理 Service Telemetry Operator 的云对象列表定义您的
clouds参数。更多信息请参阅 “clouds 参数”一节。 编辑 ServiceTelemetry 对象并添加
cloudsRemoveOnMissing参数:apiVersion: infra.watch/v1beta1 kind: ServiceTelemetry metadata: ... spec: ... cloudsRemoveOnMissing: true clouds: ...- 保存修改。
验证 Operator 是否已删除智能卡。Operator 协调更改时可能需要几分钟时间:
$ oc get smartgateways
4.4.4. 设置唯一云域 复制链接链接已复制到粘贴板!
要确保 AMQ 互连从 Red Hat OpenStack Platform (RHOSP)到 Service Telemetry Framework (STF)的连接是唯一的且没有冲突,请配置 CloudDomain 参数。
流程
-
创建新的环境文件,如 hostname
.yaml。 在环境文件中设置
CloudDomain参数,如下例所示:parameter_defaults: CloudDomain: newyork-west-04 CephStorageHostnameFormat: 'ceph-%index%' ObjectStorageHostnameFormat: 'swift-%index%' ComputeHostnameFormat: 'compute-%index%'- 将新环境文件添加到您的部署中。有关更多信息,请参阅 Overcloud 参数指南中的 第 4.4.5 节 “为多个云创建 Red Hat OpenStack Platform 环境文件” 和 Core overcloud 参数。
4.4.5. 为多个云创建 Red Hat OpenStack Platform 环境文件 复制链接链接已复制到粘贴板!
要根据原始云标记流量,您必须使用特定于云的实例名称创建配置。创建 stf-connectors.yaml 文件并调整 CeilometerQdrEventsConfig、CeilomesConfig 和 CollectdAmqpInstances 的值以匹配 AMQP 地址前缀方案。
如果启用了容器健康和 API 状态监控,还必须修改 CollectdSensubilityResultsChannel 参数。更多信息请参阅 第 5.9 节 “Red Hat OpenStack Platform API 状态和容器化服务健康”。
前提条件
- 您已创建了云对象列表。有关为云参数创建内容的更多信息,请参阅 云配置参数。
- 您已获取 AMQ Interconnect 路由地址。更多信息请参阅 第 4.1.1 节 “检索 AMQ Interconnect 路由地址”。
- 您已为 STF 创建基本配置。更多信息请参阅 第 4.1.2 节 “为 STF 创建基本配置”。
- 您已创建了唯一的域名环境文件。更多信息请参阅 第 4.4.4 节 “设置唯一云域”。
流程
-
以
stack用户身份登录 Red Hat OpenStack Platform undercloud。 -
在
/home/stack目录中创建一个名为stf-connectors.yaml的配置文件。 在
stf-connectors.yaml文件中,配置MetricsQdrConnectors地址以连接到 overcloud 部署上的 AMQ Interconnect。配置CeilometerQdrEventsConfig,CeilometerQdrMetricsConfig,CollectdAmqpInstances, andCollectdSensubilityResultsChannel主题值以匹配您要用于此云部署的 AMQP 地址。stf-connectors.yaml
resource_registry: OS::TripleO::Services::Collectd: /usr/share/openstack-tripleo-heat-templates/deployment/metrics/collectd-container-puppet.yaml1 parameter_defaults: MetricsQdrConnectors: - host: stf-default-interconnect-5671-service-telemetry.apps.infra.watch2 port: 443 role: edge verifyHostname: false sslProfile: sslProfile MetricsQdrSSLProfiles: - name: sslProfile CeilometerQdrEventsConfig: driver: amqp topic: cloud1-event3 CeilometerQdrMetricsConfig: driver: amqp topic: cloud1-metering4 CollectdAmqpInstances: cloud1-notify:5 notify: true format: JSON presettle: false cloud1-telemetry:6 format: JSON presettle: false CollectdSensubilityResultsChannel: sensubility/cloud1-telemetry7 - 1
- 直接加载 collectd 服务,因为您不包含用于多个云部署的
collectd-write-qdr.yaml环境文件。 - 2
- 3
- 定义 Ceilometer 事件的主题。这个值是任何cast
/ceilometer/cloud1-event.sample的地址格式。 - 4
- 定义 Ceilometer 指标的主题。这个值是任何cast
/ceilometer/cloud1-metering.sample的地址格式。 - 5
- 定义 collectd 事件的主题。这个值是
collectd/cloud1-notify的格式。 - 6
- 定义 collectd 指标的主题。此值是
collectd/cloud1-telemetry的格式。 - 7
- 为 collectd-sensubility 事件定义主题。确保这个值是确切的字符串
sensubility/cloud1-telemetry
-
确保
stf-connectors.yaml文件中的命名约定与智能网关配置中的spec.bridge.amqpUrl字段一致。例如,将CeilometerQdrEventsConfig.topic字段配置为cloud1-event的值。 提供身份验证文件:
[stack@undercloud-0 ~]$ source stackrc (undercloud) [stack@undercloud-0 ~]$在
openstack overcloud deployment命令中包含stf-connectors.yaml文件以及唯一域名环境文件hostname.yaml,以及其他与您环境相关的环境文件:警告如果您使用带有自定义
CollectdAmqpInstances参数的collectd-write-qdr.yaml文件,数据会发布到自定义和默认主题。在多个云环境中,stf-connectors.yaml文件中的resource_registry参数配置加载 collectd 服务。(undercloud) [stack@undercloud-0 ~]$ openstack overcloud deploy <other_arguments> --templates /usr/share/openstack-tripleo-heat-templates \ --environment-file <...other_environment_files...> \ --environment-file /usr/share/openstack-tripleo-heat-templates/environments/metrics/ceilometer-write-qdr.yaml \ --environment-file /usr/share/openstack-tripleo-heat-templates/environments/metrics/qdr-edge-only.yaml \ --environment-file /home/stack/hostnames.yaml \ --environment-file /home/stack/enable-stf.yaml \ --environment-file /home/stack/stf-connectors.yaml- 部署 Red Hat OpenStack Platform overcloud。
其他资源
- 有关如何验证部署的详情,请参考 第 4.1.5 节 “验证客户端安装”。
4.4.6. 从多个云查询指标数据 复制链接链接已复制到粘贴板!
Prometheus 中存储的数据具有 服务 标签,它从其中提取的智能卡。您可以使用此标签从特定云查询数据。
要查询特定云的数据,请使用与 service 标签相关的匹配的 Prometheus promql 查询 ; 例如: collectd_uptime{service="default-cloud1-coll-meter"}。