24.2. Kafka 다운그레이드
Kafka 버전 다운그레이드는 Cluster Operator에서 수행합니다.
24.2.1. 다운그레이드에 대한 Kafka 버전 호환성 링크 복사링크가 클립보드에 복사되었습니다!
Kafka 다운그레이드는 호환 현재 및 대상 Kafka 버전 및 메시지가 기록된 상태에 따라 달라집니다.
해당 버전이 해당 클러스터에서 사용된 inter.broker.protocol.version 설정을 지원하지 않는 경우 이전 Kafka 버전으로 되돌리거나 최신 log.message.format.version 을 사용하는 메시지 로그에 메시지가 추가되었습니다.
inter.broker.protocol.version 은 __consumer_offsets 에 기록된 메시지의 스키마와 같이 브로커가 저장한 영구 메타데이터에 사용되는 스키마를 결정합니다. 클러스터에서 이전에 사용된 inter.broker.protocol.version 을 이해하지 못하는 Kafka 버전으로 다운그레이드하면 브로커에서 이해할 수 없는 데이터가 발생합니다.
Kafka의 대상 다운그레이드 버전에는 다음을 수행합니다.
-
현재 버전과 동일한
log.message.format.version과 동일한 경우 브로커의 단일 롤링 재시작을 수행하여 Cluster Operator가 다운그레이드됩니다. 다른
log.message.format.version, downgrading은 실행중인 클러스터에 항상log.message.format.version이 downgraded 버전에서 사용하는 버전으로 설정된 경우에만 가능합니다. 일반적으로log.message.format.version이 변경되기 전에 업그레이드 절차가 중단된 경우에만 해당합니다. 이 경우 다운그레이드에는 다음이 필요합니다.- 두 버전의 interbroker 프로토콜이 다른 경우 브로커의 롤링 재시작 두 개
- 동일한 경우 단일 롤링 재시작
새 버전이 log.message.format.version 의 기본값을 사용하는 경우를 포함하여 이전 버전에서 지원하지 않는 log.message.format.version 을 사용한 경우 다운그레이딩이 불가능합니다. 예를 들어 log.message.format.version 이 변경되지 않았기 때문에 Kafka 버전 3.4.0으로 이 리소스를 다운그레이드할 수 있습니다.
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
spec:
# ...
kafka:
version: 3.5.0
config:
log.message.format.version: "3.4"
# ...
log.message.format.version 이 "3.5" 로 설정되었거나 값이 없는 경우 다운그레이드를 사용할 수 없으므로 매개 변수가 3.5의 3.5.0 브로커에 기본값을 사용합니다.
Kafka 3.0.0에서 inter.broker.protocol.version 이 3.0 이상으로 설정되면 log.message.format.version 옵션이 무시되고 설정할 필요가 없습니다.
24.2.2. Kafka 브로커 및 클라이언트 애플리케이션 다운그레이드 링크 복사링크가 클립보드에 복사되었습니다!
AMQ Streams Kafka 클러스터를 3.5.0에서 3.4.0으로 다운그레이드하는 등 Kafka의 하위(이전) 버전으로 다운그레이드합니다.
사전 요구 사항
- Cluster Operator가 실행 중입니다.
AMQ Streams Kafka 클러스터를 다운그레이드하기 전에
Kafka리소스에 대해 다음을 확인합니다.- 중요: Kafka 버전의 호환성.
-
Kafka.spec.kafka.config에는 다운그레이드된 Kafka 버전에서 지원하지 않는 옵션이 포함되어 있지 않습니다. Kafka.spec.kafka.config에는log.message.format.version및inter.broker.protocol.version이 있습니다. 이 버전은 다운그레이드된 Kafka 버전에서 지원합니다.Kafka 3.0.0에서
inter.broker.protocol.version이3.0이상으로 설정되면log.message.format.version옵션이 무시되고 설정할 필요가 없습니다.
절차
Kafka 클러스터 구성을 업데이트합니다.
oc edit kafka KAFKA-CONFIGURATION-FILEKafka.spec.kafka.version을 변경하여 이전 버전을 지정합니다.예를 들어 Kafka 3.5.0에서 3.4.0으로 다운그레이드하는 경우:
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka spec: # ... kafka: version: 3.4.01 config: log.message.format.version: "3.4"2 inter.broker.protocol.version: "3.4"3 # ...참고log.message.format.version및inter.broker.protocol.version의 값은 해당 값이 부동 소수점 숫자로 해석되지 않도록 문자열이어야 합니다.Kafka 버전의 이미지가 Cluster Operator의
STRIMZI_KAFKA_IMAGES에 정의된 이미지와 다른 경우Kafka.spec.kafka.image를 업데이트합니다.편집기를 저장하고 종료한 다음 롤링 업데이트가 완료될 때까지 기다립니다.
로그 또는 Pod 상태 전환을 확인하여 업데이트를 확인합니다.
oc logs -f CLUSTER-OPERATOR-POD-NAME | grep -E "Kafka version downgrade from [0-9.]+ to [0-9.]+, phase ([0-9]+) of \1 completed"oc get pod -wINFO수준 메시지가 있는지 Cluster Operator 로그를 확인합니다.Reconciliation #NUM(watch) Kafka(NAMESPACE/NAME): Kafka version downgrade from FROM-VERSION to TO-VERSION, phase 1 of 1 completed이전 버전의 클라이언트 바이너리를 사용하도록 모든 클라이언트 애플리케이션(소유자)을 다운그레이드합니다.
Kafka 클러스터 및 클라이언트는 이제 이전 Kafka 버전을 사용합니다.
주제 메타데이터 스토리지에 ZooKeeper를 사용하는 1.7 이전의 AMQ Streams 버전으로 되돌리는 경우 Kafka 클러스터에서 내부 주제 저장소 주제를 삭제합니다.
oc run kafka-admin -ti --image=registry.redhat.io/amq-streams/kafka-35-rhel8:2.5.1 --rm=true --restart=Never -- ./bin/kafka-topics.sh --bootstrap-server localhost:9092 --topic __strimzi-topic-operator-kstreams-topic-store-changelog --delete && ./bin/kafka-topics.sh --bootstrap-server localhost:9092 --topic __strimzi_store_topic --delete