搜索

19.5. 使用 Kafka 配置和部署 Cruise 控制

download PDF

配置 Kafka 资源,以使用 Kafka 集群部署 Cruise Control。您可以使用 Kafka 资源的 cruiseControl 属性来配置部署。为每个 Kafka 集群部署一个 Cruise Control 实例。

在 Cruise Control config 中使用 goals 配置来指定优化目标,以生成优化建议。您可以使用 brokerCapacity 更改与资源分布相关的目标的默认容量限制。如果代理在带有异构网络资源的节点上运行,您可以使用 覆盖 来为每个代理设置网络容量限制。

如果将空对象({})用于 cruiseControl 配置,则所有属性都使用其默认值。

有关 Cruise Control 配置选项的更多信息,请参阅 Apache Kafka 自定义资源 API 参考流

先决条件

  • 一个 OpenShift 集群
  • 正在运行的 Cluster Operator

流程

  1. 编辑 Kafka 资源的 cruiseControl 属性。

    以下示例配置中显示了您可以配置的属性:

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
    spec:
      # ...
      cruiseControl:
        brokerCapacity: 1
          inboundNetwork: 10000KB/s
          outboundNetwork: 10000KB/s
          overrides: 2
          - brokers: [0]
            inboundNetwork: 20000KiB/s
            outboundNetwork: 20000KiB/s
          - brokers: [1, 2]
            inboundNetwork: 30000KiB/s
            outboundNetwork: 30000KiB/s
          # ...
        config: 3
          # Note that `default.goals` (superset) must also include all `hard.goals` (subset)
          default.goals: > 4
            com.linkedin.kafka.cruisecontrol.analyzer.goals.RackAwareGoal,
            com.linkedin.kafka.cruisecontrol.analyzer.goals.ReplicaCapacityGoal,
            com.linkedin.kafka.cruisecontrol.analyzer.goals.DiskCapacityGoal
            # ...
          hard.goals: >
            com.linkedin.kafka.cruisecontrol.analyzer.goals.RackAwareGoal
            # ...
          cpu.balance.threshold: 1.1
          metadata.max.age.ms: 300000
          send.buffer.bytes: 131072
          webserver.http.cors.enabled: true 5
          webserver.http.cors.origin: "*"
          webserver.http.cors.exposeheaders: "User-Task-ID,Content-Type"
          # ...
        resources: 6
          requests:
            cpu: 1
            memory: 512Mi
          limits:
            cpu: 2
            memory: 2Gi
        logging: 7
            type: inline
            loggers:
              rootLogger.level: INFO
        template: 8
          pod:
            metadata:
              labels:
                label1: value1
            securityContext:
              runAsUser: 1000001
              fsGroup: 0
            terminationGracePeriodSeconds: 120
        readinessProbe: 9
          initialDelaySeconds: 15
          timeoutSeconds: 5
        livenessProbe:
          initialDelaySeconds: 15
          timeoutSeconds: 5
        metricsConfig: 10
          type: jmxPrometheusExporter
          valueFrom:
            configMapKeyRef:
              name: cruise-control-metrics
              key: metrics-config.yml
    # ...
    1
    代理资源的容量限制。
    2
    在带有异构网络资源的节点上运行时,覆盖为特定代理设置网络容量限制。
    3
    Cruise Control 配置。标准 Cruise Control 配置可能会提供给不是由 Apache Kafka 的 Streams 直接管理的属性。
    4
    优化目标配置,其中包括用于默认优化目标(default.goals)、主要优化目标(目标)和硬目标(hard.goals)的配置。
    5
    为 Cruise Control API 的只读访问权限启用并配置了 CORS。
    6
    为保留支持的资源(当前 cpumemory )的请求,以及指定可消耗的最大资源的限制。
    7
    Cruise Control loggers 和日志级别直接(内联)或通过 ConfigMap 间接添加(外部)。自定义 Log4j 配置必须放在 ConfigMap 中的 log4j.properties 键下。Cruise Control 具有一个名为 rootLogger.level 的日志记录器。您可以将日志级别设置为 INFO, ERROR, WARN, TRACE, DEBUG, FATAL 或 OFF。
    8
    模板自定义。这里有一个额外的安全属性调度 pod。
    9
    检查检查以了解何时重启容器(存活度)以及何时容器可以接受流量(就绪度)。
    10
    启用 Prometheus 指标。在本例中,为 Prometheus JMX Exporter (默认指标导出器)配置了指标。
  2. 创建或更新资源:

    oc apply -f <kafka_configuration_file>
  3. 检查部署的状态:

    oc get deployments -n <my_cluster_operator_namespace>

    输出显示部署名称和就绪

    NAME                      READY  UP-TO-DATE  AVAILABLE
    my-cluster-cruise-control 1/1    1           1

    my-cluster 是 Kafka 集群的名称。

    READY 显示就绪/预期的副本数。当 AVAILABLE 输出显示为 1 时,部署成功。

自动创建的主题

下表显示了部署 Cruise Control 时自动创建的三个主题。Cruise Control 需要这些主题才能正常工作,且不得删除或更改。您可以使用指定的配置选项更改主题的名称。

表 19.3. 自动创建的主题
自动创建的主题配置默认主题名称创建人功能

metric.reporter.topic

strimzi.cruisecontrol.metrics

Apache Kafka Metrics Reporter 的流

将 Metrics Reporter 中的原始指标存储在每个 Kafka 代理中。

partition.metric.sample.store.topic

strimzi.cruisecontrol.partitionmetricsamples

Sything Control

存储每个分区的派生指标。它们由指标示例聚合器创建。

broker.metric.sample.store.topic

strimzi.cruisecontrol.modeltrainingsamples

Sything Control

存储用于创建 Cluster Workload Model 的指标样本。

要防止删除 Cruise Control 所需的记录,日志压缩会在自动创建的主题中禁用。

注意

如果在启用了 Cruise Control 的 Kafka 集群中更改自动创建主题的名称,旧的主题不会被删除,应手动删除旧的主题。

接下来要做什么

配置和部署 Cruise Control 后,您可以生成优化提议

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.