8장. KRaft 모드로 마이그레이션


Kafka 클러스터에서 메타데이터 관리에 Zoo Cryostat를 사용하는 경우 KRaft 모드에서 Kafka를 사용하여 마이그레이션할 수 있습니다. Kraft 모드는 분산 조정을 위해 Zoo Cryostat를 대체하여 향상된 안정성, 확장성 및 처리량을 제공합니다.

마이그레이션 중에 컨트롤러 노드의 쿼럼을 노드 풀로 설치하여 클러스터 관리를 위해 Zoo Cryostat를 대체합니다. strimzi.io/kraft="migration" 주석을 적용하여 클러스터 구성에서 KRaft 마이그레이션을 활성화합니다. 마이그레이션이 완료되면 strimzi.io/kraft="enabled" 주석을 사용하여 브로커를 KRaft를 사용하여 마이그레이션 모드로 전환합니다.

마이그레이션을 시작하기 전에 여러 제한 사항이 있으므로 환경에서 KRaft 모드에서 Kafka를 지원할 수 있는지 확인합니다. 또한 다음과 같습니다.

  • 마이그레이션은 브로커 및 컨트롤러로 이중 역할을 하는 노드에서는 전용 컨트롤러 노드에서만 지원됩니다.
  • 마이그레이션 프로세스 전반에 걸쳐 Zoo Cryostat 및 컨트롤러 노드는 일정 기간 동안 병렬로 작동하므로 클러스터에 충분한 컴퓨팅 리소스가 필요합니다.

사전 요구 사항

  • Kafka 3.7.0 이상에서는 Apache Kafka 2.7 이상용 Streams를 사용해야 합니다. 이전 버전의 Apache Kafka 또는 Apache Kafka를 사용하는 경우 KRaft 모드로 마이그레이션하기 전에 업그레이드하십시오.
  • KRaft 모드에서 지원되지 않으므로 Zoo Cryostat 기반 배포가 다음 없이 작동하는지 확인합니다.

    • 양방향 모드로 실행되는 Topic Operator입니다. 이 모드는 unidirectional 모드이거나 비활성화되어 있어야 합니다.
    • JBOD 스토리지. jbod 스토리지 유형을 사용할 수 있지만 JBOD 배열에는 하나의 디스크만 포함되어야 합니다.
  • Kafka 클러스터를 관리하는 Cluster Operator가 실행 중입니다.
  • Kafka 클러스터 배포는 Kafka 노드 풀을 사용합니다.

    Zoo Cryostat 기반 클러스터에서 노드 풀을 이미 사용 중인 경우 마이그레이션할 준비가 된 것입니다. 그렇지 않은 경우 노드 풀을 사용하도록 클러스터를 마이그레이션할 수 있습니다. 클러스터가 노드 풀을 사용하지 않을 때 마이그레이션하려면 브로커 역할이 할당되고 이름이 kafkaKafkaNodePool 리소스 구성에 브로커 를 포함해야 합니다. 노드 풀 지원은 strimzi.io/node-pools: enabled 주석을 사용하여 Kafka 리소스 구성에서 활성화됩니다.

이 절차에서 Kafka 클러스터 이름은 my-project 네임스페이스에 있는 my-cluster 입니다. 생성된 컨트롤러 노드 풀의 이름은 controller 입니다. 브로커의 노드 풀을 kafka 라고 합니다.

