Amazon MSK 클러스터에서 브로커 제거 - Amazon Managed Streaming for Apache Kafka

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

Amazon MSK 클러스터에서 브로커 제거

Amazon Managed Streaming for Apache MSK Kafka () 프로비저닝된 클러스터에서 브로커를 제거하려는 경우 이 Amazon MSK 작업을 사용하십시오. 가용성 영향, 데이터 내구성 위험 또는 데이터 스트리밍 애플리케이션 중단 없이 브로커 세트를 제거하여 클러스터의 스토리지 및 컴퓨팅 파워를 줄일 수 있습니다.

클러스터에 더 많은 브로커를 추가하여 트래픽 증가를 처리하고, 트래픽이 줄어들면 브로커를 제거할 수 있습니다. 브로커 추가 및 제거 기능을 사용하면 클러스터 용량을 최대한 활용하고 인프라 비용을 최적화할 MSK 수 있습니다. 브로커 제거를 통해 기존 클러스터 용량을 브로커 수준에서 제어하여 워크로드 요구 사항에 맞추고 다른 클러스터로 마이그레이션하지 않아도 됩니다.

AWS 콘솔, 명령줄 인터페이스 (CLI) 를 사용하거나 SDK 프로비저닝된 클러스터의 브로커 수를 AWS CloudFormation 줄이십시오. MSK파티션이 없는 브로커 (카나리아 주제 제외) 를 선택하여 애플리케이션이 해당 브로커에 데이터를 생성하지 못하도록 하는 동시에 클러스터에서 해당 브로커를 안전하게 제거합니다.

클러스터의 스토리지와 컴퓨팅을 줄이려면 가용 영역당 하나의 브로커를 제거해야 합니다. 예를 들어 한 번의 브로커 제거 작업으로 2개의 가용 영역 클러스터에서 두 개의 브로커를 제거하거나 세 개의 가용 영역 클러스터에서 세 개의 브로커를 제거할 수 있습니다.

클러스터에서 브로커를 제거한 후 파티션을 재조정하는 방법에 대한 자세한 내용은 을 참조하십시오. 파티션 재할당

인스턴스 크기에 관계없이 모든 M5 및 M7G 기반 MSK 프로비저닝 클러스터에서 브로커를 제거할 수 있습니다.

브로커 제거는 온모드 클러스터를 포함하여 Kafka 버전 2.8.1 이상에서 지원됩니다. KRaft

모든 파티션을 제거하여 브로커 제거를 준비하십시오.

브로커 제거 프로세스를 시작하기 전에 먼저 주제 __amazon_msk_canary 파티션과 __amazon_msk_canary_state 제거하려는 브로커의 파티션을 제외한 모든 파티션을 이동하십시오. 이는 Amazon이 클러스터 상태 및 진단 지표를 위해 MSK 생성하는 내부 주제입니다.

Kafka admin APIs 또는 Cruise Control을 사용하여 클러스터에 유지하려는 다른 브로커로 파티션을 이동할 수 있습니다. 파티션 재할당을 참조하십시오.

파티션 제거 프로세스 예시

이 섹션은 제거하려는 브로커에서 파티션을 제거하는 방법의 예입니다. 브로커 6개, 각 AZ에 브로커 2개가 있는 클러스터가 있고 토픽이 4개라고 가정해 보겠습니다.

  • __amazon_msk_canary

  • __consumer_offsets

  • __amazon_msk_connect_offsets_my-mskc-connector_12345678-09e7-c657f7e4ff32-2

  • msk-brk-rmv

  1. 클라이언트 컴퓨터 생성에 설명된 대로 클라이언트 컴퓨터를 생성합니다.

  2. 클라이언트 컴퓨터를 구성한 후 다음 명령을 실행하여 클러스터에서 사용 가능한 모든 항목을 나열합니다.

    ./bin/kafka-topics.sh --bootstrap-server “CLUSTER_BOOTSTRAP_STRING” --list

    이 예제에서는 네 개의 주제 이름,,, __amazon_msk_canary __consumer_offsets__amazon_msk_connect_offsets_my-mskc-connector_12345678-09e7-c657f7e4ff32-2, 를 볼 수 msk-brk-rmv 있습니다.

  3. 클라이언트 topics.json 시스템에서 호출되는 json 파일을 만들고 다음 코드 예제와 같이 모든 사용자 주제 이름을 추가합니다. 이 주제는 서비스 관리형 __amazon_msk_canary 주제이므로 필요할 때 자동으로 이동되므로 주제 이름을 포함할 필요가 없습니다.

    { "topics": [ {"topic": "msk-brk-rmv"}, {"topic": "__consumer_offsets"}, {"topic": "__amazon_msk_connect_offsets_my-mskc-connector_12345678-09e7-c657f7e4ff32-2"} ], "version":1 }
  4. 다음 명령을 실행하여 클러스터의 6개 브로커 중 3개의 브로커로만 파티션을 이동하는 제안을 생성하십시오.

    ./bin/kafka-reassign-partitions.sh --bootstrap-server “CLUSTER_BOOTSTRAP_STRING” --topics-to-move-json-file topics.json --broker-list 1,2,3 --generate
  5. 라는 파일을 만들고 위의 reassignment-file.json 명령에서 가져온 proposed partition reassignment configuration 것을 복사합니다.

  6. 다음 명령을 실행하여 에서 지정한 파티션을 이동합니다reassignment-file.json.

    ./bin/kafka-reassign-partitions.sh --bootstrap-server “CLUSTER_BOOTSTRAP_STRING” --reassignment-json-file reassignment-file.json --execute

    출력 결과는 다음과 비슷합니다:

    Successfully started partition reassignments for morpheus-test-topic-1-0,test-topic-1-0
  7. 다음 명령을 실행하여 모든 파티션이 이동되었는지 확인합니다.

    ./bin/kafka-reassign-partitions.sh --bootstrap-server “CLUSTER_BOOTSTRAP_STRING” --reassignment-json-file reassignment-file.json --verify

    출력 결과는 다음과 비슷합니다. 요청한 항목의 모든 파티션이 성공적으로 재할당될 때까지 상태를 모니터링하세요.

    Status of partition reassignment: Reassignment of partition msk-brk-rmv-0 is completed. Reassignment of partition msk-brk-rmv-1 is completed. Reassignment of partition __consumer_offsets-0 is completed. Reassignment of partition __consumer_offsets-1 is completed.
  8. 상태에 따라 각 파티션의 파티션 재할당이 완료되었다고 표시되면 5분 동안 UserPartitionExists 지표를 모니터링하여 파티션을 이동한 0 브로커에 대해 표시되는지 확인하십시오. 이를 확인한 후 클러스터에서 브로커 제거를 진행할 수 있습니다.

