Managed Service for Apache Kafka の概要

Managed Service for Apache Kafka は、安全で スケーラブルなオープンソースの Apache Kafka クラスタの実行に役立つ Google Cloud サービスです。このページでは、このサービスによって自動化および簡素化される内容の概要について説明します。Apache Kafka の詳細については、Apache Kafka ウェブサイトをご覧ください。

シンプルなサイズ設定とスケーリング

Managed Service for Apache Kafka クラスタを作成するときに、クラスタの合計 vCPU 数とメモリを指定します。サービスは、vCPU 数に基づいてブローカーの数を自動的にプロビジョニングします。

クライアントの要求に対応するため、リソース使用率をモニタリングし、必要に応じて vCPU 数とメモリを更新してクラスタをスケーリングできます。クラスタをスケールアップすると、追加のブローカーがプロビジョニングされることがあります。クラスタサイズを大きくするために新しいブローカーが必要な場合、サービスはブローカー間でパーティションを自動的に再調整できます。

クラスタサイズの選択については、 Kafka クラスタのサイズを計画するをご覧ください。

ストレージ管理

Managed Service for Apache Kafka は 階層化ストレージを使用します。 階層化ストレージは、次の 2 つのストレージ階層を組み合わせたものです。

  • ブローカーに接続された 事前プロビジョニングされたディスクの形式の、高速なローカル ストレージの容量は限られています。
  • 事実上無制限の リモート ストレージ。リモート ストレージは低コストで、事前プロビジョニングする必要はありません。

階層化ストレージ システムを使用すると、ディスク容量が不足するリスクを軽減しながら、大量のデータを保存できます。また、ローカル ストレージのみを使用するよりもコストを抑えることができます。

費用を管理したり、データ保持ポリシーを満たしたりするには、個々のトピックに 保持期間を 設定する必要があります。

柔軟なネットワーキング

このサービスにより、任意の VPC からクラスタに安全にアクセスできます。これには、複数の VPC、プロジェクト、リージョンからのアクセスが含まれます。

クラスタのネットワーキングを構成するには、クラスタがアクセスできるサブネットのセットを指定します。サービスは、各サブネットのブートストラップ サーバーとブローカーにプライベート IP アドレスをプロビジョニングします。また、各 IP アドレスの URL を使用してプライベート Cloud DNS を設定します。ブートストラップ サーバーにはロードバランサがあるため、クラスタごとに 1 つのブートストラップ URL があります。URL はすべての VPC で同じであるため、環境間でクライアント構成を統一できます。

このレベルの柔軟性は、Private Service Connect(PSC)によって実現されます。クラスタに割り当てられた各 IP アドレスには、PSC エンドポイントが必要です。エンドポイントは自動的にプロビジョニングされます。

クラスタの保護

このサービスには、クラスタのセキュリティのための認証、認可、暗号化、パッチ適用、リソース分離の機能があります。また、認証されていない接続と暗号化されていない接続、ストレージは許可されません。

認証

このサービスは、SASL(Simple Authentication and Security Layer)と相互 TLS(mTLS)の 2 つの認証方法をサポートしています。mTLS 認証は、2025 年 6 月 24 日以降に作成されたクラスタで使用できます。マネージド クラスタへのすべての 接続は、SASL を使用する IAM IDであるプリンシパル、または mTLS を使用する クライアント証明書で認証されます。SASL を使用する場合、プリンシパルとしてユーザー アカウント、サービス アカウント、フェデレーション アカウントがサポートされます。

このサービスは、SASL/GSSAPI、SASL/SCRAM-SHA-256、SASL/SCRAM-SHA-512 などの他のプロトコルをサポートしていません。また、認証されていない接続は許可されません。

承認

このサービスでは、認可に階層型アプローチを採用しています。IAM は、リソースの作成、更新、削除などのクラスタ管理アクションを制御します。認証されたプリンシパルの認可は、使用する方法によって異なります。

  • SASL: IAM を使用するプリンシパルは、 Google Cloud IAM ロール バインディングまたは クラスタの Kafka ACL を介して認可されます。詳細については、SASL 認証を構成するをご覧ください。

  • mTLS: mTLS で認証するプリンシパルは、Kafka ACL を介して認可されます。詳細については、mTLS 認証を構成するをご覧ください。

