Skip to main content

概要

このガイドでは、AWS PrivateLink VPC endpoint services を使って、Amazon MSK クラスターを ClickPipes から利用できるように公開する方法を説明します。 この方法は、MSK multi-VPC connectivity が利用できない場合や、それだけでは不十分な場合に使用します。たとえば、次のようなケースです。
  • ClickPipes から MSK へのクロスリージョン接続。
  • MSK Express クラスター。
  • プライベート接続でもブローカーのホスト名を維持する必要がある Kafka 構成。
同一リージョンの標準的な MSK クラスターでは、通常は MSK multi-VPC connectivity のほうがシンプルで、推奨される選択肢です。 同じ PrivateLink パターンは、AWS を介して公開されるセルフマネージドまたはオンプレミスの Kafka クラスターにも使用できますが、この記事の例では MSK を使用します。

セットアップの仕組み

Kafkaクライアントはまずブートストラップブローカーに接続してクラスターのメタデータを取得し、その後、そのメタデータで通知されたブローカーのホスト名に直接接続します。 そのため、すべてのブローカーの前段に単一のロードバランサーを配置するだけでは、信頼性の高い MSK PrivateLink のセットアップとしては不十分です。代わりに、ブローカーごとに 1 つの PrivateLink パスを作成してください:
各ブローカーには、それぞれ次のものが必要です:
  • 内部向け Network Load Balancer (NLB) 。
  • ブローカーのプライベート IP を対象とする IP ターゲットグループ。
  • その NLB をバックエンドとする VPC エンドポイントサービス。
  • ClickPipes のリバースプライベートエンドポイント (RPE) 。
  • そのブローカーのホスト名に一致するカスタム private DNS 名。
NLB では TCP パススルーを使用する必要があります。これにより、Kafka クライアントは TLS の SNI と証明書の検証で、元の MSK ブローカーのホスト名を引き続き使用できます。

要件

  • プライベートサブネット内の MSK クラスター。
  • MSK クラスターの broker のホスト名とプライベート IP アドレス。
  • MSK VPC で NLB、ターゲットグループ、listener、VPC エンドポイントサービスを作成するための権限。
  • 各 VPC エンドポイントサービスで許可される ClickPipes の AWS account principal: arn:aws:iam::072088201116:root
  • ClickHouse Cloud service で custom private DNS 機能が有効になっていること。リバースプライベートエンドポイントの作成時に Custom private DNS name フィールドが表示されない場合は、ClickHouse Support に連絡してください。

ブローカーのホスト名とプライベート IP を取得する

AWS CLI を使用して、MSK ブローカーノードを一覧表示します:
各 broker の hostname、プライベート IP アドレス、Kafka ポートをそれぞれ記録します。MSK IAM 認証の場合、ポートは通常 9098 です。 ClickPipe は、これらの broker hostname を Kafka broker として使用します。この UI ベースのセットアップでは、MSK の bootstrap broker string は使用しないでください。

broker ごとに endpoint service を 1 つずつ作成する

MSK の各 broker に対して、以下の手順を繰り返します。

内部 NLB を作成する

MSK VPC 内に内部向けの Network Load Balancer を作成します。NLB はプライベートサブネットを使用し、インターネット向けにしてはいけません。 NLB にセキュリティグループがアタッチされている場合は、Enforce Security Group Inbound Rules on Private Link Traffic を無効にします。これは、ClickPipes の VPC エンドポイントからのトラフィックが NLB に到達できるようにするために必要です。

IPターゲットグループを作成する

次の設定でターゲットグループを作成します。
  • ターゲットタイプ: IP
  • プロトコル: TCP
  • ポート: broker の Kafka ポート。たとえば、MSK IAM の場合は 9098
  • ターゲット: 1 つの broker のプライベート IP アドレスを指定します。
トラフィックポートに対して TCP ヘルスチェックを使用します。

TCP リスナーを作成する

