2.5. Kafka MirrorMaker 클러스터 구성
KafkaMirrorMaker 리소스를 사용하여 Kafka MirrorMaker 배포를 구성합니다. KafkaMirrorMaker는 Kafka 클러스터 간에 데이터를 복제합니다.
4.2.112절. “KafkaMirrorMaker 스키마 참조” KafkaMirrorMaker 리소스의 전체 스키마를 설명합니다.
AMQ Streams를 MirrorMaker 또는 MirrorMaker 2 와 함께 사용할 수 있습니다. MirrorMaker 2는 최신 버전이며 Kafka 클러스터 간 데이터를 더 효율적으로 미러링할 수 있는 방법을 제공합니다.
Kafka MirrorMaker 1(문서의 MirrorMaker 라고도 함)은 Apache Kafka 3.0.0에서 더 이상 사용되지 않으며 Apache Kafka 4.0.0에서 제거됩니다. 결과적으로 Kafka MirrorMaker 1을 배포하는 데 사용되는 KafkaMirrorMaker 사용자 정의 리소스도 AMQ Streams에서 더 이상 사용되지 않습니다. Apache Kafka 4.0.0을 채택하면 KafkaMirrorMaker 리소스가 AMQ Streams에서 제거됩니다. 대체 방법으로 KafkaMirrorMaker2 사용자 정의 리소스를 IdentityReplicationPolicy 와 함께 사용합니다.
2.5.1. Kafka MirrorMaker 구성 링크 복사링크가 클립보드에 복사되었습니다!
KafkaMirrorMaker 리소스의 속성을 사용하여 Kafka MirrorMaker 배포를 구성합니다.
TLS 또는 SASL 인증을 사용하여 생산자 및 소비자에 대한 액세스 제어를 구성할 수 있습니다. 다음 절차에서는 소비자 및 생산자 측에서 TLS 암호화 및 mTLS 인증을 사용하는 구성을 보여줍니다.
사전 요구 사항
다음을 실행하는 방법에 대한 자세한 내용은 OpenShift에 AMQ Streams 배포 및 업그레이드 가이드를 참조하십시오.
- 소스 및 대상 Kafka 클러스터 사용 가능
절차
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 producer: bootstrapServers: my-target-cluster-kafka-bootstrap:9092 abortOnSendFailure: false9 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 include: "my-topic|other-topic"10 resources:11 requests: cpu: "1" memory: 2Gi limits: cpu: "2" memory: 2Gi logging:12 type: inline loggers: mirrormaker.root.logger: INFO readinessProbe:13 initialDelaySeconds: 15 timeoutSeconds: 5 livenessProbe: initialDelaySeconds: 15 timeoutSeconds: 5 metricsConfig:14 type: jmxPrometheusExporter valueFrom: configMapKeyRef: name: my-config-map key: my-key jvmOptions:15 "-Xmx": "1g" "-Xms": "1g" image: my-org/my-image:latest16 template:17 pod: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: application operator: In values: - postgresql - mongodb topologyKey: "kubernetes.io/hostname" mirrorMakerContainer:18 env: - name: OTEL_SERVICE_NAME value: my-otel-service - name: OTEL_EXPORTER_OTLP_ENDPOINT value: "http://otlp-host:4317" tracing:19 type: opentelemetry- 1
- 2
- 소비자 및 생산자용 부트스트랩 서버 입니다.
- 3
- 4
- 5
- 6
- 소비자 또는 생산자의 X.509 형식으로 저장되는 TLS 인증서의 키 이름이 포함된 TLS 암호화 입니다. 인증서가 동일한 보안에 저장된 경우 여러 번 나열할 수 있습니다.
- 7
- 8
- 9
abortOnSendFailure속성이true로 설정되면 Kafka MirrorMaker가 종료되고 메시지에 대한 전송 실패 후에 컨테이너가 다시 시작됩니다.- 10
- 소스에서 대상 Kafka 클러스터로 미러링된 포함된 주제 목록입니다.
- 11
- 12
- 지정된 로거 및 로그 수준이 직접 (
인라인) 추가되거나 ConfigMap을 통해 간접적으로(외부)합니다. 사용자 지정 ConfigMap은log4j.properties또는log4j2.properties키에 배치해야 합니다. MirrorMaker에는mirrormaker.root.logger라는 단일 로거가 있습니다. 로그 수준을 INFO, ERROR, WARN, TRACE, DEBUG, FATAL 또는 OFF로 설정할 수 있습니다. - 13
- 컨테이너(liveness)를 다시 시작할 시기와 컨테이너가 트래픽을 수락할 수 있는 시기(가용성)를 확인할 수 있는 상태 점검 입니다.
- 14
- Prometheus 지표: 이 예제에서 Prometheus exporter에 대한 구성이 포함된 ConfigMap을 참조하여 활성화합니다.
metricsConfig.valueFrom.configMapKeyRef.key아래에 빈 파일이 포함된 ConfigMap에 대한 참조를 사용하여 추가 구성 없이 메트릭을 활성화할 수 있습니다. - 15
- Kafka Mirror Maker를 실행하는 VM(가상 머신)의 성능을 최적화하는 JVM 구성 옵션입니다.
- 16
- ADVANCED OPTION : 컨테이너 이미지 구성.이는 특별한 경우에만 권장됩니다.
- 17
- 템플릿 사용자 지정. 여기에서 Pod는 유사성 방지로 예약되므로 Pod는 동일한 호스트 이름이 있는 노드에 예약되지 않습니다.
- 18
- 환경 변수는 분산 추적을 위해 설정됩니다.
- 19
- OpenTelemetry를 사용하여 분산 추적을 활성화합니다.
주의abortOnSendFailure속성을false로 설정하면 생산자가 주제의 다음 메시지를 보냅니다. 실패 메시지를 다시 전송하려는 시도가 없기 때문에 원본 메시지가 손실될 수 있습니다.리소스를 생성하거나 업데이트합니다.
oc apply -f <your-file>
2.5.2. Kafka MirrorMaker 클러스터 리소스 목록 링크 복사링크가 클립보드에 복사되었습니다!
다음 리소스는 OpenShift 클러스터의 Cluster Operator에 의해 생성됩니다.
- <mirror-maker-name>-mirror-maker
- Kafka MirrorMaker 포드 생성을 담당하는 배포입니다.
- <mirror-maker-name>-config
- Kafka MirrorMaker에 대한 보조 구성을 포함하고 Kafka 브로커 Pod에서 볼륨으로 마운트되는 ConfigMap입니다.
- <mirror-maker-name>-mirror-maker
- Kafka MirrorMaker 작업자 노드에 대해 구성된 Pod 중단 예산입니다.