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 つのブローカーを削除する必要があります。例えば、1 回のブローカー削除オペレーションで、2 つのアベイラビリティーゾーンクラスターから 2 つのブローカーを削除したり、3 つのアベイラビリティーゾーンクラスターから 3 つのブローカーを削除したりできます。

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

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

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

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

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

Kafka 管理 APIs または 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

    この例では、、、__amazon_msk_canary、 の 4 つのトピック名が表示されます__consumer_offsets__amazon_msk_connect_offsets_my-mskc-connector_12345678-09e7-c657f7e4ff32-2msk-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. [変更の保存] を選択します。

ブローカーが誤って削除されないように、ブローカーを削除するかどうかを確認するメッセージが表示されます。

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

次のコマンドを実行し、 をクラスターの作成時に取得した Amazon リソースネーム (ARN) ClusterArnに置き換えます。クラスターの 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 Reference」のUpdateBroker「Count」を参照してください。