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 기반 클러스터에서 노드 풀을 이미 사용 중인 경우 마이그레이션할 준비가 된 것입니다. 그렇지 않은 경우 노드 풀을 사용하도록 클러스터를 마이그레이션할 수 있습니다. 클러스터가 노드 풀을 사용하지 않을 때 마이그레이션하려면 브로커 역할이 할당되고 이름이
kafka인KafkaNodePool리소스 구성에브로커를 포함해야 합니다. 노드 풀 지원은strimzi.io/node-pools: enabled주석을 사용하여Kafka리소스 구성에서 활성화됩니다.
이 절차에서 Kafka 클러스터 이름은 my-project 네임스페이스에 있는 my-cluster 입니다. 생성된 컨트롤러 노드 풀의 이름은 controller 입니다. 브로커의 노드 풀을 kafka 라고 합니다.
프로세스
Kafka 클러스터의 경우
컨트롤러역할을 사용하여 노드 풀을 생성합니다.노드 풀은 컨트롤러 노드의 쿼럼을 클러스터에 추가합니다.
컨트롤러 노드 풀에 대한 구성 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고마이그레이션의 경우 브로커 및 컨트롤러 역할을 공유하는 노드 풀을 사용할 수 없습니다.
새
KafkaNodePool리소스를 적용하여 컨트롤러를 생성합니다.Cluster Operator 로그에서 Zoo Cryostat 기반 환경에서 컨트롤러 사용과 관련된 오류는 Cluster Operator 로그에서 확인할 수 있습니다. 오류는 조정을 차단할 수 있습니다. 이를 방지하려면 다음 단계를 즉시 수행합니다.
strimzi.io/kraft주석을 migration로 설정하여Kafka리소스에서 KRaft마이그레이션을 활성화합니다.oc annotate kafka my-cluster strimzi.io/kraft="migration" --overwrite
oc annotate kafka my-cluster strimzi.io/kraft="migration" --overwriteCopy to Clipboard Copied! Toggle word wrap Toggle overflow KRaft 마이그레이션 활성화
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Kafka리소스 구성에 주석을 적용하면 마이그레이션이 시작됩니다.컨트롤러가 시작되고 브로커가 롤아웃되었는지 확인합니다.
oc get pods -n my-project
oc get pods -n my-projectCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력에 브로커 및 컨트롤러 노드 풀의 노드가 표시됩니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 마이그레이션 상태를 확인합니다.
oc get kafka my-cluster -n my-project -w
oc get kafka my-cluster -n my-project -wCopy to Clipboard Copied! Toggle word wrap Toggle overflow 메타데이터 상태 업데이트
NAME ... METADATA STATE my-cluster ... Zookeeper my-cluster ... KRaftMigration my-cluster ... KRaftDualWriting my-cluster ... KRaftPostMigration
NAME ... METADATA STATE my-cluster ... Zookeeper my-cluster ... KRaftMigration my-cluster ... KRaftDualWriting my-cluster ... KRaftPostMigrationCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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를 활성화한 후에는 롤백을 수행할 수 없습니다.
-
메타데이터 상태가
KRaftPostMigration에 도달하면strimzi.io/kraft주석을enabled로 설정하여Kafka리소스 구성에서 KRaft를 활성화합니다.oc annotate kafka my-cluster strimzi.io/kraft="enabled" --overwrite
oc annotate kafka my-cluster strimzi.io/kraft="enabled" --overwriteCopy to Clipboard Copied! Toggle word wrap Toggle overflow KRaft 마이그레이션 활성화
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 전체 KRaft 모드로 이동 상태를 확인합니다.
oc get kafka my-cluster -n my-project -w
oc get kafka my-cluster -n my-project -wCopy to Clipboard Copied! Toggle word wrap Toggle overflow 메타데이터 상태 업데이트
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
PreKRaft는 모든 Zoo Cryostat 관련 리소스가 자동으로 삭제되는 상태입니다. -
Kraft는
KRaft마이그레이션이 완료되면 최종 상태(컨트롤러가 롤아웃된 후)입니다.
참고Zoo Cryostat에 대해
deleteClaim을 구성하는 방법에 따라 PVC(영구 볼륨 클레임) 및 PV(영구 볼륨)는 삭제되지 않을 수 있습니다.deleteClaim은 클러스터가 제거될 때 PVC가 삭제되는지 여부를 지정합니다. 기본값은false입니다.-
Kafka리소스에서 모든 Zoo Cryostat 관련 구성을 제거합니다.존재하는 경우 다음을 제거할 수 있습니다.
-
log.message.format.version -
inter.broker.protocol.version spec.zookeeper.*속성log.message.format.version및inter.broker.protocol.version을 제거하면 브로커와 컨트롤러가 다시 롤백됩니다. Zoo Cryostat 속성을 제거하면 KRaft-operated 클러스터에 존재하는 Zoo Cryostat 구성과 관련된 경고 메시지가 제거됩니다.
-
마이그레이션에서 롤백 수행
Kafka 리소스에서 KRaft를 활성화하여 마이그레이션이 완료되고 상태가 KRaft 상태로 이동하기 전에 다음과 같이 롤백 작업을 수행할 수 있습니다.
strimzi.io/kraft="rollback"주석을Kafka리소스에 적용하여 브로커를 롤백합니다.oc annotate kafka my-cluster strimzi.io/kraft="rollback" --overwrite
oc annotate kafka my-cluster strimzi.io/kraft="rollback" --overwriteCopy to Clipboard Copied! Toggle word wrap Toggle overflow KRaft 마이그레이션 롤백
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이를 수행하려면 마이그레이션 프로세스가
KRaftPostMigration상태에 있어야 합니다. 브로커가 롤백되어 Zoo Cryostat에 다시 연결할 수 있으며 상태가KRaftDualWriting으로 돌아갑니다.컨트롤러 노드 풀을 삭제합니다.
oc delete KafkaNodePool controller -n my-project
oc delete KafkaNodePool controller -n my-projectCopy to Clipboard Copied! Toggle word wrap Toggle overflow strimzi.io/kraft="disabled"주석을Kafka리소스에 적용하여 메타데이터 상태를 Zoo Cryostat로반환합니다.oc annotate kafka my-cluster strimzi.io/kraft="disabled" --overwrite
oc annotate kafka my-cluster strimzi.io/kraft="disabled" --overwriteCopy to Clipboard Copied! Toggle word wrap Toggle overflow Zoo Cryostat를 사용하여 다시 전환
Copy to Clipboard Copied! Toggle word wrap Toggle overflow