프로세스

  1. Kafka 클러스터의 경우 컨트롤러 역할을 사용하여 노드 풀을 생성합니다.

    노드 풀은 컨트롤러 노드의 쿼럼을 클러스터에 추가합니다.

    컨트롤러 노드 풀에 대한 구성 예

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaNodePool
    metadata:
      name: controller
      labels:
        strimzi.io/cluster: my-cluster
    spec:
      replicas: 3
      roles:
        - controller
      storage:
        type: jbod
        volumes:
          - id: 0
            type: persistent-claim
            size: 20Gi
            deleteClaim: false
        resources:
          requests:
            memory: 64Gi
            cpu: "8"
          limits:
            memory: 64Gi
            cpu: "12"
    Copy to Clipboard Toggle word wrap

    참고

    마이그레이션의 경우 브로커 및 컨트롤러 역할을 공유하는 노드 풀을 사용할 수 없습니다.

  2. KafkaNodePool 리소스를 적용하여 컨트롤러를 생성합니다.

    Cluster Operator 로그에서 Zoo Cryostat 기반 환경에서 컨트롤러 사용과 관련된 오류는 Cluster Operator 로그에서 확인할 수 있습니다. 오류는 조정을 차단할 수 있습니다. 이를 방지하려면 다음 단계를 즉시 수행합니다.

  3. strimzi.io/kraft 주석을 migration로 설정하여 Kafka 리소스에서 KRaft 마이그레이션 을 활성화합니다.

    oc annotate kafka my-cluster strimzi.io/kraft="migration" --overwrite
    Copy to Clipboard Toggle word wrap

    KRaft 마이그레이션 활성화

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
      namespace: my-project
      annotations:
        strimzi.io/kraft="migration"
    # ...
    Copy to Clipboard Toggle word wrap

    Kafka 리소스 구성에 주석을 적용하면 마이그레이션이 시작됩니다.

  4. 컨트롤러가 시작되고 브로커가 롤아웃되었는지 확인합니다.

    oc get pods -n my-project
    Copy to Clipboard Toggle word wrap

    출력에 브로커 및 컨트롤러 노드 풀의 노드가 표시됩니다.

    NAME                     READY  STATUS   RESTARTS
    my-cluster-kafka-0       1/1    Running  0
    my-cluster-kafka-1       1/1    Running  0
    my-cluster-kafka-2       1/1    Running  0
    my-cluster-controller-3  1/1    Running  0
    my-cluster-controller-4  1/1    Running  0
    my-cluster-controller-5  1/1    Running  0
    # ...
    Copy to Clipboard Toggle word wrap

  5. 마이그레이션 상태를 확인합니다.

    oc get kafka my-cluster -n my-project -w
    Copy to Clipboard Toggle word wrap

    메타데이터 상태 업데이트

    NAME        ...  METADATA STATE
    my-cluster  ...  Zookeeper
    my-cluster  ...  KRaftMigration
    my-cluster  ...  KRaftDualWriting
    my-cluster  ...  KRaftPostMigration
    Copy to Clipboard Toggle word wrap

    METADATA STATE 는 Kafka 메타데이터 및 조정 작업을 관리하는 데 사용되는 메커니즘을 보여줍니다. 마이그레이션이 시작될 때이는 Zoo Cryostat 입니다.

    • Zookeeper 는 메타데이터가 Zoo Cryostat에만 저장되는 초기 상태입니다.
    • KRaftMigration 은 마이그레이션이 진행 중인 상태입니다. Zoo Cryostat를 KRaft로 마이그레이션하는 플래그( Zookeeper.metadata.migration.enable)가 브로커에 추가되어 컨트롤러에 등록하도록 롤아웃됩니다. 이 시점에서 마이그레이션은 클러스터의 주제 및 파티션 수에 따라 다소 시간이 걸릴 수 있습니다.
    • KRaftDualWriting 은 Kafka 클러스터가 KRaft 클러스터로 작동할 때 상태이지만 메타데이터가 Kafka 및 Zoo Cryostat 모두에 저장됩니다. 브로커는 마이그레이션을 활성화하기 위해 플래그를 제거하기 위해 두 번 롤아웃됩니다.
    • KRaftPostMigration 은 브로커에 대해 KRaft 모드가 활성화된 경우의 상태입니다. 메타데이터는 여전히 Kafka 및 Zoo Cryostat에 저장됩니다.

    마이그레이션 상태는 Kafka 리소스의 status.kafkaMetadataState 속성에서도 표시됩니다.

    주의

    이 시점에서 Zoo Cryostat를 사용하여 롤백 할 수 있습니다. 다음 단계는 KRaft를 활성화하는 것입니다. KRaft를 활성화한 후에는 롤백을 수행할 수 없습니다.

  6. 메타데이터 상태가 KRaftPostMigration 에 도달하면 strimzi.io/kraft 주석을 enabled 로 설정하여 Kafka 리소스 구성에서 KRaft를 활성화합니다.

    oc annotate kafka my-cluster strimzi.io/kraft="enabled" --overwrite
    Copy to Clipboard Toggle word wrap

    KRaft 마이그레이션 활성화

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
      namespace: my-project
      annotations:
        strimzi.io/kraft="enabled"
    # ...
    Copy to Clipboard Toggle word wrap

  7. 전체 KRaft 모드로 이동 상태를 확인합니다.

    oc get kafka my-cluster -n my-project -w
    Copy to Clipboard Toggle word wrap

    메타데이터 상태 업데이트

    NAME        ...  METADATA STATE
    my-cluster  ...  Zookeeper
    my-cluster  ...  KRaftMigration
    my-cluster  ...  KRaftDualWriting
    my-cluster  ...  KRaftPostMigration
    my-cluster  ...  PreKRaft
    my-cluster  ...  KRaft
    Copy to Clipboard Toggle word wrap

    • PreKRaft 는 모든 Zoo Cryostat 관련 리소스가 자동으로 삭제되는 상태입니다.
    • Kraft는 KRaft 마이그레이션이 완료되면 최종 상태(컨트롤러가 롤아웃된 후)입니다.
    참고

    Zoo Cryostat에 대해 deleteClaim 을 구성하는 방법에 따라 PVC(영구 볼륨 클레임) 및 PV(영구 볼륨)는 삭제되지 않을 수 있습니다. deleteClaim 은 클러스터가 제거될 때 PVC가 삭제되는지 여부를 지정합니다. 기본값은 false입니다.

  8. Kafka 리소스에서 모든 Zoo Cryostat 관련 구성을 제거합니다.

    존재하는 경우 다음을 제거할 수 있습니다.

    • log.message.format.version
    • inter.broker.protocol.version
    • spec.zookeeper.* 속성

      log.message.format.versioninter.broker.protocol.version 을 제거하면 브로커와 컨트롤러가 다시 롤백됩니다. Zoo Cryostat 속성을 제거하면 KRaft-operated 클러스터에 존재하는 Zoo Cryostat 구성과 관련된 경고 메시지가 제거됩니다.

