19.5. 使用 Kafka 配置和部署 Cruise 控制
配置 Kafka
资源,以使用 Kafka 集群部署 Cruise Control。您可以使用 Kafka
资源的 cruiseControl
属性来配置部署。为每个 Kafka 集群部署一个 Cruise Control 实例。
在 Cruise Control config
中使用 goals
配置来指定优化目标,以生成优化建议。您可以使用 brokerCapacity
更改与资源分布相关的目标的默认容量限制。如果代理在带有异构网络资源的节点上运行,您可以使用 覆盖
来为每个代理设置网络容量限制。
如果将空对象({}
)用于 cruiseControl
配置,则所有属性都使用其默认值。
有关 Cruise Control 配置选项的更多信息,请参阅 Apache Kafka 自定义资源 API 参考流。
先决条件
- 一个 OpenShift 集群
- 正在运行的 Cluster Operator
流程
编辑
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
- 为保留支持的资源(当前
cpu
和memory
)的请求,以及指定可消耗的最大资源的限制。 - 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 (默认指标导出器)配置了指标。
创建或更新资源:
oc apply -f <kafka_configuration_file>
检查部署的状态:
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 需要这些主题才能正常工作,且不得删除或更改。您可以使用指定的配置选项更改主题的名称。
自动创建的主题配置 | 默认主题名称 | 创建人 | 功能 |
---|---|---|---|
|
| Apache Kafka Metrics Reporter 的流 | 将 Metrics Reporter 中的原始指标存储在每个 Kafka 代理中。 |
|
| Sything Control | 存储每个分区的派生指标。它们由指标示例聚合器创建。 |
|
| Sything Control | 存储用于创建 Cluster Workload Model 的指标样本。 |
要防止删除 Cruise Control 所需的记录,日志压缩会在自动创建的主题中禁用。
如果在启用了 Cruise Control 的 Kafka 集群中更改自动创建主题的名称,旧的主题不会被删除,应手动删除旧的主题。
接下来要做什么
配置和部署 Cruise Control 后,您可以生成优化提议。
其他资源