Kafka ACL は、 Google Cloud コンソールまたはサードパーティの Kafka ツールで管理できます。 IAM と Kafka ACL の構成の詳細については、 IAM と Kafka ACL によるアクセス制御をご覧ください。

暗号化

暗号化が必要です。クラスタへのすべての接続で TLS を使用する必要があります。ブローカーが提示する TLS 証明書は、Public Certificate Authority によって署名されます。 保存されたデータは常に暗号化されます。保存データの暗号化に Google マネージド暗号鍵を使用するか、 顧客管理の暗号鍵(CMEK)を使用するかを選択します。

パッチ適用

サービスチームは、オープンソース コードで発見されたセキュリティの脆弱性を追跡します。サービスが脆弱性を検出すると、クラスタに自動的にパッチが適用されます。

リソース分離

このサービスのもう 1 つのセキュリティ機能は、リソース分離です。マネージド サービスは、パブリック IP アドレスからアクセスできないプライベート VPC のテナント プロジェクトにクラスタをデプロイします。各プロジェクトには、 専用のサービス エージェント アカウントを持つ専用のテナント プロジェクトがあります。これにより、サービスに付与されるアクセス権の範囲を制限できます。

スキーマ レジストリ

プロデューサーとコンシューマー間の調整を簡素化するため、Managed Service for Apache Kafka にはスキーマ レジストリ API が含まれています。サービスによって提供されるレジストリは、アプリケーション間で共有されるスキーマのリポジトリとして機能します。

このサービスは、既存の Kafka アプリケーションとの統合に役立つ Confluent Schema Registry REST API を実装しています。Apache Avro と Protocol Buffer(Protobuf)のスキーマ形式がサポートされています。JSON はサポートされていません。

Managed Service for Apache Kafka には、スキーマ レジストリとスキーマを管理するための管理 API とツールセットも用意されています。ツールセットには、 Google Cloud コンソール、gcloud CLI、クライアント ライブラリが含まれます。

スキーマ レジストリの詳細については、 スキーマ レジストリの概要をご覧ください。

Kafka Connect とのデータ統合

Managed Service for Apache Kafka は、Kafka Connect を介してデータ統合を簡素化します。Kafka Connect には、Connect クラスタでホストされる組み込みのコネクタ プラグインがいくつか用意されています。これらのコネクタは、移行、バックアップ、障害復旧、高可用性、データ統合に使用されます。これらのコネクタを使用すると、 Managed Service for Apache Kafka クラスタを、 他の Kafka デプロイや Google Cloud BigQuery、Cloud Storage、Pub/Sub などの サービスを含むさまざまなシステムに接続できます。 Kafka Connect は、スケーラブルで信頼性の高いデータ統合を提供し、運用オーバーヘッドを削減し、モニタリングとロギングを統合します。

Kafka Connect の詳細については、Kafka Connect の概要をご覧ください。

高可用性クラスタ

このサービスの目標は、ミッション クリティカルなアプリケーションにリージョン クラスタを提供することです。具体的には、個々のゾーンまたはブローカーの障害から保護します。

これを実現するため、すべてのクラスタはラック対応の 3 ゾーン構成でプロビジョニングされます。デフォルトのトピック構成では、少なくとも 3 つのレプリカが必要です。 ラック対応により、レプリカが異なるゾーンに作成されます。デフォルトの同期レプリカの最小数は 2 です。つまり、クラスタはゾーンまたはブローカーの完全な損失に耐えることができます。

ソフトウェア、ハードウェア、ネットワークの障害によりブローカーで障害が発生すると、自動的に置き換えられます。サービスがブローカーの障害を検出すると、必要に応じて別のマシンで自動的に再起動します。ブローカーが使用可能になると、Apache Kafka はブローカーをクラスタに統合します。ゾーンが完全に停止すると、新しいブローカーを作成できなくなる可能性があります。 ただし、他の 2 つのゾーンが使用可能な限り、クラスタは動作を継続します。

これらの特定の機能に加えて、内部ツールとプロセスのリストが増え続けており、サービス、Apache Kafka コード、アップデートの健全性をプロアクティブに維持しています。データとメタデータのバックアップは複数のレベルで維持されるため、多くの人的ミスやソフトウェア障害から復旧できます。

