View a markdown version of this page

ZooKeeper에서 KRaft 모드로 마이그레이션 - Amazon Managed Streaming for Apache Kafka

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

ZooKeeper에서 KRaft 모드로 마이그레이션

UpdateClusterKafkaVersion API를 사용하여 기존 ZooKeeper 기반 MSK 클러스터를 KRaft 모드로 마이그레이션할 수 있습니다. 마이그레이션은 현재 위치에서 수행됩니다. 클러스터는 프로세스 전반에 걸쳐 계속 사용할 수 있으며 데이터가 이동되지 않습니다. Amazon MSK는 KRaft 컨트롤러를 프로비저닝하고, 클러스터 메타데이터를 ZooKeeper에서 KRaft 쿼럼으로 마이그레이션하고, ZooKeeper 노드를 자동으로 폐기합니다.

사전 조건

클러스터를 ZooKeeper에서 KRaft 모드로 마이그레이션하기 전에 다음을 확인하세요.

  • 클러스터가 ZooKeeper 3.9.x 모드에서 Apache Kafka 버전을 실행 중입니다. 클러스터가 이전 버전인 경우 3.9.x 먼저 표준 버전 업그레이드 프로세스를 사용하여 로 업그레이드합니다.

  • 클러스터가 보류 중인 작업이 없는 ACTIVE 상태입니다.

  • 직접 ZooKeeper 액세스에 의존하는 도구(예: 이전 버전의 Cruise Control 또는 사용자 지정 관리 도구)를 사용하는 경우 직접 ZooKeeper 연결 대신 Kafka Admin APIs 사용하도록 업데이트합니다.

  • 표준(프로비저닝된) 클러스터의 경우: ZooKeeper 클라이언트 액세스를 비활성화해야 합니다. 마이그레이션을 시작하기 ZookeeperAccess.Enabled=false 전에 UpdateConnectivity API를 사용하여를 설정합니다. Express 클러스터에는이 단계가 필요하지 않습니다.

  • 모든 클라이언트 애플리케이션은 --bootstrap-server 연결 문자열이 아닌 --zookeeper 연결 문자열을 사용합니다. 마이그레이션 후에는 ZooKeeper 연결 문자열을 사용할 수 없습니다.

  • 클러스터에 퍼블릭 액세스 및 오픈 모니터링이 동시에 활성화되어 있지 않습니다.

  • 클러스터는 kafka.t3.small브로커 인스턴스를 사용하지 않습니다.

  • 클러스터는 동적 광고 리스너를 사용하지 않습니다. advertised.listeners 속성이 브로커에 동적으로 설정되었는지 확인하려면 다음 명령을 실행합니다. 여기서 $bs는 클러스터의 부트스트랩 서버 연결 문자열이고 출력에가 포함되어 있지 않은지 확인합니다. advertised.listeners

    bin/kafka-configs.sh --bootstrap-server $bs --entity-type brokers --describe

    동적으로 설정된 속성에 대한 자세한 내용은 섹션을 참조하세요Amazon MSK 구성.

마이그레이션 중에 발생하는 일

ZooKeeper-to-KRaft 마이그레이션을 시작하면 Amazon MSK는 다음 단계를 자동으로 수행합니다.

  1. Amazon MSK는 클러스터에 KRaft 컨트롤러 노드를 프로비저닝합니다. 이러한 컨트롤러는 추가 비용 없이 포함됩니다.

  2. 데이터 영역 마이그레이션 실행: 브로커는 클라이언트 트래픽을 계속 처리하면서 메타데이터에 KRaft 쿼럼을 사용하도록 재구성됩니다.

  3. 모든 브로커가 KRaft 쿼럼에 등록되면 Amazon MSK는 ZooKeeper 노드를 폐기합니다.

  4. 클러스터 관리 모드가 KRaft로 업데이트됩니다.

마이그레이션은 클러스터 크기에 따라 몇 시간이 걸릴 수 있는 장기 실행 작업입니다. DescribeClusterOperation API를 사용하여 작업 상태를 모니터링할 수 있습니다.

중요

마이그레이션은 되돌릴 수 없습니다. 클러스터가 KRaft 모드로 마이그레이션되면 ZooKeeper 모드로 다시 전환할 수 없습니다.

를 사용하여 마이그레이션 AWS CLI

  1. 클러스터에 사용할 수 있는 대상 버전을 확인합니다.

    aws kafka get-compatible-kafka-versions --cluster-arn ClusterArn

    클러스터를 마이그레이션할 수 있는 경우 출력에는 KRaft 대상 버전(접.kraft미사 포함)이 포함됩니다.

  2. KRaft 대상 버전을 지정하여 마이그레이션을 시작합니다.

    aws kafka update-cluster-kafka-version \ --cluster-arn ClusterArn \ --current-version Current-Cluster-Version \ --target-kafka-version "3.9.x.kraft"
    중요

    클러스터 버전은 단순한 정수가 아닙니다. DescribeCluster 작업을 사용하여 클러스터의 현재 버전을 찾습니다.

  3. 마이그레이션 진행 상황을 모니터링합니다.

    aws kafka describe-cluster-operation --cluster-operation-arn ClusterOperationArn

    작업 상태는를 통해 전환UPDATE_IN_PROGRESS되고 로 완료됩니다UPDATE_COMPLETE.

마이그레이션 후

마이그레이션이 완료된 후:

  • 클러스터는 KRaft 모드에서 작동합니다. 모든 메타데이터는 KRaft 컨트롤러에서 관리합니다.

  • ZooKeeper 노드가 제거됩니다. ZooKeeper 연결 문자열을 더 이상 사용할 수 없습니다.

  • 클라이언트 애플리케이션은 --bootstrap-server 연결 문자열을 사용하는 경우 변경 없이 계속 작동합니다.

  • 개방형 모니터링을 위해 필요한 경우 ListNodes API를 사용하여 KRaft 컨트롤러 엔드포인트를 볼 수 있습니다.