メタデータ管理 - Amazon Managed Streaming for Apache Kafka

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

メタデータ管理

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

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

ZooKeeper モード

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

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

を使用した Apache ZooKeeper 接続文字列の取得 AWS Management Console

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

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

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

AWS CLIを使用した Apache ZooKeeper 接続文字列の取得

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

  2. 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 接続文字列の取得

API を使用して Apache ZooKeeper 接続文字列を取得するには、「DescribeCluster」を参照してください。

KRaft モード

Amazon MSK では、Kafka バージョン 3.7.x で KRaft (Apache Kafka Raft) のサポートが導入されました。Apache Kafka コミュニティでは、Apache ZooKeeper に代わって Apache Kafka クラスターのメタデータ管理に使用できる KRaft が開発されました。KRaft モードでは、クラスターメタデータは ZooKeeper ノードではなく Kafka クラスターの一部である Kafka コントローラーのグループ内で伝播されます。KRaft コントローラーは追加料金なしで含まれており、追加のセットアップや管理は必要ありません。KRaft の詳細については、「KIP-500」を参照してください。

MSK の KRaft モードに関する注意点をいくつか示します。

  • KRaft モードは、新しいクラスターでのみ使用できます。クラスターが作成されると、メタデータモードを切り替えることはできません。

  • MSK コンソールでは、クラスター作成ウィンドウで Kafka バージョン 3.7.x を選択し、KRaft チェックボックスをオンにすると、Kraft ベースのクラスターを作成できます。

  • MSK API の CreateCluster または CreateClusterV2 オペレーションを使用して KRaft モードでクラスターを作成するには、3.7.x.kraft をバージョンとして使用する必要があります。3.7.x をバージョンとして使用して、ZooKeeper モードでクラスターを作成します。

  • ブローカーあたりのパーティション数は、KRaft ベースのクラスターと ZooKeeper ベースのクラスターで同じです。ただし、KRaft では、クラスターでより多くのブローカーをプロビジョニングすることで、各クラスターでより多くのパーティションをホストできます。

  • 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 バージョン」を参照してください。

  • 使用するすべてのツールが、ZooKeeper 接続なしで Kafka Admin API を使用できることを確認する必要があります。クラスターを Cruise Control に接続する更新された手順については、「Amazon LinkedInで Apache Kafka の Cruise Control を使用する MSK」を参照してください。Cruise Control には、ZooKeeper なしで Cruise Control を実行する手順もあります。

  • 管理アクションのためにクラスターの KRaft コントローラーに直接アクセスする必要はありません。ただし、オープンモニタリングを使用してメトリクスを収集する場合は、クラスターに関するコントローラー関連以外のメトリクスを収集するため、コントローラーの DNS エンドポイントも必要です。これらの DNS エンドポイントは、MSK コンソールから、または ListNodes API オペレーションを使用して取得できます。KRaft ベースのクラスター用にオープンモニタリングを設定する更新された手順については、「Prometheus で MSK プロビジョンドクラスターをモニタリングする」を参照してください。

  • ZooKeeper モードのクラスターを介して KRaft モードのクラスターをモニタリングする必要がある追加の CloudWatch メトリクスはありません。MSK では、クラスターで使用される KRaft コントローラーが管理されます。

  • --bootstrap-server 接続文字列を使用して、KRaft モードのクラスターで ACL の管理を継続できます。ACL の管理に --zookeeper 接続文字列を使用しないでください。「Apache Kafka ACL」を参照してください。

  • KRaft モードでは、クラスターのメタデータは Kafka 内の KRaft コントローラーに保存され、外部の ZooKeeper ノードには保存されません。したがって、ZooKeeper ノードと同様に、コントローラーノードへのアクセスを個別に制御する必要はありません。