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
代理资源指定容量限值。它们默认是启用的,您可以更改其默认值。可以使用标准 OpenShift 字节单元(K、M、G 和 T)或其双字节(双倍的幂等)等效项(Ki、Mi、Gi 和 Ti)来为以下代理资源设置容量限制:
中的 brokerCapacity
属性中为 Kafka
-
磁盘
- 每个代理的磁盘存储(默认值: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.name
和 logging.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 # ...