メインコンテンツまでスキップ
メインコンテンツまでスキップ

Amazon MSK と ClickHouse の統合

前提条件

以下のことを前提とします:

Amazon MSK と ClickHouse の公式 Kafka コネクタ

接続詳細を収集する

ClickHouseにHTTP(S)で接続するには、次の情報が必要です:

  • HOST と PORT: 通常、ポートはTLSを使用する場合は8443、TLSを使用しない場合は8123です。

  • DATABASE NAME: デフォルトでは、defaultという名前のデータベースがあります。接続したいデータベースの名前を使用してください。

  • USERNAME と PASSWORD: デフォルトでは、ユーザー名はdefaultです。あなたのユースケースに適したユーザー名を使用してください。

あなたのClickHouse Cloudサービスの詳細はClickHouse Cloudコンソールで確認できます。接続するサービスを選択し、Connectをクリックしてください:

ClickHouse Cloud service connect button

HTTPSを選択すると、詳細は例のcurlコマンドに表示されます。

ClickHouse Cloud HTTPS connection details

セルフマネージドのClickHouseを使用している場合、接続の詳細はあなたのClickHouse管理者によって設定されています。

手順

  1. ClickHouse Connector Sink に精通していることを確認します。
  2. MSK インスタンスを作成する
  3. IAM ロールを作成して割り当てる
  4. ClickHouse Connect Sink の リリースページ から jar ファイルをダウンロードします。
  5. Amazon MSK コンソールの カスタムプラグインページ にダウンロードした jar ファイルをインストールします。
  6. コネクタがパブリックな ClickHouse インスタンスと通信する場合は、インターネットアクセスを有効にする
  7. 設定でトピック名、ClickHouse インスタンスのホスト名、およびパスワードを提供します。

パフォーマンス調整

パフォーマンスを向上させる方法の一つは、バッチサイズと Kafka から取得するレコード数を調整することです。次の設定を worker 構成に追加します。

使用する具体的な値は、希望するレコード数とレコードサイズによって異なります。例えば、デフォルト値は次の通りです。

詳細については、公式の Kafka および Amazon MSK のドキュメントをご確認ください。

MSK Connect 用のネットワーキングに関する注意事項

MSK Connect が ClickHouse に接続するためには、MSK クラスターをプライベートサブネットに配置し、インターネットアクセス用のプライベート NAT を接続することを推奨します。以下にその設定方法を示します。パブリックサブネットもサポートされていますが、Elastic IP アドレスを ENI に常に割り当てる必要があるため推奨されません。AWS からの詳細はこちら

  1. プライベートサブネットを作成する: VPC 内に新しいサブネットを作成し、プライベートサブネットとして指定します。このサブネットにはインターネットへの直接アクセスは許可しません。
  2. NAT ゲートウェイを作成する: VPC のパブリックサブネットに NAT ゲートウェイを作成します。NAT ゲートウェイにより、プライベートサブネット内のインスタンスがインターネットまたは他の AWS サービスに接続できますが、インターネットからこれらのインスタンスに対する接続を防ぎます。
  3. ルートテーブルを更新する: インターネット行きのトラフィックを NAT ゲートウェイに向けるルートを追加します。
  4. セキュリティグループとネットワーク ACL の設定を確認する: セキュリティグループ および ネットワーク ACL (アクセスコントロールリスト) を設定し、ClickHouse インスタンスへの関連トラフィックを許可します。
    1. ClickHouse Cloud の場合は、9440 と 8443 番ポートでの受信トラフィックを許可するようセキュリティグループを設定します。
    2. セルフホストされた ClickHouse の場合は、設定ファイルのポート(デフォルトは 8123)で受信トラフィックを許可するようにセキュリティグループを設定します。
  5. MSK にセキュリティグループをアタッチする: NAT ゲートウェイにルーティングされた新しいセキュリティグループが MSK クラスターにアタッチされていることを確認します。