クエリ CU のスケーリング
ワークロードが増大し、より多くのデータが書き込まれるにつれて、クラスターが容量制限に達する可能性があります。そのような場合、読み取り操作は引き続き機能しますが、新しい書き込み操作は失敗する可能性があります。
これを事前に管理するために、メトリクス ページでクエリ CU 容量を監視し、クエリ CU のスケーリングが必要な時期を判断できます。ビジネスのニーズとパターンに基づいて、クエリ CU 数を増やしてクラスター容量を拡張したり、需要が減少した際にコスト削減のために減らしたりすることができます。
なお、1〜8 CU のクラスターでは、クエリ CU を直接スケーリングできます。8 CU を超えるクラスターの場合は、レプリカ を増やす必要があります。
このガイドでは、変化するワークロードに合わせてクラスターのサイズを変更する方法について説明します。
この機能はDedicated クラスターでのみ利用可能です。
考慮事項
-
リソースの制限:
-
スケールアップ
-
Dedicated (Standard) クラスター: 最大 32 CU
Dedicated (Enterprise) クラスター: 最大 1,024 CU
-
クエリ CU 数 × レプリカ数 の積は 1,024 を超えてはなりません
より大きなクエリ CU については、営業担当者にお問い合わせください。
-
-
スケールダウン
-
レプリカを持つクラスターは、8 CU 未満にスケールダウンできません
-
スケールダウンリクエストが成功するのは、以下の条件を満たす場合のみです:
-
現在のデータ量が、新しい CU サイズの CU 容量の 80% 未満であること。
-
現在のコレクションおよびパーティション数が、新しい CU サイズで許可されるコレクションおよびパーティションの最大数 未満であること。
-
-
-
-
スケーリング中: クラスターのステータスが「変更中」に変化し、その間は操作を実行できません。複数のスケーリングタスクがトリガーされた場合、トリガースタンプに基づいて順次処理されます。完了時間はデータ量に依存します。
-
パフォーマンスへの影響: スケーリングにより、わずかなサービスのジッターが発生する可能性があります。
-
バックアップの制限: 動的およびスケジュールされたスケーリング設定は、バックアップ に含まれません。クラスターを復元した後、これらの設定を手動で再構成してください。
手動スケーリング
Zilliz Cloud コンソールまたは RESTful API を使用して、クラスターを手動でスケールアップまたはスケールダウンできます。
以下のデモでは、Zilliz Cloud Web コンソール上でクラスターを手動でスケールアップおよびスケールダウンする方法を示します。
さらに、RESTful API を使用してクエリ CU を手動でスケーリングすることもできます。
以下の例では、既存のクラスターを 2 CU にスケーリングします。詳細については、クラスターの変更 をご覧ください。
export TOKEN="YOUR_API_KEY"
export CLUSTER_ID="inxx-xxxxxxxxxxxxxxx"
curl --request POST \
--url "${BASE_URL}/v2/clusters/${CLUSTER_ID}/modify" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
-d '{
"cuSize": 2
}'
スケジュールされたスケーリング
この機能は、Enterprise プロジェクト内の Dedicated クラスターでのみ利用可能です。
スケジュール間の間隔は 30 分より大きくする必要があります。
cron 式を記述するための詳細モードの使用方法については、Cron Expression を参照してください。
さらに、以下のようにしてスケジュールされたスケーリングを有効にすることもできます。詳細については、Modify Cluster を参照してください。
export TOKEN="YOUR_API_KEY"
export CLUSTER_ID="inxx-xxxxxxxxxxxxxxx"
curl --request POST \
--url "${BASE_URL}/v2/clusters/${CLUSTER_ID}/modify" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
-d '{
"autoscaling": {
"cu": {
"schedules": [
{
"cron": "10 0 0 0 0 ?",
"target": 2
}
]
}
}
}'
Dynamic scaling
https://zilliverse.feishu.cn/sync/EaQKd6kURsSBc1bD8Loc4RsjnCg
Zilliz Cloud は、パフォーマンスを維持しつつ手動介入を不要にするための動的スケーリングをサポートしています。有効にすると、システムはリアルタイムの CU 容量メトリクスに基づいてクエリ CUリソースを自動的に調整し、サービス中断なくワークロードを効率的に処理します。
動的スケーリングを設定する際、以下の範囲を構成できます:
-
最小クエリ CU: デフォルトは現在のサイズです。
-
最大クエリ CU: デフォルトは現在の CU サイズの 4 倍です。
現在の値よりも低い最大クエリ CU を選択すると、即座にスケールダウンがトリガーされます。
現在の値よりも高い最小クエリ CU を選択すると、即座にスケールアップがトリガーされます。
Trigger conditions
-
スケールアップ: CU 容量が 10 分間 80% を超えた場合にトリガーされます。または、CU 容量が 100% に達すると、即座にスケールアップがトリガーされます。
-
スケールダウン: CU 容量が 30 分間 60% 未満の状態が続いた場合にトリガーされます。
-
スケールアップイベントの間には 10 分間のクールダウン期間が適用され、スケールダウンイベントの間には 30 分間のクールダウン期間が適用されます。スケールダウンは、目標メトリクス値に達するまでサイズごとに実行されます。
Scaling size calculation
以下の数式は、動的スケーリングイベントにおける目標クエリ CU 数を Zilliz Cloud がどのように計算するかを説明しています。動的スケーリングの数式は、CU 容量を目標値である 70% に維持することを目的としています。
Target Query CU Number = Current Query CU Number × (Current Metric Value / Target Metric Value)
変数名 | 説明 |
|---|---|
ターゲットクエリCU数 | システムがクラスターをスケーリングしようとする新しいサイズ。 |
現在のクエリCU数 | クラスターの現在のクエリCU数。 |
現在のメトリクス値 | CU容量メトリクスの現在の測定値。 |
ターゲットメトリクス値 | スケーリング後の期待されるCU容量値で、これは70である。 |
たとえば、クエリCUの動的スケーリングが有効になっており、以下の条件が満たされている場合:
-
現在のクエリCU数: 60 CU
-
クラスターのCU容量: 10分間80%を超える
動的スケーリングイベントがトリガーされます。このとき、ターゲットクエリCU数は次のように計算されます:
60 × (80 / 70) ≈ 68.57 CU
この値は次に利用可能な CU 数に切り上げられ、新しいサイズは 72 CU になります。
手順
以下のデモでは、Zilliz Cloud ウェブコンソールで動的オートスケーリングを設定する方法を示します。
また、RESTful API を使用して動的スケーリングを設定することもできます。詳細については、Modify Cluster を参照してください。
export TOKEN="YOUR_API_KEY"
export CLUSTER_ID="inxx-xxxxxxxxxxxxxxx"
curl --request POST \
--url "${BASE_URL}/v2/clusters/${CLUSTER_ID}/modify" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
-d '{
"autoscaling": {
"cu": {
"min": 1,
"max": 2
}
}
}'
スケーリングの進捗を確認する
手動スケーリングのリクエストが送信された場合、またはスケジュール済みもしくは動的スケーリングのイベントがトリガーされると、ジョブレコードが生成されます。進捗状況は ジョブ ページで確認できます。
スケーリングジョブが進行中の間、クラスターのステータスは「変更中」に変化します。スケーリングジョブが成功すると、クラスターステータスは「Running」に変化します。
FAQ
-
クラスターをスケールダウンする際の制限事項は何ですか?
レプリカを持つクラスターは、8 CU未満にスケールダウンできません。
スケールダウンのリクエストが成功するのは、以下の両方の条件を満たす場合のみです。
-
現在のデータ量が、新しいCUサイズの容量の80%未満であること。
-
コレクション数およびパーティション数が、新しいCUサイズで許容される上限内であること。
-