Amazon Managed Streaming for Apache Kafka(Amazon MSK) 클러스터를 업그레이드할 때 문제를 해결해야 합니다.
해결 방법
고려 사항 및 모범 사례
Amazon MSK 클러스터를 업그레이드하기 전에 다음 사항에 유의하세요.
-
클러스터의 복제 계수를 3 이상의 값으로 설정해야 합니다.
복제 계수를 1로 설정하면 롤링 업데이트 중에 오프라인 파티션이 발생할 수 있습니다.
복제 계수를 2로 설정하면 데이터가 손실될 수 있습니다.
-
최소 동기화 복제본(minISR)을 (복제 계수 - 1) 이하의 값으로 설정합니다.
복제 계수와 같은 minISR 값은 롤링 업데이트 중에 클러스터에 생성하지 못할 수 있습니다.
minISR이 2이면 하나의 복제본이 오프라인 상태일 때 3방향으로 복제된 토픽을 사용할 수 있습니다.
-
클라이언트 연결 문자열에 각 가용성 영역의 브로커가 하나 이상 포함되어 있는지 확인하세요.
클라이언트의 연결 문자열에 여러 브로커가 있으면 특정 브로커가 업데이트를 위해 오프라인 상태일 때 장애 조치할 수 있습니다.
-
클러스터 구성을 업데이트하기 전에 클러스터가 활성 상태인지 확인하세요.
-
트래픽이 적은 시간에 클러스터를 업그레이드하는 것이 가장 좋습니다.
Apache Kafka 버전을 업그레이드하는 데 필요한 시간은 클러스터의 브로커 수에 따라 다릅니다.
-
클러스터 버전을 업그레이드하는 동안에는 클러스터에 다른 업데이트를 수행할 수 없습니다.
업그레이드하는 동안에도 클러스터에서 계속 생성 및 소비할 수 있습니다.
-
복제 계수가 3 미만인 토픽(예: 복제 계수가 3 미만인 토픽)을 제외하고는 업그레이드 중에 데이터가 손실될 위험이 없습니다.
이 상황에서도 브로커가 온라인 상태가 되면 파티션을 다시 사용할 수 있습니다.
-
Amazon MSK 콘솔 또는 AWS Command Line Interface(AWS CLI)를 통해 Amazon MSK 클러스터의 Apache Kafka 버전을 업데이트할 수 있습니다.
-
Amazon MSK 클러스터를 최신 버전의 Apache Kafka로 업데이트할 수 있습니다.
이전 버전으로는 업데이트할 수 없습니다.
-
Amazon MSK는 서버 소프트웨어만 업데이트하고 클라이언트는 업데이트하지 않습니다.
따라서 클러스터를 업그레이드할 때 클라이언트 소프트웨어 버전으로 새 Apache Kafka 버전의 기능을 사용할 수 있는지 확인해야 합니다.
-
인스턴스 유형을 업데이트해도 클러스터 버전은 업그레이드되지 않습니다.
업그레이드 모니터링
Amazon MSK 클러스터를 생성할 때, 클러스터에 필요한 Apache Kafka 버전을 지정합니다.
클러스터를 생성한 후 다음을 수행하여 클러스터를 최신 버전의 Apache Kafka로 업데이트할 수도 있습니다.
-
Amazon MSK 콘솔을 엽니다.
-
업그레이드할 클러스터를 선택합니다.
-
속성 탭의 Apache Kafka 버전 섹션에서 업그레이드를 선택합니다.
자세한 내용은 Apache Kafka 버전 업데이트를 참조하세요.
클러스터 작업 탭에서 업데이트 진행 상황을 모니터링할 수 있습니다. 이 탭에서 업그레이드 초기화, Apache Kafka 버전 업데이트 중, 업그레이드 마무리 등 업그레이드의 각 단계를 모니터링할 수 있습니다.
업그레이드가 17%에 도달하면 업그레이드가 완료되는 데 몇 시간이 걸릴 수 있습니다. Amazon MSK는 순차적으로 업그레이드를 수행한다는 점에 유의하세요. 한 번에 하나의 브로커가 클러스터에서 제거되고 해당 Kafka 버전이 업그레이드됩니다.
다음 브로커가 제거되면 이 브로커가 다시 참여합니다.
이 프로세스는 마지막 브로커가 새 Kafka 버전으로 업그레이드될 때까지 계속됩니다.
일반적인 오류 문제 해결
클러스터 구성 업데이트 중 오류 클러스터 구성을 업데이트하는 동안 문제가 발생했습니다.
문제가 지속되면 AWS Support에 문의하세요.
브로커당 파티션 수가 권장 제한을 초과했습니다.
브로커를 더 추가하고 브로커당 파티션을 권장 한도 이하로 다시 정렬한 다음 요청을 다시 시도하세요.
-또는-
업그레이드가 '업그레이드 초기화' 단계에서 멈췄습니다.
브로커당 파티션 수가 권장값을 초과할 때 이 오류가 발생합니다.
브로커에서 파티션 처리는 리소스 집약적인 워크로드입니다.
파티션 수가 권장 제한보다 많으면 클러스터의 사용 가능한 리소스에 부담을 줄 수 있습니다.
이 상황에서는 클러스터에서 다음 작업을 수행할 수 없습니다.
이 오류를 해결하려면 다음을 시도해 보세요.
-
클러스터 내의 브로커 수를 늘립니다.
그런 다음 파티션을 재할당하여 브로커당 파티션 수를 줄입니다.
Amazon CloudWatch 지표를 사용하여 브로커당 파티션 수를 확인합니다.
파티션 수는 복제본을 포함하여 브로커당 토픽 파티션의 총 수입니다.
기본적으로 토픽당 파티션 수는 1이고 복제 계수는 3-AZ 클러스터의 경우 3입니다.
따라서 복제 계수 3에는 메인 파티션이 포함되므로 토픽당 3개의 파티션이 있습니다.
동일한 클러스터의 다른 브로커로 파티션을 이동하려면 kafka-reassign-partitions.sh라는 파티션 재할당 도구를 사용할 수 있습니다.
-
사용하지 않는 토픽을 삭제하여 파티션 수를 줄이세요.
다음 명령을 사용하여 클러스터의 모든 토픽을 파티션 수와 함께 확인할 수 있습니다.
명령을 실행하기 전에 Amazon Elastic Compute Cloud(Amazon EC2) 머신에서 Apache Kafka 클라이언트를 설정해야 합니다.
bin/kafka-topics.sh —bootstrap-server localhost:9092 —describe —topic test