마이그레이션에서 롤백 수행

Kafka 리소스에서 KRaft를 활성화하여 마이그레이션이 완료되고 상태가 KRaft 상태로 이동하기 전에 다음과 같이 롤백 작업을 수행할 수 있습니다.

  1. strimzi.io/kraft="rollback" 주석을 Kafka 리소스에 적용하여 브로커를 롤백합니다.

    oc annotate kafka my-cluster strimzi.io/kraft="rollback" --overwrite
    Copy to Clipboard Toggle word wrap

    KRaft 마이그레이션 롤백

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
      namespace: my-project
      annotations:
        strimzi.io/kraft="rollback"
    # ...
    Copy to Clipboard Toggle word wrap

    이를 수행하려면 마이그레이션 프로세스가 KRaftPostMigration 상태에 있어야 합니다. 브로커가 롤백되어 Zoo Cryostat에 다시 연결할 수 있으며 상태가 KRaftDualWriting 으로 돌아갑니다.

  2. 컨트롤러 노드 풀을 삭제합니다.

    oc delete KafkaNodePool controller -n my-project
    Copy to Clipboard Toggle word wrap
  3. strimzi.io/kraft="disabled" 주석을 Kafka 리소스에 적용하여 메타데이터 상태를 Zoo Cryostat로 반환합니다.

    oc annotate kafka my-cluster strimzi.io/kraft="disabled" --overwrite
    Copy to Clipboard Toggle word wrap

    Zoo Cryostat를 사용하여 다시 전환

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
      namespace: my-project
      annotations:
        strimzi.io/kraft="disabled"
    # ...
    Copy to Clipboard Toggle word wrap

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat