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

BYOC (Bring Your Own Cloud) for AWS

概要

BYOC (Bring Your Own Cloud) を使用すると、独自のクラウドインフラストラクチャに ClickHouse Cloud をデプロイできます。これは、ClickHouse Cloud のマネージドサービスを利用することを妨げる特定の要件や制約がある場合に便利です。

アクセスをご希望の場合は、お問い合わせください。 詳細情報については、利用規約をご参照ください。

BYOCは現在、AWS のみサポートされています。 GCP および Azure の待機リストには、こちらから参加できます。

注記

BYOCは大規模なデプロイメント専用に設計されており、顧客に対して契約を締結することが求められます。

用語集

  • ClickHouse VPC: ClickHouse Cloud 所有の VPC です。
  • Customer BYOC VPC: 顧客のクラウドアカウントが所有し、ClickHouse Cloud によってプロビジョニングおよび管理される VPC で、ClickHouse Cloud BYOC デプロイメント専用です。
  • Customer VPC: 顧客のクラウドアカウントによって所有され、Customer BYOC VPC に接続が必要なアプリケーション用の他の VPC です。

アーキテクチャ

メトリクスとログは、顧客の BYOC VPC 内に保存されます。ログは現在、EBS 内にローカルで保存されています。将来的な更新では、ログは顧客の BYOC VPC 内の ClickHouse サービスである LogHouse に保存されます。メトリクスは、顧客の BYOC VPC 内にローカルに保存された Prometheus および Thanos スタックを介して実装されます。



オンボーディングプロセス

顧客は、こちらから お問い合わせいただくことで、オンボーディングプロセスを開始できます。顧客は専用の AWS アカウントを持ち、使用するリージョンを把握している必要があります。現在、ClickHouse Cloud に対してサポートしているリージョンのみで BYOC サービスを起動できるようになっています。

専用の AWS アカウントを準備する

顧客は、ClickHouse BYOC デプロイメントのホスティング用に専用の AWS アカウントを準備する必要があります。これにより、より良い分離が確保されます。これと初期の組織管理者のメールを用いて、ClickHouse サポートに連絡することができます。

CloudFormation テンプレートを適用する

BYOC セットアップは、CloudFormation スタックを介して初期化され、これにより BYOC コントローラーがインフラストラクチャを管理できるようにするのみのロールが作成されます。ClickHouse を実行するための S3、VPC、コンピュートリソースはこのスタックには含まれていません。

BYOC インフラストラクチャを設定する

CloudFormation スタックを作成した後、クラウドコンソールから S3、VPC、および EKS クラスターを含むインフラストラクチャの設定が求められます。この段階で特定の設定を決定する必要があります。なぜなら、後から変更することができないからです。具体的には:

  • 使用したいリージョン: ClickHouse Cloud のために用意された任意の公開リージョンから選択できます。
  • BYOC の VPC CIDR 範囲: デフォルトでは、BYOC VPC CIDR 範囲には 10.0.0.0/16 を使用します。別のアカウントとの VPC ピアリングを使用する予定がある場合は、CIDR 範囲が重複しないようにしてください。BYOC 用に適切な CIDR 範囲を割り当て、必要なワークロードを収容できる最小サイズである /22 を使用してください。
  • BYOC VPC のアベイラビリティゾーン: VPC ピアリングを使用する場合、ソースアカウントと BYOC アカウント間でアベイラビリティゾーンを合わせることで、クロス AZ トラフィックコストを削減できます。AWS では、アベイラビリティゾーンのサフィックス(a, b, c)はアカウント間で異なる物理ゾーン ID を表す場合があります。詳細はAWS ガイドを参照してください。

オプション: VPC ピアリングを設定する

ClickHouse BYOC のために VPC ピアリングを作成または削除するには、以下の手順に従います:

ステップ 1 ClickHouse BYOC のためにプライベートロードバランサーを有効にする

ClickHouse サポートに連絡してプライベートロードバランサーを有効にしてください。

ステップ 2 ピアリング接続を作成する

  1. ClickHouse BYOC アカウントの VPC ダッシュボードに移動します。
  2. ピアリング接続を選択します。
  3. ピアリング接続を作成するをクリックします。
  4. VPC リクエスターを ClickHouse VPC ID に設定します。
  5. VPC アクセプターをターゲット VPC ID に設定します。(該当する場合は他のアカウントを選択してください)
  6. ピアリング接続を作成するをクリックします。


