2.5. Kafka MirrorMaker 集群配置
使用 KafkaMirrorMaker 资源配置 Kafka MirrorMaker 部署。KafkaMirrorMaker 在 Kafka 集群之间复制数据。
第 6.2.108 节 “KafkaMirrorMaker 模式参考” 描述 KafkaMirrorMaker 资源的完整模式。
您可以将 AMQ Streams 与 MirrorMaker 或 MirrorMaker 2 搭配使用。MirrorMaker 2 是最新版本,提供更有效地在 Kafka 集群间镜像数据的方法。
Kafka MirrorMaker 1 (称为文档中的 MirrorMaker )已在 Apache Kafka 3.0.0 中弃用,并将在 Apache Kafka 4.0.0 中删除。因此,在 AMQ Streams 中还已弃用了用于部署 Kafka MirrorMaker 1 的 KafkaMirrorMaker 自定义资源。当我们采用 Apache Kafka 4.0.0 时,KafkaMirrorMaker 资源将从 AMQ Streams 中删除。作为替代方法,在 IdentityReplicationPolicy 中使用 KafkaMirrorMaker2 自定义资源。
2.5.1. 配置 Kafka MirrorMaker 复制链接链接已复制到粘贴板!
使用 KafkaMirrorMaker 资源的属性来配置 Kafka MirrorMaker 部署。
您可以使用 TLS 或 SASL 身份验证为生产者和使用者配置访问控制。此流程显示在消费者和制作者一侧使用 TLS 加密和 mTLS 身份验证的配置。
先决条件
有关运行的步骤,请参阅在 OpenShift 中部署和升级 AMQ Streams 指南:
- 源和目标集群必须可用
流程
编辑
KafkaMirrorMaker资源的spec属性。您可以配置的属性显示在以下示例配置中:
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaMirrorMaker metadata: name: my-mirror-maker spec: replicas: 31 consumer: bootstrapServers: my-source-cluster-kafka-bootstrap:90922 groupId: "my-group"3 numStreams: 24 offsetCommitInterval: 1200005 tls:6 trustedCertificates: - secretName: my-source-cluster-ca-cert certificate: ca.crt authentication:7 type: tls certificateAndKey: secretName: my-source-secret certificate: public.crt key: private.key config:8 max.poll.records: 100 receive.buffer.bytes: 32768 ssl.cipher.suites: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA3849 ssl.enabled.protocols: TLSv1.2 ssl.protocol: TLSv1.2 ssl.endpoint.identification.algorithm: HTTPS10 producer: bootstrapServers: my-target-cluster-kafka-bootstrap:9092 abortOnSendFailure: false11 tls: trustedCertificates: - secretName: my-target-cluster-ca-cert certificate: ca.crt authentication: type: tls certificateAndKey: secretName: my-target-secret certificate: public.crt key: private.key config: compression.type: gzip batch.size: 8192 ssl.cipher.suites: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA38412 ssl.enabled.protocols: TLSv1.2 ssl.protocol: TLSv1.2 ssl.endpoint.identification.algorithm: HTTPS13 include: "my-topic|other-topic"14 resources:15 requests: cpu: "1" memory: 2Gi limits: cpu: "2" memory: 2Gi logging:16 type: inline loggers: mirrormaker.root.logger: "INFO" readinessProbe:17 initialDelaySeconds: 15 timeoutSeconds: 5 livenessProbe: initialDelaySeconds: 15 timeoutSeconds: 5 metricsConfig:18 type: jmxPrometheusExporter valueFrom: configMapKeyRef: name: my-config-map key: my-key jvmOptions:19 "-Xmx": "1g" "-Xms": "1g" image: my-org/my-image:latest20 template:21 pod: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: application operator: In values: - postgresql - mongodb topologyKey: "kubernetes.io/hostname" connectContainer:22 env: - name: JAEGER_SERVICE_NAME value: my-jaeger-service - name: JAEGER_AGENT_HOST value: jaeger-agent-name - name: JAEGER_AGENT_PORT value: "6831" tracing:23 type: jaeger- 1
- 2
- 面向消费者和生成器的 bootstrap 服务器。
- 3
- 4
- 5
- 6
- TLS 加密,使用密钥名称,其中 TLS 证书存储为 X.509 格式供消费者或生成者使用 。如果证书存储在同一 secret 中,它可以多次列出。
- 7
- 8
- 9
- 外部监听程序的 SSL 属性 使用 TLS 版本的特定 密码套件 运行。
- 10
- 通过设置为
HTTPS来启用主机名验证。空字符串禁用验证。 - 11
- 如果
abortOnSendFailure属性设为true,则 Kafka MirrorMaker 将退出,容器将在消息的发送失败后重启。 - 12
- 外部监听程序的 SSL 属性 使用 TLS 版本的特定 密码套件 运行。
- 13
- 通过设置为
HTTPS来启用主机名验证。空字符串禁用验证。 - 14
- 包含的主题 从源镜像到目标 Kafka 集群。
- 15
- 16
- 指定 日志记录器和日志级别 直接(
内联)或通过 ConfigMap 间接添加(外部)。自定义 ConfigMap 必须放在log4j.properties或log4j2.properties键下。MirrorMaker 具有一个名为mirrormaker.root.logger的日志记录器。您可以将日志级别设置为 INFO、ERROR、WARN、TRACE、DEBUG、FATAL 或 OFF。 - 17
- 使用 HealthCheck 可以知道何时重启一个容器(存活度)以及何时一个容器可以开始接受流量(就绪度)。
- 18
- Prometheus metrics,通过引用本例中的 Prometheus JMX exporter 配置的 ConfigMap 来启用。您可以使用对在
metricsConfig.valueFrom.configMapKeyRef.key下包含空文件的 ConfigMap 的引用来启用指标。 - 19
- JVM 配置选项 优化运行 Kafka MirrorMaker 的虚拟机(VM)的性能。
- 20
- ADVANCED OPTION: 容器镜像配置,这只在特殊情况下建议使用。
- 21
- 模板自定义.这里的 pod 使用反关联性调度,因此 pod 不会调度到具有相同主机名的节点。
- 22
- 为分布式追踪设置环境变量。
- 23
- 为 Jaeger 启用分布式追踪。
警告当
abortOnSendFailure属性设置为false时,生产者会尝试在主题中发送下一个消息。原始消息可能会丢失,因为没有尝试重新发送失败的消息。创建或更新资源:
oc apply -f <your-file>
2.5.2. Kafka MirrorMaker 集群资源列表 复制链接链接已复制到粘贴板!
以下资源由 OpenShift 集群中的 Cluster Operator 创建:
- <mirror-maker-name>-mirror-maker
- 负责创建 Kafka MirrorMaker Pod 的部署。
- <mirror-maker-name>-config
- 包含 Kafka MirrorMaker 的辅助配置的 ConfigMap,并由 Kafka 代理 Pod 作为一个卷挂载。
- <mirror-maker-name>-mirror-maker
- 为 Kafka MirrorMaker worker 节点配置的 Pod Disruption Budget。