Amazon MSK クラスターからブローカーを削除する - Amazon Managed Streaming for Apache Kafka

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon MSK クラスターからブローカーを削除する

Amazon Managed Streaming for Apache Kafka (MSK) のプロビジョニングされたクラスターからブローカーを削除する場合は、この Amazon MSK オペレーションを使用します。一連のブローカーを削除することで、可用性への影響、データ耐久性のリスク、データストリーミングアプリケーションの中断なしに、クラスターのストレージとコンピューティング容量を減らすことができます。

クラスターにブローカーを追加してトラフィックの増加に対処し、トラフィックが沈静化したときにブローカーを削除できます。ブローカーの追加および削除機能を使用すると、クラスター容量を最大限に活用し、MSK インフラストラクチャのコストを最適化できます。ブローカーを削除することで、ワークロードのニーズに合わせて既存のクラスター容量をブローカーレベルで制御し、別のクラスターへの移行を回避できます。

AWS コンソール、コマンドラインインターフェイス (CLI)、 SDK、または を使用して、プロビジョニングされたクラスターのブローカー数 AWS CloudFormation を減らします。MSK では、パーティションを持たないブローカー (canary トピックを除く) を選択し、アプリケーションがそれらのブローカーにデータを生成できないようにしながら、それらのブローカーをクラスターから安全に削除します。

クラスターのストレージとコンピューティングを減らす場合、アベイラビリティーゾーンごとに 1 つのブローカーを削除する必要があります。例えば、2 つのアベイラビリティーゾーンのクラスターから 2 つのブローカーを削除するか、単一のブローカー削除オペレーションで 3 つのアベイラビリティーゾーンのクラスターから 3 つのブローカーを削除できます。

クラスターからブローカーを削除した後にパーティションを再調整する方法については、「パーティションの再割り当て」を参照してください。

インスタンスサイズに関係なく、M5 および M7g ベースのプロビジョニングされた MSK クラスターからブローカーを削除できます。

ブローカーの削除は、KRaft モードのクラスターを含む Kafka バージョン 2.8.1 以降でサポートされています。

すべてのパーティションを削除してブローカーを削除する準備をする

ブローカーを削除するプロセスを開始する前に、まず削除する予定のブローカーからトピック __amazon_msk_canary および __amazon_msk_canary_state のパーティションを除くすべてのパーティションを移動します。これらは Amazon MSK によって作成される、クラスターのヘルスと診断メトリクス用の内部トピックです。

Kafka Admin API または Cruise Control を使用して、クラスターに保持する予定の他のブローカーにパーティションを移動できます。「パーティションの再割り当て」を参照してください。

パーティションを削除するプロセスの例

このセクションでは、削除するブローカーからパーティションを削除する方法の例を示します。各 AZ に 6 つのブローカーと 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

    この例では、4 つのトピック名 __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. 各パーティションでパーティションの再割り当てが完了したことがステータスで示されたら、UserPartitionExists メトリクスを 5 分間モニタリングして、パーティションを移動したブローカーに 0 が表示されることを確認します。これを確認したら、クラスターからブローカーを削除できます。

AWS マネジメントコンソールを使用してブローカーを削除する

AWS マネジメントコンソールでブローカーを削除するには
  1. https://console.aws.amazon.com/msk/ で Amazon MSK コンソールを開きます。

  2. 削除するブローカーを含む MSK クラスターを選択します。

  3. クラスターの詳細ページで、[アクション] ボタンを選択し、[ブローカーの数の編集] オプションを選択します。

  4. クラスターでアベイラビリティーゾーンごとに持つブローカーの数を入力します。コンソールでは、削除するアベイラビリティーゾーン全体のブローカーの数がまとめられます。内容が正しいことを確認してください。

  5. [Save changes] (変更の保存) をクリックします。

ブローカーの偶発的な削除を防ぐため、コンソールではブローカーの削除について確認するよう求められます。

CLI AWS を使用してブローカーを削除する

ClusterArn をクラスターの作成時に取得した Amazon リソースネーム (ARN) に置き換え、次のコマンドを実行します。クラスターの ARN がない場合は、すべてのクラスターを一覧表示することで見つけられます。詳細については、「Amazon MSK クラスターを一覧表示する」を参照してください。Current-Cluster-Version を現在のクラスターのバージョンに置き換えます。

重要

クラスターのバージョンは単純な整数ではありません。クラスターの最新バージョンを確認するには、DescribeCluster オペレーションまたは describe-cluster AWS CLI コマンドを使用します。サンプルのバージョンは KTVPDKIKX0DER です。

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 を使用してブローカーを削除する

API を使用してクラスター内のブローカーを削除するには、「Amazon Managed Streaming for Apache Kafka API リファレンス」の「UpdateBrokerCount」を参照してください。