> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ClickHouse Cloud の水平オートスケーリングを設定する

# 水平オートスケーリング

<Note>
  水平オートスケーリングはプライベートプレビューで、Scale および Enterprise プランで利用できます。アクセスをリクエストするには、ClickHouse のアカウントチームまたはサポートにお問い合わせください。
</Note>

水平オートスケーリングでは、ワークロードの需要に応じて、サービスのレプリカが自動的に追加または削除されます。垂直オートスケーリングが各レプリカのサイズを変更するのに対し、水平オートスケーリングはレプリカ数を変更します。そのため、より負荷の高いクエリではなく、クエリ数の増加によって需要が生じるワークロードに適しています。

<div id="how-it-works">
  ## 仕組み
</div>

オートスケーラー はサービスを継続的に監視し、以下の 3 つのシグナルに基づいて 10 分ごとに水平スケーリングの推奨を行います。

* **同時実行クエリ数:** レプリカ全体で同時に実行されているクエリの最大数
* **CPU 使用率:** レプリカ全体での CPU 使用率の最大値
* **メモリ使用率:** レプリカ全体でのメモリ使用率の最大値

オートスケーラー は、サービス全体の使用率を 60% に維持することを目標としています。

* **スケールアウト:** 使用率が高水位の 80% を超えると、設定された最大数までレプリカが追加されます
* **スケールイン:** 使用率が低水位の 45% を下回ると、設定された最小数までレプリカが削除されます

ウォーターマーク間にギャップを設けることでヒステリシスを確保し、サービスがスケールアウトとスケールインを繰り返すのを防ぎます。実行中のワークロードを保護するため、スケールインはスケールアウトよりも意図的に慎重に行われます。

<div id="enable-horizontal-autoscaling">
  ## 水平オートスケーリングを有効にする
</div>

水平オートスケーリングは、サービスの**設定**ページ、または[ClickHouse Cloud レプリカスケーリング API](/docs/ja/products/cloud/api-reference/service/update-service-auto-scaling-settings)で設定できます。

有効にするには:

1. 最小メモリと最大メモリを同じ値に設定し、レプリカの垂直サイズを固定します。現時点では、水平オートスケーリングには固定のレプリカサイズが必要です。垂直オートスケーリングと水平オートスケーリングを同じサービスで同時に有効にすることはできません。
2. 最大レプリカ数を最小レプリカ数より大きく設定します。オートスケーラーはこの範囲内で動作します。2 つの値を同じに設定すると、サービスのレプリカ数が固定され、水平オートスケーリングは無効になります。

<Note>
  サービスは最大 20 レプリカまで水平スケーリングできます。さらにレプリカが必要な場合は、サポートチームにお問い合わせください。
</Note>

<div id="configure-your-clients">
  ## クライアントを設定する
</div>

新しいレプリカを追加しても、クライアントがそれらに接続しなければ効果はありません。長時間接続は、接続を開いた時点で存在していたレプリカに固定されたままとなるため、新しいレプリカを利用するには、クライアントで定期的に接続を更新する必要があります。

次のいずれかの方法でクライアントを設定します。

* **HTTPプロトコル (推奨) ：** デフォルトで接続の存続時間が短いため、トラフィックは自動的に新しいレプリカにも分散されます
* **ネイティブプロトコル：** 接続が定期的に再確立されるよう、最大接続有効期間を約30秒に設定します

<div id="choose-the-right-replica-size">
  ## 適切なレプリカサイズを選択する
</div>

水平オートスケーリングは、各レプリカが通常のクエリを余裕を持って実行できる十分なサイズである場合に最も効果を発揮します。レプリカを追加すると、サービスが並列に実行できるクエリ数は増えますが、個々のクエリで利用可能なメモリが増えるわけではありません。

推奨される方法:

1. 通常のクエリをいくつか、メモリエラーなしで余裕を持って実行できる垂直サイズを見つけます。
2. サービスをそのサイズに固定します。
3. クエリ量の増加に応じて、水平オートスケーリングでレプリカを追加します。

レプリカがワークロードに対して小さすぎる場合、オートスケーラーによって、クエリを処理できないレプリカが追加される可能性があります。オートスケーラーにはこれを防ぐための保護機構があります。たとえば、レプリカを追加しても対応できない単一の過大なクエリに対しては、スケールアウトしません。ただし、適切なサイジングは依然として重要です。

<div id="load-distribution">
  ## 負荷分散
</div>

水平オートスケーリングは、負荷がレプリカ間で均等に分散されていることを前提としています。あるレプリカの使用率が90%で、他のレプリカが10%にとどまっている場合、レプリカを追加しても効果はなく、まず負荷の偏りを解消する必要があります。オートスケーラーは負荷の偏りを検出し、それが解消されるまでスケールアウトを推奨しません。

負荷の偏りの一般的な原因には、少数のレプリカに集中する長時間接続 ([クライアントを設定する](#configure-your-clients)を参照) や、セッションに固定されたワークロードがあります。

<div id="observe-scaling-activity">
  ## スケーリングアクティビティを確認する
</div>

スケーリングイベントは、ClickHouse Cloud コンソールのサービスのメトリクスダッシュボードで確認できます。現在のレプリカ数とリソースの合計割り当てが表示されます。

<div id="known-limitations">
  ## 既知の制限事項
</div>

* 水平オートスケーリング はプライベートプレビューであり、ClickHouse Support に組織で有効化してもらう必要があります。
* 垂直レプリカサイズを固定するには、最小メモリを最大メモリと同じ値に設定する必要があります。
* 各サービスのレプリカ数は最大20個に制限されています。追加のレプリカが必要な場合は、サポートにお問い合わせください。
* 推奨は10分ごとに提示されます。水平オートスケーリング は、1分未満の急激な負荷増加に対応するようには設計されていません。予測可能なピークには、[スケジュールスケーリング](/docs/ja/products/cloud/features/autoscaling/scheduled-scaling)を検討してください。