AWS 관리 콘솔을 사용하여 브로커를 제거합니다.

관리 콘솔을 AWS 사용하여 브로커를 제거하려면
  1. 에서 Amazon MSK 콘솔을 엽니다 https://console.aws.amazon.com/msk/.

  2. 제거하려는 브로커가 포함된 MSK 클러스터를 선택합니다.

  3. 클러스터 세부 정보 페이지에서 작업 버튼을 선택하고 브로커 수 편집 옵션을 선택합니다.

  4. 가용 영역당 클러스터에 배치하려는 브로커 수를 입력합니다. 콘솔은 가용 영역 전체에서 제거될 브로커 수를 요약합니다. 원하는 것이 맞는지 확인해 보세요.

  5. Save changes(변경 사항 저장)를 선택합니다.

실수로 브로커가 제거되는 것을 방지하기 위해 콘솔은 브로커 삭제를 확인하라는 메시지를 표시합니다.

다음을 사용하여 브로커를 제거하십시오. AWS CLI

클러스터를 생성할 때 얻은 Amazon 리소스 이름 (ARN) ClusterArn 으로 대체하여 다음 명령을 실행합니다. ARN클러스터용 파일이 없는 경우 모든 클러스터를 나열하여 찾을 수 있습니다. 자세한 내용은 Amazon MSK 클러스터 리스팅을 참조하십시오. 클러스터의 현재 버전으로 Current-Cluster-Version 교체하십시오.

중요

클러스터 버전은 단순한 정수가 아닙니다. 클러스터의 현재 버전을 찾으려면 DescribeCluster작업 또는 AWS CLI describe-cluster 명령을 사용합니다. 버전의 예를 들면 KTVPDKIKX0DER입니다.

The Target-Number-of-Brokers 파라미터는 이 작업이 성공적으로 완료될 때 클러스터에 보유할 브로커 노드의 총 수를 나타냅니다. 지정한 값 Target-Number-of-Brokers 클러스터의 현재 브로커 수보다 작은 정수여야 합니다. 또한 가용 영역 수의 배수여야 합니다.

aws kafka update-broker-count --cluster-arn ClusterArn --current-version Current-Cluster-Version --target-number-of-broker-nodes Target-Number-of-Brokers

update-broker-count 작업의 출력은 다음과 JSON 같습니다.

{ "ClusterOperationInfo": { "ClientRequestId": "c0b7af47-8591-45b5-9c0c-909a1a2c99ea", "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2", "CreationTime": "2019-09-25T23:48:04.794Z", "OperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef", "OperationState": "UPDATE_COMPLETE", "OperationType": "DECREASE_BROKER_COUNT", "SourceClusterInfo": { "NumberOfBrokerNodes": 12 }, "TargetClusterInfo": { "NumberOfBrokerNodes": 9 } } }

이 출력에서 OperationTypeDECREASE_BROKER_COUNT입니다. OperationState 값이 UPDATE_IN_PROGRESS인 경우, 잠시 기다린 다음 describe-cluster-operation 명령을 다시 실행합니다.

를 사용하여 브로커를 제거합니다. AWS API

를 사용하여 클러스터에서 브로커를 제거하려면 Apache API UpdateBrokerCountKafka용 Amazon 관리형 스트리밍 참조 자료를 참조하십시오. API