

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

# Amazon MSK クラスターからブローカーを削除する
<a name="msk-remove-broker"></a>

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

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

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

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

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

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

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

**Topics**
+ [ブローカーのパーティションを削除する](#msk-remove-broker-partitions)
+ [コンソールを使用してブローカーを削除する](#msk-remove-broker-console)
+ [CLI を使用してブローカーを削除する](#msk-remove-broker-cli)
+ [API を使用してブローカーを削除する](#msk-remove-broker-api)

## すべてのパーティションを削除してブローカーを削除する準備をする
<a name="msk-remove-broker-partitions"></a>

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

Kafka Admin API または Cruise Control を使用して、クラスターに保持する予定の他のブローカーにパーティションを移動できます。「[パーティションの再割り当て](https://docs.aws.amazon.com/msk/latest/developerguide/bestpractices.html#bestpractices-balance-cluster)」を参照してください。

### パーティションを削除するプロセスの例
<a name="msk-remove-broker-partitions-example"></a>

このセクションでは、削除するブローカーからパーティションを削除する方法の例を示します。各 AZ に 6 つのブローカーと 2 つのブローカーを持つクラスターがあり、次の 4 つのトピックがあるとします。
+ `__amazon_msk_canary`
+ `__consumer_offsets`
+ `__amazon_msk_connect_offsets_my-mskc-connector_12345678-09e7-c657f7e4ff32-2`
+ `msk-brk-rmv`

1. 「[クライアントマシンを作成する](https://docs.aws.amazon.com/msk/latest/developerguide/create-client-machine.html)」の説明に従って、クライアントマシンを作成します。

1. クライアントマシンを設定したら、次のコマンドを実行して、クラスターで使用可能なすべてのトピックを一覧表示します。

   ```
   ./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` が表示されます。

1. クライアントマシンで `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
   }
   ```

1. 次のコマンドを実行して、クラスター上の 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
   ```

1. `reassignment-file.json` というファイルを作成し、上記のコマンドから取得した `proposed partition reassignment configuration` をコピーします。

1. 次のコマンドを実行して、`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
   ```

1. 次のコマンドを実行して、すべてのパーティションが移動したことを確認します。

   ```
   ./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.
   ```

1. 各パーティションでパーティションの再割り当てが完了したことがステータスで示されたら、`UserPartitionExists` メトリクスを 5 分間モニタリングして、パーティションを移動したブローカーに `0` が表示されることを確認します。これを確認したら、クラスターからブローカーを削除できます。

## AWS マネジメントコンソールでブローカーを削除する
<a name="msk-remove-broker-console"></a>

**AWS マネジメントコンソールでブローカーを削除するには**

1. [https://console.aws.amazon.com/msk/](https://console.aws.amazon.com/msk/) で Amazon MSK コンソールを開きます。

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

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

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

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

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

## CLI AWS を使用してブローカーを削除する
<a name="msk-remove-broker-cli"></a>

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

**重要**  
クラスターのバージョンは単純な整数ではありません。クラスターの最新バージョンを検索するには、[DescribeCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster) オペレーションまたは [describe-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kafka/describe-cluster.html) 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
        }
    }
}
```

この出力では、`OperationType` は `DECREASE_BROKER_COUNT` です。`OperationState` の値が `UPDATE_IN_PROGRESS` の場合は、しばらく待ってから再度 `describe-cluster-operation` コマンドを実行します。

## AWS API を使用してブローカーを削除する
<a name="msk-remove-broker-api"></a>

API を使用してクラスター内のブローカーを削除するには、*「Amazon Managed Streaming for Apache Kafka API リファレンス」*の「[UpdateBrokerCount](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-nodes-count.html#clusters-clusterarn-nodes-count-url)」を参照してください。