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 エンドポイントが必要です。エンドポイントは自動的にプロビジョニングされます。

クラスタの保護

このサービスは、クラスタのセキュリティのために、認証、認可、暗号化、パッチ適用、リソース分離などの機能を提供します。また、認証されていない接続や暗号化されていない接続、ストレージも禁止します。

認証

このサービスは、Simple Authentication and Security Layer(SASL)と相互 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 とプロトコル バッファ(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 デプロイや BigQuery、Cloud Storage、Pub/Sub などの Google Cloud サービスを含むさまざまなシステムに接続できます。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.enable と background.threads があります。message.max.bytes などの cluster-wide 更新モードで構成を更新する場合、再起動は必要なく、すぐに有効になります。

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

次のステップ

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