ClickHouse/docs/ja/cloud/manage/scaling.md
2024-11-18 11:58:58 +09:00

11 KiB
Raw Blame History

sidebar_position sidebar_label slug description keywords
1 自動スケーリング /ja/manage/scaling ClickHouse Cloudの自動スケーリング設定
autoscaling
auto scaling
scaling
horizontal
vertical
bursts

自動スケーリング

スケーリングとは、クライアントの需要に応じて使用可能なリソースを調整する能力のことです。サービスはAPIをプログラム的に呼び出したり、UIでシステムリソースを調整する設定を変更することで手動でスケーリングできます。代わりに、サービスはアプリケーションの要求に合わせて自動スケーリングすることも可能です。

:::note スケーリングはProductionティアのサービスにのみ適用されます。Developmentティアのサービスはスケーリングしません。スケーリングするためには、DevelopmentティアからProductionティアにサービスをアップグレードする必要があります。一度Developmentサービスがアップグレードされると、ダウングレードすることはできません。 :::

ClickHouse Cloudにおけるスケーリングの仕組み

Productionサービスは、より大きなレプリカに切り替えることで垂直にスケーリングしたり、同じサイズのレプリカを追加することで水平にスケーリングしたりできます。デフォルトでは、ClickHouse CloudのProductionサービスは3つの異なる可用性ゾーンに3つのレプリカで運用されます。垂直スケーリングは、長時間の挿入や読み取りに多くのメモリを必要とするクエリに役立ち、水平スケーリングは並列化によって同時実行クエリをサポートするのに役立ちます。

現在、ClickHouse Cloudはサービスを垂直にのみ自動スケーリングします。水平にスケーリングするには現在プライベートプレビュー中、ClickHouse CloudコンソールまたはCloud APIを使用する必要があります。サービスで水平スケーリングを有効にするには、support@clickhouse.comにお問い合わせのうえ、セルフサーブ水平スケーリングのセクションをご覧ください。

垂直自動スケーリング

Productionサービスは、CPUとメモリの使用量に基づいて自動スケーリングされます。過去30時間のルックバックウィンドウにわたってサービスの使用履歴を常に監視し、スケーリングの判断を行います。使用量が特定の閾値を上回ったり下回ったりした場合、需要に応じてサービスを適切にスケーリングします。

CPUベースの自動スケーリングは、CPU使用率が50-75の範囲の上限閾値を超えたときに始動します。この時点で、クラスタへのCPU割り当てが倍増されます。CPU使用率が上限閾値の半分を下回った場合たとえば、上限閾値が50の場合、25、CPU割り当てが半減されます。

メモリベースの自動スケーリングでは、クラスタは最大メモリ使用量の125、またはメモリ不足エラーOOMが発生した場合は最大150までスケーリングされます。

CPUまたはメモリの推奨値でより大きい方が選ばれ、サービスに割り当てられるCPUとメモリは1 CPUと4 GiBメモリの同期インクリメントでスケーリングされます。

注意: 現在の実装では、垂直自動スケーリングはメモリとCPUのニーズが緩やかに増加する場面ではうまく機能し、保守的になる傾向があります。ワークロードの急増に対応できるよう、より動的にし、スケーリングのためにより積極的なCPU/メモリ閾値を使用し、適切なルックバックウィンドウを使用して垂直スケーリングの意思決定を行うよう改善を進めています。

垂直自動スケーリングの設定

ClickHouse Cloud Productionサービスのスケーリングは、Adminロールを持つ組織のメンバーによって調整できます。垂直自動スケーリングを設定するには、サービス詳細ページの設定タブに移動し、最小および最大メモリ、及びCPU設定を調整します。

<img alt="スケーリング設定ページ" style={{width: '450px', marginLeft: 0}} src={require('./images/AutoScaling.png').default} />

最大メモリ最小メモリよりも高く設定してください。すると、必要に応じてその範囲内でサービスがスケールします。これらの設定は、初期のサービス作成フローでも利用可能です。サービス内の各レプリカには、同じメモリとCPUリソースが割り当てられます。

これらの値を同じに設定することも選択でき、その場合、特定の設定にサービスを固定します。そうすることで、選択したサイズにすぐにスケーリングが強制されます。これは、クラスタでの任意の自動スケーリングを無効にし、この設定を超えたCPUまたはメモリ使用量の増加からサービスを保護しなくなることに注意してください。