このサービスは、リージョンまたはデュアルゾーンの障害から保護しません。このレベルの保護が必要なアプリケーションの場合は、2 つの別々のリージョン クラスタを実行することをおすすめします。Kafka Connect の MirrorMaker 2.0 などのツールを使用して、2 つのクラスタ間でデータを同期できます。

管理スタイルに合わせたツール

このサービスは、クラスタの管理とトラブルシューティングのスタイルに合わせて、完全なツールセットを提供することを目指しています。これには、管理、モニタリング、ロギングのツールが含まれます。

Managed Service for Apache Kafka は Google Cloud API として公開されます。つまり、REST API と gRPC API を使用して、クラスタとクラスタ リソースを管理できます。 これらの API には、次のような複数のクライアントとインターフェースが用意されています。

  • Infrastructure as Code アプローチを使用する場合は、Terraform プロバイダ。
  • ブラウザでインタラクティブに作業する場合は、 コンソール Google Cloud UI。
  • シェルでインタラクティブに作業する場合は、gcloud CLI。
  • カスタム開発とスクリプト作成用の Java、Python、Go などの言語のクライアント ライブラリ。

モニタリングとトラブルシューティングのために、サービスは指標を Cloud Monitoring にエクスポートします。一部の指標はサービス UI で確認できます。 完全なセットは Cloud Monitoring で利用でき、インタラクティブな作業、アラートの構成、他のシステムへのエクスポートに使用できます。

また、サービスはブローカーログを Cloud Logging にエクスポートします。これらは検索可能で、ログベースの指標とアラートの作成に使用できます。

アップグレードとパッチ

Managed Service for Apache Kafka クラスタは Apache Kafka バージョン 3.7.1 で実行されます。 サービスは、重大なセキュリティ脆弱性に自動的にパッチを適用します。

オペレーティング システムやオーケストレーション レイヤなど、基盤となるインフラストラクチャの更新は継続的かつ自動的に行われます。ブローカーはローリング再起動で更新され、クラスタのダウンタイムはありません。

このサービスでは、ブローカーで実行されている Apache Kafka コードが新しいマイナー バージョンに自動的にアップグレードされることはありません。

透明性の高い費用

Managed Service for Apache Kafka の料金モデルは、 Compute Engine で Apache Kafka を自分で実行する場合の料金と似ています。 プロビジョニングしたリソース(vCPU、RAM、ローカル ストレージ)と、使用したリソース(永続ストレージとデータ転送)に対して料金が発生します。Managed Service for Apache Kafka では、同様のシステムを自分で設定する場合と比較して、永続ストレージと vCPU のコストが高くなります。一方、データ転送とローカル ストレージの料金は、Managed Service for Apache Kafka とセルフマネージド Kafka でほぼ同じです。料金の詳細については、 Managed Service for Apache Kafka の料金をご覧ください。

Apache Kafka を実行しているため互換性がある

Managed Service for Apache Kafka は、環境で実行しているのと同じ オープンソース ソフトウェアを実行します。サービスに移行するためにアプリケーション コードを変更する必要はありません。

制限事項

Managed Service for Apache Kafka には次の制限があります。

  • 各クラスタは、3 つのゾーンすべてで同じリソースを持つ必要があります。単一ゾーンまたは 2 ゾーンの Managed Service for Apache Kafka クラスタはサポートされていません。

  • クラスタの作成時にゾーンを選択することはできません。

  • クラスタのローカル ストレージの容量を構成することはできません。

  • Managed Service for Apache Kafka は KRaft モードで実行されます。Zookeeper モードはサポートされていません。

  • 指標用の JMX API はサポートされていません。

  • read-only 更新モードでブローカー構成をいつでも変更できますが、これらの変更はブローカーが再起動したときにのみ有効になります。再起動は、Google のメンテナンス プロセスとアップグレード プロセスの一環として定期的に行われますが、スケジュールは設定されておらず、手動でトリガーする方法もありません。そのため、これらの変更が有効になるタイミングを制御することはできません。read-only 構成の例としては、auto.create.topics.enablebackground.threads などがあります。message.max.bytes など、cluster-wide 更新モードで構成を更新する場合、再起動は不要で、すぐに有効になります。

  • 一部のブローカー構成パラメータはサービスによって管理され、更新できません。これには、broker.id や、remote.log.storage.system.enable などのストレージ関連の設定が含まれます。

次のステップ

Apache Kafka® は、Apache Software Foundation または米国その他の諸国における関連会社の商標です。