搜索

4.3. 配置多个云

download PDF

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

警告

确保您使用唯一的云域配置部署每个云。有关为您的云部署配置域的更多信息,请参阅 第 4.3.4 节 “设置唯一的云域”

图 4.1. 两个 RHOSP 云连接到 STF

连接到 STF 的两个 RHOSP 云示例

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

  1. 规划您要为每个云使用的 AMQP 地址前缀。更多信息请参阅 第 4.3.1 节 “规划 AMQP 地址前缀”
  2. 为每个云部署指标和事件使用者智能网关,以侦听对应的地址前缀。更多信息请参阅 第 4.3.2 节 “部署智能网关”
  3. 使用唯一的域名配置每个云。更多信息请参阅 第 4.3.4 节 “设置唯一的云域”
  4. 为 STF 创建基础配置。更多信息请参阅 第 4.1.4 节 “为 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 中定义,包括以下订阅地址:

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

前提条件

流程

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

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

    警告

    较长的节点名称可能会超过最大 pod 名称 63 个字符。确保 ServiceTelemetry 名称 defaultclouds.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:
          ...
  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

4.3.3. 删除默认智能网关

为多个云配置 Service Telemetry Framework (STF)后,如果不再使用它们,您可以删除默认的智能网关。Service Telemetry Operator 可以删除创建的 SmartGateway 对象,但不再列在 ServiceTelemetry 对象列表中。要启用删除由 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:
        ...
  3. 保存修改。
  4. 验证 Operator 是否删除了 Smart Gateways。Operator 协调更改时可能需要几分钟时间:

    $ oc get smartgateways

4.3.4. 设置唯一的云域

为确保从不同 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%'

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

4.3.5. 为多个云创建 Red Hat OpenStack Platform 环境文件

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

注意

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

先决条件

流程

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

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

    $ source stackrc
  7. 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
  8. 部署 Red Hat OpenStack Platform overcloud。

其他资源

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

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

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.