

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

# メタデータ管理
<a name="metadata-management"></a>

Amazon MSK では、Apache ZooKeeper または KRaft メタデータ管理モードがサポートされています。

Amazon MSK の Apache Kafka バージョン 3.7.x から、ZooKeeper モードの代わりに KRaft モードを使用するクラスターを作成できます。KRaft ベースのクラスターは、メタデータを管理する際に Kafka 内のコントローラーに依存します。

**Topics**
+ [ZooKeeper モード](#msk-get-connection-string)
+ [KRaft モード](#kraft-intro)

## ZooKeeper モード
<a name="msk-get-connection-string"></a>

[Apache ZooKeeper](https://zookeeper.apache.org/) は、設定情報の維持、名前付け、分散化された同期の提供、およびグループサービスを提供する一元化されたサービスです。これらの種類のサービスはすべて、Apache Kafka を含む分散アプリケーションによって何らかの形で使用されます。

クラスターが ZooKeeper モードを使用している場合は、以下の手順を使用して Apache ZooKeeper 接続文字列を取得できます。ただし、Kafka 2.5 で `--zookeeper` フラグが非推奨になり、Kafka 3.0 から削除されたため、`BootstrapServerString` を使用してクラスターに接続し、管理オペレーションを実行することをお勧めします。

### を使用して Apache ZooKeeper 接続文字列を取得する AWS マネジメントコンソール
<a name="get-connection-string-console"></a>

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

1. このテーブルには、このアカウントにある現在のリージョンのすべてのクラスターが表示されます。説明を表示するには、クラスターの名前を選択します。

1. **[Cluster summary]** (クラスターの概要) ページで、**[View client information]** (クライアント情報の表示) を選択します。これにより、ブートストラップブローカーと Apache ZooKeeper 接続文字列が表示されます。

### を使用して Apache ZooKeeper 接続文字列を取得する AWS CLI
<a name="get-connection-string-cli"></a>

1. クラスターの Amazon リソースネーム (ARN) がわからない場合は、アカウント内のすべてのクラスターを一覧表示することで見つけることができます。詳細については、「[Amazon MSK クラスターを一覧表示する](msk-list-clusters.md)」を参照してください。

1. Apache ZooKeeper 接続文字列とクラスターに関するその他の情報を取得するには、*ClusterArn* をクラスターの ARN に置き換えて次のコマンドを実行します。

   ```
   aws kafka describe-cluster --cluster-arn ClusterArn
   ```

   この `describe-cluster` コマンドの出力は、次の JSON の例のようになります。

   ```
   {
       "ClusterInfo": {
           "BrokerNodeGroupInfo": {
               "BrokerAZDistribution": "DEFAULT",
               "ClientSubnets": [
                   "subnet-0123456789abcdef0",
                   "subnet-2468013579abcdef1",
                   "subnet-1357902468abcdef2"
               ],
               "InstanceType": "kafka.m5.large",
               "StorageInfo": {
                   "EbsStorageInfo": {
                       "VolumeSize": 1000
                   }
               }
           },
           "ClusterArn": "arn:aws:kafka:us-east-1:111122223333:cluster/testcluster/12345678-abcd-4567-2345-abcdef123456-2",
           "ClusterName": "testcluster",
           "CreationTime": "2018-12-02T17:38:36.75Z",
           "CurrentBrokerSoftwareInfo": {
               "KafkaVersion": "2.2.1"
           },
           "CurrentVersion": "K13V1IB3VIYZZH",
           "EncryptionInfo": {
               "EncryptionAtRest": {
                   "DataVolumeKMSKeyId": "arn:aws:kms:us-east-1:555555555555:key/12345678-abcd-2345-ef01-abcdef123456"
               }
           },
           "EnhancedMonitoring": "DEFAULT",
           "NumberOfBrokerNodes": 3,
           "State": "ACTIVE",
           "ZookeeperConnectString": "10.0.1.101:2018,10.0.2.101:2018,10.0.3.101:2018"
       }
   }
   ```

   前述の JSON の例では、`describe-cluster` コマンドの出力の `ZookeeperConnectString` キーを示しています。クラスターにトピックを作成する必要がある場合に備え、このキーに対応する値をコピーして保存します。
**重要**  
Apache ZooKeeper 接続文字列を取得できるようにするには、Amazon MSK クラスターが `ACTIVE` の状態である必要があります。クラスターがまだ `CREATING` 状態である場合、`describe-cluster` コマンドの出力に `ZookeeperConnectString` は含まれません。このような場合、数分待ってから、クラスターが `ACTIVE` 状態になった後に `describe-cluster` を再度実行します。

### API を使用した Apache ZooKeeper 接続文字列の取得
<a name="get-connection-string-api"></a>

API を使用して Apache ZooKeeper 接続文字列を取得するには、「[DescribeCluster](https://docs.aws.amazon.com//msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster)」を参照してください。

## KRaft モード
<a name="kraft-intro"></a>

Amazon MSK では、Kafka バージョン 3.7.x で KRaft (Apache Kafka Raft) のサポートが導入されました。Apache Kafka コミュニティでは、[Apache ZooKeeper](#msk-get-connection-string) に代わって Apache Kafka クラスターのメタデータ管理に使用できる KRaft が開発されました。KRaft モードでは、クラスターメタデータは ZooKeeper ノードではなく Kafka クラスターの一部である Kafka コントローラーのグループ内で伝播されます。KRaft コントローラーは追加料金なしで含まれており、追加のセットアップや管理は必要ありません。KRaft の詳細については、「[KIP-500](https://cwiki.apache.org/confluence/display/KAFKA/KIP-500%3A+Replace+ZooKeeper+with+a+Self-Managed+Metadata+Quorum)」を参照してください。

MSK の KRaft モードに関する注意点をいくつか示します。
+ KRaft モードは、新しいクラスターでのみ使用できます。クラスターが作成されると、メタデータモードを切り替えることはできません。
+ MSK コンソールでは、クラスター作成ウィンドウで Kafka バージョン 3.7.x を選択し、KRaft チェックボックスをオンにすると、Kraft ベースのクラスターを作成できます。
+ MSK API の [https://docs.aws.amazon.com/msk/1.0/apireference/clusters.html#CreateCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters.html#CreateCluster) または [https://docs.aws.amazon.com/MSK/2.0/APIReference/v2-clusters.html#CreateClusterV2](https://docs.aws.amazon.com/MSK/2.0/APIReference/v2-clusters.html#CreateClusterV2) オペレーションを使用して Kraft モードでクラスターを作成するには、`3.7.x.kraft` をバージョンとして指定する必要があります。`3.7.x` をバージョンとして使用して、ZooKeeper モードでクラスターを作成します。
+ ブローカーあたりのパーティション数は、KRaft ベースのクラスターと ZooKeeper ベースのクラスターで同じです。ただし、KRaft では、[クラスターでより多くのブローカー](https://docs.aws.amazon.com/msk/latest/developerguide/limits.html)をプロビジョニングすることで、各クラスターでより多くのパーティションをホストできます。
+ Amazon MSK で KRaft モードを使用するために必要な API の変更はありません。ただし、クライアントが現在も `--zookeeper` 接続文字列を使用している場合は、`--bootstrap-server` 接続文字列を使用してクラスターに接続するようにクライアントを更新する必要があります。`--zookeeper` フラグは Apache Kafka 2.5 で非推奨になり、Kafka 3.0 以降では削除されています。そのため、クラスターへのすべての接続には、最新の Apache Kafka クライアントバージョンと `--bootstrap-server` 接続文字列を使用することをお勧めします。
+ ZooKeeper モードは、ZooKeeper もサポートされているすべての Apache Kafka リリースバージョンで引き続き使用できます。Apache Kafka バージョンのサポート終了と今後の更新の詳細については、「[サポート対象の Apache Kafka バージョン](supported-kafka-versions.md)」を参照してください。
+ 使用するすべてのツールが、ZooKeeper 接続なしで Kafka Admin API を使用できることを確認する必要があります。クラスターを Cruise Control に接続する更新された手順については、「[LinkedIn の Cruise Control for Apache Kafka を Amazon MSK で使用する](cruise-control.md)」を参照してください。Cruise Control には、[ZooKeeper なしで Cruise Control を実行する](https://github.com/linkedin/cruise-control/wiki/Run-without-ZooKeeper)手順もあります。
+ 管理アクションのためにクラスターの KRaft コントローラーに直接アクセスする必要はありません。ただし、オープンモニタリングを使用してメトリクスを収集する場合は、クラスターに関するコントローラー関連以外のメトリクスを収集するため、コントローラーの DNS エンドポイントも必要です。これらの DNS エンドポイントは、MSK コンソールから、または [ListNodes](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-nodes.html#ListNodes) API オペレーションを使用して取得できます。KRaft ベースのクラスター用にオープンモニタリングを設定する更新された手順については、「[Prometheus で MSK プロビジョンドクラスターをモニタリングする](open-monitoring.md)」を参照してください。
+ ZooKeeper モードのクラスターを介して KRaft モードのクラスターをモニタリングする必要がある追加の [CloudWatch メトリクス](https://docs.aws.amazon.com/msk/latest/developerguide/metrics-details.html)はありません。MSK では、クラスターで使用される KRaft コントローラーが管理されます。
+ `--bootstrap-server` 接続文字列を使用して、KRaft モードのクラスターで ACL の管理を継続できます。ACL の管理に `--zookeeper` 接続文字列を使用しないでください。「[Apache Kafka ACL](msk-acls.md)」を参照してください。
+ KRaft モードでは、クラスターのメタデータは Kafka 内の KRaft コントローラーに保存され、外部の ZooKeeper ノードには保存されません。したがって、[ZooKeeper ノードと同様に](https://docs.aws.amazon.com/msk/latest/developerguide/zookeeper-security.html)、コントローラーノードへのアクセスを個別に制御する必要はありません。