8.8. Kafka MirrorMaker 구성 (더 이상 사용되지 않음)
KafkaMirrorMaker 사용자 정의 리소스의 사양 속성을 업데이트하여 Kafka MirrorMaker 배포를 구성합니다.
TLS 또는 SASL 인증을 사용하여 생산자 및 소비자에 대한 액세스 제어를 구성할 수 있습니다. 이 절차에서는 소비자 및 생산자 측에서 TLS 암호화 및 mTLS 인증을 사용하는 구성을 보여줍니다.
Kafka MirrorMaker 클러스터 구성 옵션을 자세히 이해하려면 AMQ Streams 사용자 정의 리소스 API 참조를 참조하십시오.
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 와 함께 사용합니다.
KafkaMirrorMaker 사용자 정의 리소스 구성 예
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaMirrorMaker
metadata:
name: my-mirror-maker
spec:
replicas: 3
consumer:
bootstrapServers: my-source-cluster-kafka-bootstrap:9092
groupId: "my-group"
numStreams: 2
offsetCommitInterval: 120000
tls:
trustedCertificates:
- secretName: my-source-cluster-ca-cert
certificate: ca.crt
authentication:
type: tls
certificateAndKey:
secretName: my-source-secret
certificate: public.crt
key: private.key
config:
max.poll.records: 100
receive.buffer.bytes: 32768
producer:
bootstrapServers: my-target-cluster-kafka-bootstrap:9092
abortOnSendFailure: false
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"
resources:
requests:
cpu: "1"
memory: 2Gi
limits:
cpu: "2"
memory: 2Gi
logging:
type: inline
loggers:
mirrormaker.root.logger: INFO
readinessProbe:
initialDelaySeconds: 15
timeoutSeconds: 5
livenessProbe:
initialDelaySeconds: 15
timeoutSeconds: 5
metricsConfig:
type: jmxPrometheusExporter
valueFrom:
configMapKeyRef:
name: my-config-map
key: my-key
jvmOptions:
"-Xmx": "1g"
"-Xms": "1g"
image: my-org/my-image:latest
template:
pod:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: application
operator: In
values:
- postgresql
- mongodb
topologyKey: "kubernetes.io/hostname"
mirrorMakerContainer:
env:
- name: OTEL_SERVICE_NAME
value: my-otel-service
- name: OTEL_EXPORTER_OTLP_ENDPOINT
value: "http://otlp-host:4317"
tracing:
type: opentelemetry
- 1
- 복제본 노드 수입니다.
- 2
- 소비자 및 생산자를 위한 부트스트랩 서버.
- 3
- 소비자의 그룹 ID입니다.
- 4
- 소비자 스트림 수입니다.
- 5
- 오프셋 자동 커밋 간격(밀리초)입니다.
- 6
- TLS 인증서가 소비자 또는 생산자를 위해 X.509 형식으로 저장되는 키 이름이 있는 TLS 암호화입니다. 인증서가 동일한 시크릿에 저장된 경우 여러 번 나열할 수 있습니다.
- 7
- mTLS, 토큰 기반 OAuth, SASL 기반 SCRAM-SHA-256/SCRAM-SHA-512 또는 PLAIN으로 지정된 소비자 또는 생산자에 대한 인증입니다.
- 8
- 소비자 및 생산자에 대한 Kafka 구성 옵션입니다.
- 9
abortOnSendFailure속성이true로 설정된 경우 Kafka MirrorMaker가 종료되고 메시지 전송 실패 후 컨테이너가 다시 시작됩니다.- 10
- 소스에서 대상 Kafka 클러스터로 미러링된 포함된 주제 목록입니다.
- 11
- 지원되는 리소스 예약, 현재
cpu및memory요청, 사용할 수 있는 최대 리소스를 지정하기 위한 제한입니다. - 12
- 지정된 로거 및 로그 수준이 직접(
인라인) 또는 ConfigMap을 통해 간접적으로(외부) 추가됩니다. 사용자 정의 Log4j 구성은 ConfigMap의log4j.properties또는log4j2.properties키 아래에 배치해야 합니다. mirrorMaker에는mirrormaker.root.logger라는 단일 로거가 있습니다. 로그 수준을 INFO, ERROR, WARN, TRACE, DEBUG, FATAL 또는 OFF로 설정할 수 있습니다. - 13
- 컨테이너(liveness)를 다시 시작할 시기와 컨테이너가 트래픽을 수락할 수 있는 시기(가용성)를 확인할 수 있는 상태 점검입니다.
- 14
- Prometheus 지표: 이 예제에서 Prometheus Cryostat 내보내기에 대한 구성이 포함된 ConfigMap을 참조하여 활성화됩니다.
metricsConfig.valueFrom.configMapKeyRef.key아래에 빈 파일이 포함된 ConfigMap에 대한 참조를 사용하여 추가 구성 없이 메트릭을 활성화할 수 있습니다. - 15
- Kafka MirrorMaker를 실행하는 VM(가상 머신)의 성능을 최적화하는 JVM 구성 옵션입니다.
- 16
- ADVANCED OPTION: 컨테이너 이미지 구성 - 특별한 경우에만 권장됩니다.
- 17
- 템플릿 사용자 지정. 여기에서 Pod는 유사성 방지를 사용하여 예약되므로 이름이 동일한 노드에 Pod가 예약되지 않습니다.
- 18
- 환경 변수는 분산 추적에 대해 설정됩니다.
- 19
- OpenTelemetry를 사용하여 분산 추적을 활성화합니다.주의
abortOnSendFailure속성을false로 설정하면 생산자가 주제에서 다음 메시지를 보냅니다. 실패한 메시지를 다시 전송하려는 시도가 없기 때문에 원래 메시지가 손실될 수 있습니다.