ステップ 3 ピアリング接続要求を承認する

ピアリングアカウントに移動し、(VPC -> ピアリング接続 -> アクション -> 要求を承認) ページで顧客はこの VPC ピアリング要求を承認できます。



ステップ 4 ClickHouse VPC ルートテーブルに宛先を追加する

ClickHouse BYOC アカウントで、

  1. VPC ダッシュボードのルートテーブルを選択します。
  2. ClickHouse VPC ID を検索します。プライベートサブネットに関連付けられた各ルートテーブルを編集します。
  3. ルートタブの下にある編集ボタンをクリックします。
  4. 別のルートを追加をクリックします。
  5. 宛先の CIDR 範囲にターゲット VPC の CIDR 範囲を入力します。
  6. 「ピアリング接続」を選択し、ターゲットのピアリング接続 ID を選択します。


ステップ 5 ターゲット VPC ルートテーブルに宛先を追加する

ピアリングされた AWS アカウントで、

  1. VPC ダッシュボードのルートテーブルを選択します。
  2. ターゲット VPC ID を検索します。
  3. ルートタブの下にある編集ボタンをクリックします。
  4. 別のルートを追加をクリックします。
  5. 宛先に ClickHouse VPC の CIDR 範囲を入力します。
  6. 「ピアリング接続」を選択し、ターゲットのピアリング接続 ID を選択します。


ステップ 6 ピアード VPC アクセスを許可するためにセキュリティグループを編集する

ClickHouse BYOC アカウントで、

  1. ClickHouse BYOC アカウントで、EC2 に移動し、infra-xx-xxx-ingress-private のような名前のプライベートロードバランサーを見つけます。


  1. 詳細ページのセキュリティタブの下に、k8s-istioing-istioing-xxxxxxxxx のような命名パターンに従う関連付けられたセキュリティグループを見つけます。


  1. このセキュリティグループのインバウンドルールを編集し、ピアリングされた VPC CIDR 範囲を追加します(または、必要に応じて必要な CIDR 範囲を指定します)。



ClickHouse サービスは、ピアリングされた VPC からアクセス可能になるはずです。

ClickHouse にプライベートにアクセスするために、ユーザーのピアリングされた VPC からの安全な接続のために、プライベートロードバランサーとエンドポイントがプロビジョニングされます。プライベートエンドポイントは、-private サフィックスを持つ公開エンドポイントフォーマットに従います。例えば:

  • 公開エンドポイント: h5ju65kv87.mhp0y4dmph.us-west-2.aws.byoc.clickhouse.cloud
  • プライベートエンドポイント: h5ju65kv87-private.mhp0y4dmph.us-west-2.aws.byoc.clickhouse.cloud

オプションとして、ピアリングが正常に機能していることを確認した後、ClickHouse BYOC の公開ロードバランサーの削除をリクエストできます。

アップグレードプロセス

私たちは定期的にソフトウェアをアップグレードしており、ClickHouse データベースバージョンのアップグレード、ClickHouse オペレーター、EKS、その他のコンポーネントが含まれます。

シームレスなアップグレード(例:ローリングアップグレードや再起動)を目指していますが、ClickHouse バージョンの変更や EKS ノードのアップグレードに関してはサービスに影響を与える可能性があります。顧客はメンテナンスウィンドウ(例:毎週火曜日午前1:00 PDT)を指定でき、それによりそのようなアップグレードはスケジュールされた時間のみ実施されます。

注記

メンテナンスウィンドウは、セキュリティや脆弱性の修正には適用されません。これらは、オフサイクルアップグレードとして扱われ、適切な時間を調整し業務への影響を最小限に抑えるための迅速なコミュニケーションが行われます。

CloudFormation IAM ロール

ブートストラップ IAM ロール

ブートストラップ IAM ロールには以下の権限があります:

  • EC2 および VPC 操作: VPC および EKS クラスターの設定に必要です。
  • S3 操作 (例:s3:CreateBucket): ClickHouse BYOC ストレージ用のバケットを作成するために必要です。
  • route53:* 権限: Route 53 にレコードを構成するための外部 DNS に必要です。
  • IAM 操作 (例:iam:CreatePolicy): コントローラーが追加のロールを作成するために必要です(詳細は次のセクションを参照)。
  • EKS 操作: clickhouse-cloud プレフィックスで始まる名前のリソースに制限されます。

