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.2 节 “为 STF 创建基本配置”。
- 配置每个云,使其指标和事件发送到正确的地址上的 STF。更多信息请参阅 第 4.3.5 节 “为多个云创建 Red Hat OpenStack Platform 环境文件”。
4.3.1. 规划 AMQP 地址前缀 复制链接链接已复制到粘贴板!
默认情况下,Red Hat OpenStack Platform (RHOSP)节点通过两个数据收集器接收数据: collectd 和 slirp。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 事件,一个用于 IaaS 指标,一个用于 BGP 事件,一个用于 collectd-sensubility 指标。配置每个智能网关,以侦听您为相应云定义的 AMQP 地址。要定义智能网关,请在 ServiceTelemetry 清单中配置 clouds 参数。
当您首次部署 STF 时,会创建智能网关清单来为单个云定义初始智能卡。当您为多个云支持部署智能网关时,您可以为每个数据收集类型部署多个智能网关,这些类型处理每个云的指标和事件数据。初始智能网关在 cloud1 中定义,有以下订阅地址:
| collector | type | 默认订阅地址 |
| collectd | metrics | collectd/telemetry |
| collectd | 事件 | collectd/notify |
| collectd-sensubility | metrics | sensubility/telemetry |
| opendoi | metrics | anycast/ceilometer/metering.sample |
| opendoi | 事件 | 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 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-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 可以删除创建但不再列在对象的 ServiceTelemetry 云 列表中的 SmartGateway 对象。要启用删除由 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 是否删除了智能网关。当 Operator 协调更改时可能需要几分钟时间:
$ oc get smartgateways
4.3.4. 设置唯一云域 复制链接链接已复制到粘贴板!
为确保 AMQ Interconnect 路由器从 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 文件,并调整,QdrEventsConfig、QdrMetricsConfig 和 CollectdAmqpInstances 的值,以匹配 AMQP 地址前缀方案。
如果启用了容器健康和 API 状态监控,还必须修改 CollectdSensubilityResultsChannel 参数。更多信息请参阅 第 5.8 节 “Red Hat OpenStack Platform API 状态和容器化服务健康状况”。
前提条件
- 您已创建了 clouds 对象列表。有关为 clouds 参数创建内容的更多信息,请参阅 clouds 配置参数。
- 您已检索了 AMQ Interconnect 路由地址。更多信息请参阅 第 4.1.1 节 “检索 AMQ Interconnect 路由地址”。
- 您已为 STF 创建了基本配置。更多信息请参阅 第 4.1.2 节 “为 STF 创建基本配置”。
- 您已创建了唯一的域名环境文件。更多信息请参阅 第 4.3.4 节 “设置唯一云域”。
流程
-
以
stack用户身份登录 undercloud 主机。 -
在
/home/stack目录中创建一个名为stf-connectors.yaml的配置文件。 在
stf-connectors.yaml文件中,配置MetricsQdrConnectors地址,以连接到 overcloud 部署上的 AMQ Interconnect。配置 and CollectdSensubilityResultsConfig, slirpQdrMetricsConfig,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 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.1 节 “检索 AMQ Interconnect 路由地址” 中检索的值。 -
将
MetricsQdrConnectors的主机子参数替换为您在 第 4.1.1 节 “检索 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文件中的命名惯例与智能网关配置中的spec.bridge.amqpUrl字段一致。例如,将 192.168.1.0/24QdrEventsConfig.topic字段配置为cloud1-event的值。 -
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭证文件:$ source stackrc在
openstack overcloud deployment命令中包含stf-connectors.yaml文件以及唯一域名环境文件hostname.yaml,以及其他与您环境相关的环境文件:警告如果您使用
collectd-write-qdr.yaml文件以及自定义CollectdAmqpInstances参数,则数据会发布到自定义和默认主题。在多个云环境中,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.5 节 “验证客户端安装”。
4.3.6. 从多个云查询指标数据 复制链接链接已复制到粘贴板!
Prometheus 中存储的数据根据从中提取的智能网关有一个 服务 标签。您可以使用此标签从特定云查询数据。
要查询特定云的数据,请使用与 service 标签相关的匹配的 Prometheus promql 查询 ; 例如: collectd_uptime{service="default-cloud1-coll-meter"}。