セルフサービスによる水平スケーリング

ClickHouse Cloudの水平スケーリングは現在プライベートプレビュー中です。一旦水平スケーリングがサービスで有効になると、ClickHouse Cloud 公開APIを使用して、サービスのスケーリング設定を更新することでサービスをスケールできます。

  • 機能がサービスで有効になっていない場合、リクエストは`BAD_REQUEST: Adjusting number of replicas is not enabled for your instance"というエラーで拒否されます。このエラーが表示され、スケーリングが既に有効になっていると考える場合は、ClickHouse Cloudサポートにお問い合わせください。
  • Production ClickHouseサービスは最低でも3つのレプリカが必要です。現在、Productionサービスがスケールアウト可能な最大レプリカ数は20です。これらの制限は時間とともに増加します。現在、より高い制限が必要な場合は、ClickHouse Cloudサポートチームにご連絡ください。
  • 現在、スケールイン操作中に削除されるレプリカのシステムテーブルデータは保持されません。これは、システムテーブルデータを利用しているダッシュボードや他の機能に影響を与える可能性があります。

APIを介した水平スケーリング

クラスタを水平スケーリングするには、APIを通じてPATCHリクエストを発行し、レプリカ数を調整します。以下のスクリーンショットは、3レプリカのクラスタを6レプリカにスケールアウトするAPIコールと、その対応するレスポンスを示しています。

<img alt="スケーリング設定ページ" style={{width: '500px', marginLeft: 0}} src={require('./images/scaling-patch-request.png').default} />

レプリカ数を更新するPATCHリクエスト

<img alt="スケーリング設定ページ" style={{width: '450px', marginLeft: 0}} src={require('./images/scaling-patch-response.png').default} />

PATCHリクエストからのレスポンス

新しいスケーリングリクエストや複数のリクエストを連続して発行すると、そのうち1つが進行中の場合、スケーリングサービスは中間状態を無視し、最終的なレプリカ数に収束します。

UIを介した水平スケーリング

UIからサービスを水平スケーリングするには、設定ページでサービスのノード数を調整します。

<img alt="スケーリング設定ページ" style={{width: '500px', marginLeft: 0}} src={require('./images/scaling-configure.png').default} />

ClickHouse Cloudコンソールからのサービススケーリング設定

サービスのスケールが完了すると、クラウドコンソールのメトリックダッシュボードに正しい割り当てが表示されるはずです。以下のスクリーンショットは、クラスタが96 GiBの総メモリにスケールしていることを示しており、これは6レプリカ、各レプリカにGiBのメモリが割り当てられています。

<img alt="スケーリング設定ページ" style={{width: '500px', marginLeft: 0}} src={require('./images/scaling-memory-allocation.png').default} />

自動アイドリング

設定ページでは、サービスが非アクティブ時に自動アイドリングが許可されるかどうかを選択できます(すなわち、サービスがユーザー提出のクエリを実行していないとき)。自動アイドリングにより、サービスのコストを削減でき、サービスが一時停止中はコンピューティングリソースに対して請求が発生しません。

:::danger 自動アイドリングを使用しない場合 自動アイドリングは、クエリに応答する前に遅延を許容できる場合のみ使用してください。サービスが一時停止されると、その間の接続がタイムアウトします。自動アイドリングは、使用頻度が少なく、遅延が許容できるサービスに理想的です。頻繁に使用される顧客向け機能を動かすサービスには推奨されません。 :::

突発的なワークロードの取り扱い

予想されるワークロードのスパイクがある場合は、ClickHouse Cloud APIを使用して、あらかじめサービスを拡張し、スパイクを処理した後に需要が落ち着いたらスケールダウンすることができます。各レプリカの現在のCPUコアとメモリリソースを理解するために、以下のクエリを実行できます

SELECT *
FROM clusterAllReplicas('default', view(
    SELECT
        hostname() AS server,
        anyIf(value, metric = 'CGroupMaxCPU') AS cpu_cores,
        formatReadableSize(anyIf(value, metric = 'CGroupMemoryTotal')) AS memory
    FROM system.asynchronous_metrics
))
ORDER BY server ASC
SETTINGS skip_unavailable_shards = 1