ブローカーの Kafka ポートに NLB リスナーを作成し、トラフィックをブローカー固有のターゲットグループに転送します。

VPC エンドポイントサービスを作成する

ブローカー固有の NLB をバックエンドとする VPC エンドポイントサービスを作成します。 許可対象の principal に ClickPipes の AWS principal を追加します:
MSK クラスターと ClickPipes が異なる AWS リージョンにある場合は、エンドポイントサービスのサポート対象リージョンに ClickPipes のリージョンを追加して、クロスリージョンアクセスを有効にします。 エンドポイントサービス名を控えておきます。以下のような形式です。

ClickPipes のリバースプライベートエンドポイントを作成する

ClickHouse Cloud console で、各ブローカーの VPC エンドポイントサービスごとに 1 つのリバースプライベートエンドポイントを作成します。
  1. 対象の ClickHouse Cloud サービスに移動します。
  2. ClickPipe の作成を開始します。
  3. Reverse private endpoint を選択します。
  4. VPC エンドポイントのタイプとして VPC endpoint service を選択します。
  5. ブローカー固有の VPC エンドポイントサービス名を入力します。
  6. Custom private DNS name に、そのブローカーの元の MSK ブローカー hostname を入力します。
  7. エンドポイントを作成します。
  8. エンドポイントが承認待ちの場合は、AWS の VPC エンドポイントサービス console でエンドポイントの接続リクエストを承認します。
すべてのブローカー hostname に対応する RPE が作成されるまで、この手順を繰り返します。 カスタム private DNS の動作、命名規則、API/Terraform のオプションについては、以下を参照してください。 Custom private DNS リバースプライベートエンドポイントは、OpenAPI または Terraform を使って作成することもできます。 OpenAPI では、各ブローカーに対して 1 つのリバースプライベートエンドポイントを作成し、typeVPC_ENDPOINT_SERVICE に設定したうえで、ブローカー固有の VPC エンドポイントサービス名と、そのブローカー hostname 用のカスタム private DNS マッピングを 1 つ指定します。
Terraform を使用する場合は、エンドポイントの作成に clickhouse_clickpipes_reverse_private_endpoint を使用し、ブローカーのホスト名マッピングの構成に clickhouse_clickpipes_reverse_private_endpoint_custom_private_dns を使用します。

Kafka ClickPipe を作成する

リバース プライベート エンドポイントを使用して ClickPipe を作成するには、ClickPipes AWS PrivateLink ガイド に従ってください。 Kafka ClickPipe を作成する際は、次の点に注意してください。
  • ブローカー一覧には、元の MSK ブローカーのホスト名を使用し、MSK リスナーと認証方式に対応するポートも含めてください。
  • MSK の bootstrap broker string は使用しないでください。
  • ブローカーごとのリバース プライベート エンドポイントをすべて選択またはアタッチしてください。
  • IAM ロール認証など、MSK クラスターで必要な認証方式を設定してください。
ポートは MSK リスナーによって異なります。たとえば、IAM 認証では一般に 9098、SASL/SCRAM では一般に 9096、TLS では一般に 9094 を使用します。正しいポートは、MSK クラスターの設定または bootstrap broker output で確認してください。 ブローカー一覧の例:
ブローカー一覧内の各ホスト名は、いずれかのRPEに設定されたCustom private DNS nameと一致している必要があります。

Terraform の自動化

aws-msk-vpc-endpoint-service Terraform module では、このセットアップを自動化する方法を紹介しています。このモジュールは、broker ごとの NLB、ターゲットグループ、VPC エンドポイントサービス、ClickPipes RPE、カスタム private DNS マッピングを作成します。 この Terraform module では、bootstrap と broker の hostname の両方を含め、RPE ごとに複数のカスタム private DNS マッピングを管理できます。この記事では、手動で ClickPipes UI を使うワークフローに焦点を当てており、各 RPE はカスタム private DNS 名として 1 つの broker hostname を使用します。
最終更新日 2026年7月23日