4.4. 配置多个云


您可以将多个 Red Hat OpenStack Platform (RHOSP)云配置为以单个服务遥测框架(STF)实例为目标。当您配置多个云时,每个云都必须自行发送指标和事件。在 STF 部署中,智能网关实例侦听这些主题,以将信息保存到常见数据存储中。使用每个智能网关创建的元数据过滤在数据存储域中通过智能网关存储的数据过滤。

图 4.1. 两个 RHOSP 云连接到 STF

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

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

Expand

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

前提条件

流程

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

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

    警告

    长云名称可能会超过最大 pod 名称 63 个字符。确保 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
    Copy to Clipboard Toggle word wrap
    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.4.3. 删除默认智能网关

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

提示

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

警告

cloudsRemoveOnMissing 参数会被默认禁用。如果启用 cloudsRemoveOnMis ing 参数,您可以删除当前命名空间中的手动创建的 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.4.4. 设置唯一云域

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

流程

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

    parameter_defaults:
        CloudDomain: newyork-west-04
        CephStorageHostnameFormat: 'ceph-%index%'
        ObjectStorageHostnameFormat: 'swift-%index%'
        ComputeHostnameFormat: 'compute-%index%'
    Copy to Clipboard Toggle word wrap
  3. 将新环境文件添加到您的部署中。有关更多信息,请参阅 Overcloud 参数指南中的 第 4.4.5 节 “为多个云创建 Red Hat OpenStack Platform 环境文件”Core overcloud 参数

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

注意

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

前提条件

流程

  1. stack 用户身份登录 Red Hat OpenStack Platform undercloud。
  2. /home/stack 目录中创建一个名为 stf-connectors.yaml 的配置文件。
  3. stf-connectors.yaml 文件中,配置 MetricsQdrConnectors 地址以连接到 overcloud 部署上的 AMQ Interconnect。配置 CeilometerQdrEventsConfig,CeilometerQdrMetricsConfig,CollectdAmqpInstances, and CollectdSensubilityResultsChannel 主题值以匹配您要用于此云部署的 AMQP 地址。

    stf-connectors.yaml

    resource_registry:
      OS::TripleO::Services::Collectd: /usr/share/openstack-tripleo-heat-templates/deployment/metrics/collectd-container-puppet.yaml    
    1
    
    
    parameter_defaults:
        MetricsQdrConnectors:
            - host: stf-default-interconnect-5671-service-telemetry.apps.infra.watch   
    2
    
              port: 443
              role: edge
              verifyHostname: false
              sslProfile: sslProfile
    
        MetricsQdrSSLProfiles:
            - name: sslProfile
    
        CeilometerQdrEventsConfig:
            driver: amqp
            topic: cloud1-event   
    3
    
    
        CeilometerQdrMetricsConfig:
            driver: amqp
            topic: cloud1-metering   
    4
    
    
        CollectdAmqpInstances:
            cloud1-notify:        
    5
    
                notify: true
                format: JSON
                presettle: false
            cloud1-telemetry:     
    6
    
                format: JSON
                presettle: false
    
        CollectdSensubilityResultsChannel: sensubility/cloud1-telemetry 
    7
    Copy to Clipboard Toggle word wrap

    1
    直接加载 collectd 服务,因为您不包含用于多个云部署的 collectd-write-qdr.yaml 环境文件。
    2
    host 参数替换为您在 第 4.1.1 节 “检索 AMQ Interconnect 路由地址” 中检索的 HOST/PORT 值。
    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
  4. 确保 stf-connectors.yaml 文件中的命名约定与智能网关配置中的 spec.bridge.amqpUrl 字段一致。例如,将 CeilometerQdrEventsConfig.topic 字段配置为 cloud1-event 的值。
  5. 提供身份验证文件:

    [stack@undercloud-0 ~]$ source stackrc
    
    (undercloud) [stack@undercloud-0 ~]$
    Copy to Clipboard Toggle word wrap
  6. 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
    Copy to Clipboard Toggle word wrap
  7. 部署 Red Hat OpenStack Platform overcloud。

其他资源

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

Prometheus 中存储的数据具有 服务 标签,它从其中提取的智能卡。您可以使用此标签从特定云查询数据。

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

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat