4.3. 配置多个云


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

图 4.1. 两个 RHOSP 云连接到 STF

要为多个云场景配置 RHOSP overcloud,请完成以下任务:

  1. 规划您要用于每个云的 AMQP 地址前缀。更多信息请参阅 第 4.3.1 节 “规划 AMQP 地址前缀”
  2. 为每个云部署指标和事件消费者智能网关,以侦听对应的地址前缀。更多信息请参阅 第 4.3.2 节 “部署智能网关”
  3. 使用唯一的域名配置每个云。更多信息请参阅 第 4.3.4 节 “设置唯一的云域”
  4. 为 STF 创建基本配置。更多信息请参阅 第 4.1.3 节 “为 STF 创建基本配置”
  5. 配置每个云,以便在正确地址上将其指标和事件发送到 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 中定义,具有以下订阅地址:

Expand

collector

type

默认订阅地址

collectd

metrics

collectd/telemetry

collectd

events

collectd/notify

collectd-sensubility

metrics

sensubility/telemetry

ceilometer

metrics

anycast/ceilometer/metering.sample

ceilometer

events

anycast/ceilometer/event.sample

前提条件

流程

  1. 登录到 Red Hat OpenShift Container Platform。
  2. 进入 service-telemetry 命名空间:

    $ oc project service-telemetry
    Copy to Clipboard Toggle word wrap
  3. 编辑默认 ServiceTelemetry 对象并使用您的配置添加 clouds 参数:

    警告

    长的云名称可能会超过最多 63 个字符的 pod 名称。确保 ServiceTelemetry 名称 defaultclouds.name 的组合没有超过 19 个字符。容器名称不能包含任何特殊字符,如 -。将云名称限制为字母数字(a-z、0-9)。

    主题地址没有字符限制,可以与 clouds.name 值不同。

    $ oc edit stf default
    Copy to Clipboard Toggle word wrap
    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:
          ...
    Copy to Clipboard Toggle word wrap
  4. 保存 ServiceTelemetry 对象。
  5. 验证每个智能网关正在运行。这可能需要几分钟,具体取决于智能网关的数量:

    $ 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
    Copy to Clipboard Toggle word wrap

4.3.3. 删除默认智能网关

在为多个云配置 Service Telemetry Framework (STF)后,如果不再使用它们,您可以删除默认的智能网关。Service Telemetry Operator 可以删除创建的 SmartGateway 对象,但不再列在 ServiceTelemetry clouds 列表中。要启用删除没有由 clouds 参数定义的 SmartGateway 对象,您必须在 ServiceTelemetry 清单中将 cloudsRemoveOnMissing 参数设置为 true

提示

如果您不想部署任何智能网关,请使用 clouds: [] 参数定义空云列表。

警告

cloudsRemoveOnMissing 参数默认为禁用。如果启用了 cloudsRemoveOnMissing 参数,您可以删除当前命名空间中任何手动创建的 SmartGateway 对象,而无需恢复。

流程

  1. 使用您要管理 Service Telemetry Operator 的云对象列表定义您的 clouds 参数。更多信息请参阅 “clouds 参数”一节
  2. 编辑 ServiceTelemetry 对象并添加 cloudsRemoveOnMissing 参数:

    apiVersion: infra.watch/v1beta1
    kind: ServiceTelemetry
    metadata:
      ...
    spec:
      ...
      cloudsRemoveOnMissing: true
      clouds:
        ...
    Copy to Clipboard Toggle word wrap
  3. 保存修改。
  4. 验证 Operator 是否删除了智能网关。当 Operator 协调更改时,这可能需要几分钟时间:

    $ oc get smartgateways
    Copy to Clipboard Toggle word wrap

4.3.4. 设置唯一的云域

为确保 AMQ Interconnect 路由器从 Red Hat OpenStack Platform (RHOSP)到 Service Telemetry Framework (STF)的连接是唯一的,且没有冲突,请配置 CloudDomain 参数。

警告

确保您不会更改现有部署中的主机或域名。只有新的云部署支持主机和域名配置。

流程

  1. 创建新环境文件,如 hostname .yaml
  2. 在环境文件中设置 CloudDomain 参数,如下例所示:

    hostnames.yaml

    parameter_defaults:
        CloudDomain: newyork-west-04
        CephStorageHostnameFormat: 'ceph-%index%'
        ObjectStorageHostnameFormat: 'swift-%index%'
        ComputeHostnameFormat: 'compute-%index%'
    Copy to Clipboard Toggle word wrap

  3. 将新环境文件添加到部署中。