コントローラーによって作成される追加の IAM ロール

CloudFormation を介して作成された ClickHouseManagementRole に加えて、コントローラーはさらにいくつかのロールを作成します。

これらのロールは、顧客の EKS クラスター内で実行されているアプリケーションによって想定されます:

  • State Exporter Role
    • ClickHouse コンポーネントが ClickHouse Cloud にサービスのヘルス情報を報告します。
    • ClickHouse Cloud 所有の SQS キューに書き込む権限が必要です。
  • Load-Balancer Controller
    • 標準の AWS ロードバランサーコントローラーです。
    • ClickHouse サービス用ボリュームを管理するための EBS CSI コントローラーです。
  • External-DNS
    • DNS 構成を Route 53 に配布します。
  • Cert-Manager
    • BYOC サービスドメイン用の TLS 証明書をプロビジョニングします。
  • Cluster Autoscaler
    • 必要に応じてノードグループのサイズを調整します。

K8s-control-plane および k8s-worker ロールは AWS EKS サービスによって想定されます。

最後に、data-plane-mgmt により ClickHouse Cloud コントロールプレーンコンポーネントは、ClickHouseCluster および Istio の仮想サービス/ゲートウェイのような必要なカスタムリソースを調整できるようになります。

ネットワーク境界

このセクションでは、顧客 BYOC VPC へのネットワークトラフィックと顧客 BYOC VPC からのトラフィックの異なる形式について説明します:

  • インバウンド: 顧客 BYOC VPC に入ってくるトラフィック。
  • アウトバウンド: 顧客 BYOC VPC から発生し、外部の宛先に送信されるトラフィック。
  • パブリック: 公共のインターネットからアクセス可能なネットワークエンドポイント。
  • プライベート: VPC ピアリングや VPC プライベートリンク、Tailscale のようなプライベート接続を介してのみアクセス可能なネットワークエンドポイント。

Istio ingress は AWS NLB の背後にデプロイされ、ClickHouse クライアントトラフィックを受け入れます。

インバウンド、パブリック (プライベートとなる場合もある)

Istio ingress ゲートウェイは TLS を終了します。Let's Encrypt によって CertManager でプロビジョニングされた証明書は、EKS クラスター内のシークレットとして保存されます。Istio と ClickHouse 間のトラフィックはAWS によって暗号化されており、同じ VPC 内に存在するためです。

デフォルトでは、インバウンドは IP アロウリストフィルタリングでパブリックにアクセス可能です。顧客は VPC ピアリングを構成してプライベートにし、公共の接続を無効にすることができます。IP フィルターを設定してアクセスを制限することを強くお勧めします。

アクセスのトラブルシューティング

インバウンド、パブリック (プライベートとなる場合もある)

ClickHouse Cloud エンジニアは Tailscale 経由でトラブルシューティングアクセスを必要とします。彼らは BYOC デプロイメントのために、Just-in-Time の証明書ベースの認証をプロビジョニングされています。

請求スクリーパー

アウトバウンド、プライベート

請求スクリーパーは ClickHouse から請求データを収集し、それを ClickHouse Cloud 所有の S3 バケットに送信します。

これは ClickHouse サーバーコンテナと一緒にサイドカーとして実行され、定期的に CPU およびメモリメトリクスをスクレイピングします。同じリージョン内のリクエストは、VPC ゲートウェイサービスエンドポイントを介してルーティングされます。

アラート

アウトバウンド、パブリック

AlertManager は、顧客の ClickHouse クラスターが正常でない場合に ClickHouse Cloud にアラートを送信するように構成されています。

メトリクスとログは、顧客の BYOC VPC に保存されます。ログは現在、EBS 内でローカルに保存されています。将来的な更新では、BYOC VPC 内の ClickHouse サービスである LogHouse に保存される予定です。メトリクスは、BYOC VPC 内でローカルに保存された Prometheus および Thanos スタックを利用します。

サービス状態

アウトバウンド

State Exporter は、ClickHouse サービス状態情報を ClickHouse Cloud 所有の SQS に送信します。

機能

