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.version3.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.versioninter.broker.protocol.version 이 있습니다. 이 버전은 다운그레이드된 Kafka 버전에서 지원합니다.

      Kafka 3.0.0에서 inter.broker.protocol.version3.0 이상으로 설정되면 log.message.format.version 옵션이 무시되고 설정할 필요가 없습니다.

절차

  1. Kafka 클러스터 구성을 업데이트합니다.

    oc edit kafka KAFKA-CONFIGURATION-FILE
  2. Kafka.spec.kafka.version 을 변경하여 이전 버전을 지정합니다.

    예를 들어 Kafka 3.5.0에서 3.4.0으로 다운그레이드하는 경우:

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    spec:
      # ...
      kafka:
        version: 3.4.0 
    1
    
        config:
          log.message.format.version: "3.4" 
    2
    
          inter.broker.protocol.version: "3.4" 
    3
    
          # ...
    1
    Kafka 버전이 이전 버전으로 변경되었습니다.
    2
    메시지 형식 버전은 변경되지 않습니다.
    3
    inter-broker 프로토콜 버전은 변경되지 않습니다.
    참고

    log.message.format.versioninter.broker.protocol.version 의 값은 해당 값이 부동 소수점 숫자로 해석되지 않도록 문자열이어야 합니다.

  3. Kafka 버전의 이미지가 Cluster Operator의 STRIMZI_KAFKA_IMAGES 에 정의된 이미지와 다른 경우 Kafka.spec.kafka.image 를 업데이트합니다.

    참조 23.5.3절. “Kafka 버전 및 이미지 매핑”

  4. 편집기를 저장하고 종료한 다음 롤링 업데이트가 완료될 때까지 기다립니다.

    로그 또는 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 -w

    INFO 수준 메시지가 있는지 Cluster Operator 로그를 확인합니다.

    Reconciliation #NUM(watch) Kafka(NAMESPACE/NAME): Kafka version downgrade from FROM-VERSION to TO-VERSION, phase 1 of 1 completed
  5. 이전 버전의 클라이언트 바이너리를 사용하도록 모든 클라이언트 애플리케이션(소유자)을 다운그레이드합니다.

    Kafka 클러스터 및 클라이언트는 이제 이전 Kafka 버전을 사용합니다.

  6. 주제 메타데이터 스토리지에 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
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동