要根据原始原始云标记流量,您必须使用特定于云的实例名称创建配置。创建 stf-connectors.yaml 文件并调整 CeilometerQdrEventsConfig、CeterQdrMetricsConfigCollectdAmqpInstances 的值以匹配 AMQP 地址前缀方案。

注意

如果启用了容器健康和 API 状态监控,还必须修改 CollectdSensubilityResultsChannel 参数。更多信息请参阅 第 5.9 节 “Red Hat OpenStack Platform API 状态和容器化服务健康状况”

先决条件

流程

  1. stack 用户身份登录 undercloud 主机。
  2. /home/stack 目录中创建一个名为 stf-connectors.yaml 的配置文件。
  3. stf-connectors.yaml 文件中,配置 MetricsQdrConnectors 地址,以连接到 overcloud 部署上的 AMQ Interconnect。配置 CeilometerQdrEventsConfigCeiloQdrMetricsConfigCollectdAmqpInstancesCollectdSensubilityResultsChannel 主题值,以匹配您想要进行此云部署的 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
    Copy to Clipboard Toggle word wrap

    • resource_registry 配置直接加载 collectd 服务,因为您没有为多个云部署包含 collectd-write-qdr.yaml 环境文件。
    • 使用您在 第 4.1.2 节 “检索 AMQ Interconnect 路由地址” 中检索的值替换 host 参数。
    • caCertFileContent 参数替换为 第 4.1.1 节 “从用于 overcloud 配置的 Service Telemetry Framework 获取 CA 证书” 中检索的内容。
    • MetricsQdrConnectors 的主机 子参数替换为您在 第 4.1.2 节 “检索 AMQ Interconnect 路由地址” 中检索的值。
    • 设置 CeilometerQdrEventsConfig 的主题 值,以定义 Ceilometer 事件的主题。该值是云的唯一主题标识符,如 cloud1-event
    • 设置 CeilometerQdrMetricsConfig.topictopic 值,以定义 Ceilometer 指标的主题。该值是云的唯一主题标识符,如 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 参数”一节

  4. 确保 stf-connectors.yaml 文件中的命名约定与智能网关配置中的 spec.bridge.amqpUrl 字段一致。例如,将 CeilometerQdrEventsConfig.topic 字段配置为 cloud1-event 的值。
  5. stack 用户身份登录 undercloud 主机。
  6. 查找 stackrc undercloud 凭证文件:

    $ source stackrc
    Copy to Clipboard Toggle word wrap
  7. 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
    Copy to Clipboard Toggle word wrap
  8. 部署 Red Hat OpenStack Platform overcloud。
警告

本发行版本中提供了此功能的内容作为 文档预览,因此不由红帽完全验证。它只用于测试,不要在生产环境中使用。

从 Red Hat OpenStack Platform 17.0 开始,您可以预览使用 Ansible 而不是 Puppet 来部署服务 Telemetry Framework (STF)组件。Ansible 的使用具有以下优点:

  • 在单个服务特定的 THT 变量下整合配置(MetricsQdrVars 和 CollectdVars)
  • 将 QDR 模式从 mesh-mode 切换到 edge-only 和 back
  • 部署堆栈中使用的技术较少,从而可以简化调试过程

要使用基于 Ansible 的部署,请在 stf-connectors.yaml 文件的 resource_registry 部分中替换单词 "ansible" 来代替 "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
Copy to Clipboard Toggle word wrap

要设置配置,请使用特定于服务的 THT 变量,如下例所示:

parameter_defaults:
  MetricsQdrVars:
    tripleo_metrics_qdr_deployment_mode: edge-only
  CollectdVars:
    tripleo_collectd_amqp_host: stf.mycluster.example.com
Copy to Clipboard Toggle word wrap

上面引用的部署文件中可以找到受支持的配置参数的完整列表。https://github.com/openstack/tripleo-heat-templates/blob/stable/wallaby/deployment/metrics/qdr-container-ansible.yaml#L172

https://github.com/openstack/tripleo-heat-templates/blob/stable/wallaby/deployment/metrics/collectd-container-ansible.yaml#L307

其他资源

4.3.6. 从多个云查询指标数据

Prometheus 中存储的数据根据从中提取的智能网关来有一个 服务 标签。您可以使用此标签从特定云查询数据。

要查询特定云的数据,请使用与 service 标签相关的匹配的 Prometheus promql 查询 ; 例如: collectd_uptime{service="default-cloud1-coll-meter"}

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat