レプリカのスケール
Zilliz Cloud はクラスターレベルのレプリケーションをサポートしています。各レプリカは、クラスター内のリソースとデータの完全なコピーです。レプリカを使用することで、クエリスループットと可用性を向上させることができます。
QPS のボトルネックを経験しているユーザーにとって、レプリカを追加することでクエリワークロードを分散し、全体のクエリスループットを強化できます。パフォーマンスを事前に最適化するには、メトリクス ページで Query CU 計算 を監視し、レプリカのスケーリングが必要な時期を判断してください。
なお、レプリカを追加してもクラスター容量は増加しません。容量は各クラスターのクエリ CU 数によってのみ決定されるためです。クラスター容量を増やしたい場合は、クラスターのスケール を参照してください。
このガイドでは、Zilliz Cloud においてクラスターのレプリカを設定する手順について説明します。
制限
以下の条件を満たす限り、既存の Dedicated クラスターに対してレプリカを設定できます。
-
クラスターに 8 以上のクエリ CU があること
-
クラスターのクエリ CU 数 x レプリカ数 の積が 1,024 を超えないこと
レプリカ設定の更新により、わずかなサービスジッターが発生する可能性があります。ご注意ください。
マニュアルスケーリング
既存の Dedicated クラスターのレプリカ数は、コンソール上で手動で、またはプログラム的に調整できます。
以下のデモでは、Zilliz Cloud Web コンソールでレプリカを設定する方法を示します。
クラスターレプリカのスケール ダイアログボックスで 保存 をクリックすると、プロジェクトのリソース割当量を確認するよう促されます。リソースが十分であれば、確認完了後にダイアログボックスは閉じます。そうでない場合は、
プロジェクトのリソース設定へ移動 をクリックしてプロジェクトのリソース設定を編集するか、
前のステップに戻る をクリックしてクラスター設定を変更してください。
処理过程中、ローリングのために追加のリソースが必要になります。これらのリソースは使用後に解放されます。
また、RESTful API を使用してクラスター内のレプリカ数を手動で調整することもできます。詳細については、クラスターレプリカの変更 を参照してください。
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 '{
"replica": 2
}'
スケジュールされたスケーリング
Zilliz Cloud ウェブコンソールまたは RESTful API を使用して、事前に定義された時間スケジュールに基づくレプリカのスケーリングを設定できます。
スケジュール間の間隔は 30 分以上である必要があります。
高度なモードを使用して cron 式を記述する方法の詳細については、Cron Expression を参照してください。
以下のデモでは、レプリカの自動スケーリングを有効にする方法を示します。
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": {
"replica": {
"schedules": [
{
"cron": "10 0 0 0 0 ?",
"target": 2
}
]
}
}
}'
動的スケーリング
Zilliz Cloud はレプリカの動的スケーリングをサポートしており、手動での介入なしにパフォーマンスを維持できるようにします。この機能を有効にすると、システムはリアルタイムの CU計算 メトリクスに基づいて自動的に レプリカ数 を調整し、サービスの中断なくワークロードを効率的に処理します。
動的スケーリングを設定する際には、以下の境界値を設定できます:
-
最小レプリカ: デフォルトは現在のレプリカ数です。
-
最大レプリカ: デフォルトは現在の CU サイズの 1 倍です。最大レプリカ数は 10 を超えることはできません。この上限を引き上げる必要がある場合は、サポートチームにお問い合わせください。
現在の値より小さい最大レプリカ数を選択すると、即座にスケールインが実行されます。
現在の値より大きい最小レプリカ数を選択すると、即座にスケールアウトが実行されます。
トリガー条件
-
スケールアウト: CU計算が 2 分間連続で 60% を超えた場合にトリガーされます。
-
スケールイン: CU計算が 10 分間連続で 40% を下回った場合にトリガーされます。
スケーリングサイズの計算方法
以下の式は、Zilliz Cloud が動的スケーリングイベント時の目標レプリカ数をどのように計算するかを示しています。動的スケーリングの計算式は、CU計算を目標値である 50% に維持することを目的としています。
Target Replica Count = Current Replica Count × (Current Metric Value / Target Metric Value)
変数名 | 説明 |
|---|---|
ターゲットレプリカ数 | システムがスケーリングを試みる新しいレプリカ数。 |
現在のレプリカ数 | クラスターの現在のレプリカ数。 |
現在のメトリクス値 | CU計算メトリクスの現在の測定値。 |
ターゲットメトリクス値 | スケーリング後の期待されるCU計算値で、50%となる。 |
たとえば、レプリカの動的スケーリングが有効になっており、以下の条件が満たされている場合:
-
現在のレプリカ数:1
-
クラスターのCU計算: 10分間60%を超える
動的スケーリングイベントがトリガーされます。ターゲットクエリCU数は次のように計算されます:
1 × (60 / 50) = 1.2
この値はその後、切り上げられて 2 となり、新しいレプリカ数が 2 になります。
Procedures
以下のデモでは、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": {
"replica": {
"min": 1,
"max": 2
}
}
}'
スケーリングの進行状況を確認する
手動スケーリングのリクエストが送信された後、またはスケジュール済みもしくは動的スケーリングのイベントがトリガーされると、ジョブレコードが生成されます。進行状況は ジョブ ページで確認できます。
スケーリングジョブが進行中の間、クラスターのステータスは「変更中」に変更されます。スケーリングジョブが成功すると、クラスターステータスは「Running」に変更されます。