サポートされている機能

  • SharedMergeTree: ClickHouse Cloud と BYOC は同じバイナリと構成を使用しています。したがって、SharedMergeTree などの ClickHouse コアのすべての機能が BYOC でサポートされています。
  • サービス状態を管理するためのコンソールアクセス:
    • 開始、停止、および終了などの操作をサポートします。
    • サービスと状態を表示できます。
  • バックアップと復元。
  • 手動の垂直および水平方向のスケーリング。
  • アイドル。
  • 倉庫: コンピュートとコンピュートの分離
  • Tailscale を介したゼロトラストネットワーク。
  • モニタリング:
    • クラウドコンソールには、サービスヘルスのモニタリング用の組み込みヘルスダッシュボードが含まれています。
    • Prometheus、Grafana、Datadog との中央集計モニタリング用の Prometheus スクレイピング。設定手順については、Prometheus ドキュメントを参照してください。
  • VPC ピアリング。
  • 統合: このページに完全なリストがあります。
  • 安全な S3。
  • AWS PrivateLink

計画中の機能 (現在サポートされていません)

  • AWS KMS 別名 CMEK (顧客管理暗号化キー)
  • インジェスト用の ClickPipes
  • オートスケーリング
  • MySQL インターフェース

FAQ

コンピュート

この単一の EKS クラスターに複数のサービスを作成できますか?

はい。インフラストラクチャは、すべての AWS アカウントとリージョンの組み合わせについて一度だけプロビジョニングされる必要があります。

BYOC のサポートリージョンはどこですか?

BYOC は ClickHouse Cloud と同じセットの リージョン をサポートしています。

リソースのオーバーヘッドはありますか? ClickHouse インスタンス以外のサービスを実行するために必要なリソースは何ですか?

ClickHouse インスタンス (ClickHouse サーバーと ClickHouse Keeper) の他に、clickhouse-operatoraws-cluster-autoscaler、Istio などのサービスが実行され、モニタリングスタックも実行されます。

現在、これらのワークロードを実行するために、専用のノードグループに 3 つの m5.xlarge ノード (各 AZ に 1 つ) を持っています。

ネットワークとセキュリティ

設定完了後にインストール中に設定した権限を取り消すことはできますか?

現時点ではこれは不可能です。

ClickHouse エンジニアがトラブルシューティングのために顧客インフラにアクセスするための将来のセキュリティコントロールを検討していますか?

はい。顧客がエンジニアのクラスターアクセスを承認できる顧客制御のメカニズムの実装は私たちのロードマップ上にあります。現時点では、エンジニアはクラスタへの十分なアクセスを得るために、内部のエスカレーションプロセスを経なければなりません。これは、私たちのセキュリティチームによって記録され、監査されています。

作成された VPC IP 範囲のサイズはどのくらいですか?

デフォルトでは、BYOC VPC には 10.0.0.0/16 を使用します。将来的なスケーリング可能性のために最低でも /22 を予約することをお勧めしますが、サイズを制限したい場合は、30 サーバーポッドに制限される可能性が高い場合に限り /23 を使用することが可能です。

メンテナンスの頻度を決定できますか?

サポートに連絡してメンテナンスウィンドウをスケジュールしてください。少なくとも週間での更新スケジュールを期待してください。

可視性

組み込みのモニタリングツール

可視性ダッシュボード

ClickHouse Cloud は、メモリ使用量、クエリレート、I/O などのメトリクスを表示する高度な可視性ダッシュボードを備えています。これは、ClickHouse Cloud ウェブコンソールインターフェースの モニタリング セクションからアクセスできます。



高度なダッシュボード

system.metricssystem.eventssystem.asynchronous_metrics などのシステムテーブルからのメトリクスを使用してダッシュボードをカスタマイズし、サーバーのパフォーマンスやリソース利用率を詳細に監視できます。



Prometheus 統合

ClickHouse Cloud は、モニタリング用のメトリクスをスクレイピングするために使用できる Prometheus エンドポイントを提供します。これにより、Grafana や Datadog などのツールと統合し、可視化を行うことができます。

https エンドポイント /metrics_all を介したサンプルリクエスト

サンプルレスポンス

認証

ClickHouse のユーザー名とパスワードのペアを使用して認証できます。メトリクスをスクレイピングするために最小限の権限を持つ専用ユーザーの作成をお勧めします。最小限、system.custom_metrics テーブルに対して READ 権限が必要です。例えば:

Prometheus の設定

以下は設定の例です。targets エンドポイントは、ClickHouse サービスにアクセスするために使用されるのと同じものです。

また、このブログ投稿およびClickHouse 用の Prometheus 設定ドキュメントもご覧ください。