8.5. 精简控制配置


Kafka.spec.cruiseControl 中的 config 属性包含作为键的配置选项,其值为以下 JSON 类型之一:

  • 字符串
  • 数字
  • 布尔值

除了由 AMQ Streams 直接管理的选项外,您还可以指定并配置 Cruise Control 文档 的"配置"一节中列出的所有选项。特别是,您无法 修改与 此处 提及的其中一个键相等或开头的键的配置选项。

如果指定了 restricted 选项,则忽略它们,并在 Cluster Operator 日志文件中输出警告信息。所有支持的选项都传递给 Cruise Control。

Cruise Control 配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  # ...
  cruiseControl:
    # ...
    config:
      default.goals: >
         com.linkedin.kafka.cruisecontrol.analyzer.goals.RackAwareGoal,
         com.linkedin.kafka.cruisecontrol.analyzer.goals.ReplicaCapacityGoal
      cpu.balance.threshold: 1.1
      metadata.max.age.ms: 300000
      send.buffer.bytes: 131072
    # ...
Copy to Clipboard Toggle word wrap

跨操作系统资源共享配置

通过跨操作资源共享(CORS),您可以指定访问 REST API 的允许方法和原始 URL。

默认情况下,Cruise Control REST API 禁用 CORS。启用后,只允许对 Kafka 集群状态进行只读访问的 GET 请求。这意味着外部应用以与 AMQ Streams 组件不同的来源运行,无法向 Cruise Control API 发出 POST 请求。但是,这些应用程序可能会发出 GET 请求 来访问 Kafka 集群的只读信息,如当前集群负载或最新的优化建议。

为 Cruise Control 启用 CORS

您可以在 Kafka.spec.cruiseControl.config 中启用并配置 CORS。

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  # ...
  cruiseControl:
    # ...
    config:
      webserver.http.cors.enabled: true
      webserver.http.cors.origin: "*"
      webserver.http.cors.exposeheaders: "User-Task-ID,Content-Type"
    # ...
Copy to Clipboard Toggle word wrap

如需更多信息,请参阅 Cruise Control Wiki 中的 REST API

容量配置

整合控制使用 容量限制 来确定资源分布的优化目标是否受到破坏。这种类型的四个目标:

  • DiskUsageDistributionGoal - 磁盘使用率分布
  • CpuUsageDistributionGoal - CPU 使用率分布
  • NetworkInboundUsageDistributionGoal - 网络入站利用率分布
  • NetworkOutboundUsageDistributionGoal - 网络出站利用率分布

您可以在 Kafka. spec.cruiseControl 中的 brokerCapacity 属性中为 Kafka 代理资源指定容量限值。它们默认是启用的,您可以更改其默认值。可以使用标准 OpenShift 字节单元(K、M、G 和 T)或其双字节(双倍的幂等)等效项(Ki、Mi、Gi 和 Ti)来为以下代理资源设置容量限制:

  • 磁盘 - 每个代理的磁盘存储(默认值:100000Mi)
  • cpuUtilization - CPU 使用率作为百分比(默认值:100)
  • Inbound Network - 入站网络吞吐量每秒字节数(默认值:10000KiB/s)
  • 出站网络 - 出站网络吞吐量每秒字节数(默认值:10000KiB/s)

因为 AMQ Streams Kafka 代理是同构的,所以 Cruise Control 会为其监控的每个代理应用相同的容量限制。

使用 Bbyte 单元的 Cruise Control 代理功能配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  # ...
  cruiseControl:
    # ...
    brokerCapacity:
      disk: 100Gi
      cpuUtilization: 100
      inboundNetwork: 10000KiB/s
      outboundNetwork: 10000KiB/s
    # ...
Copy to Clipboard Toggle word wrap

其它资源

如需更多信息,请参阅 第 13.2.52 节 “BrokerCapacity schema 参考”

日志记录配置

精简控制具有自己的可配置日志记录器:

  • rootLogger.level

整合控制使用 Apache log4j 2 日志记录器实施。

使用 logging 属性来配置日志记录器和日志记录器级别。

您可以通过直接(内线)指定日志记录器和级别来设置日志级别,或使用自定义(外部)ConfigMap。如果使用 ConfigMap,则将 logging.valueFrom.configMapKeyRef.name 属性设置为包含外部日志记录配置的 ConfigMap 的名称。在 ConfigMap 中,日志配置使用 log4j.properties 进行 描述。logging.valueFrom.configMapKeyRef.namelogging.valueFrom.configMapKeyRef.key 属性均是必需的。在运行 Cluster Operator 时,会使用自定义资源创建使用指定准确日志配置的 ConfigMap,然后在每次协调后重新创建。如果没有指定自定义 ConfigMap,则会使用默认日志设置。如果没有设置特定的日志记录器值,则会继承该日志记录器的上一级日志记录器设置。此处我们会看到 内联 和外部 记录示例。

内联日志记录

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
# ...
spec:
  cruiseControl:
    # ...
    logging:
      type: inline
      loggers:
        rootLogger.level: "INFO"
    # ...
Copy to Clipboard Toggle word wrap

外部日志记录

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
# ...
spec:
  cruiseControl:
    # ...
    logging:
      type: external
      valueFrom:
        configMapKeyRef:
          name: customConfigMap
          key: cruise-control-log4j.properties
    # ...
Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat