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
    # ...

跨操作系统资源共享配置

通过跨操作资源共享(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"
    # ...

如需更多信息,请参阅 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
    # ...

其它资源

如需更多信息,请参阅 第 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"
    # ...

外部日志记录

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.