Skip to main content
Edit this page

Amazon MSK と ClickHouse の統合

前提条件

以下を前提としています:

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

接続の詳細を集める

HTTP(S) を使用して ClickHouse に接続するには、以下の情報が必要です:

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

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

  • ユーザー名とパスワード: デフォルトでユーザー名は default です。使用ケースに適したユーザー名を使用してください。

ClickHouse Cloud サービスの詳細は、ClickHouse Cloud コンソールで確認できます。 接続するサービスを選択し、接続 をクリックします:

ClickHouse Cloud service connect button

HTTPS を選択すると、サンプルの curl コマンドで詳細が確認できます。

ClickHouse Cloud HTTPS connection details

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

ステップ

  1. ClickHouse コネクタ Sinkを理解していることを確認してください。
  2. MSK インスタンスを作成する
  3. IAM ロールを作成して割り当てる
  4. ClickHouse Connect Sink のリリースページから jar ファイルをダウンロードします。
  5. Amazon MSK コンソールのカスタムプラグインページでダウンロードした jar ファイルをインストールします。
  6. コネクタが公開 ClickHouse インスタンスと通信する場合は、インターネットアクセスを有効にします
  7. 設定でトピック名、ClickHouse インスタンスホスト名、およびパスワードを指定します。
connector.class=com.clickhouse.kafka.connect.ClickHouseSinkConnector
tasks.max=1
topics=<topic_name>
ssl=true
security.protocol=SSL
hostname=<hostname>
database=<database_name>
password=<password>
ssl.truststore.location=/tmp/kafka.client.truststore.jks
port=8443
value.converter.schemas.enable=false
value.converter=org.apache.kafka.connect.json.JsonConverter
exactlyOnce=true
username=default
schemas.enable=false

パフォーマンスチューニング

パフォーマンスを向上させるワンステップとして、worker 設定に以下を追加して、Kafka から取得するバッチサイズとレコード数を調整することができます:

consumer.max.poll.records=[NUMBER OF RECORDS]
consumer.max.partition.fetch.bytes=[NUMBER OF RECORDS * RECORD SIZE IN BYTES]

使用する具体的な値は、希望のレコード数やレコードサイズに基づいて異なります。例えば、デフォルト値は以下の通りです:

consumer.max.poll.records=500
consumer.max.partition.fetch.bytes=1048576

詳細情報(実装やその他の考慮事項について)は、公式の 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 クラスターにアタッチします。