メインコンテンツまでスキップ
バージョン: User Guides (Cloud)

レプリカのスケール

Zilliz Cloud はクラスタレベルのレプリケーションをサポートしています。各レプリカは、クラスタ内のリソースとデータの完全なコピーです。レプリカを使用することで、クエリのスループットと可用性を向上させることができます。

QPS のボトルネックが発生しているユーザーの場合、レプリカを追加することでクエリワークロードを分散し、全体のクエリスループットを強化できます。パフォーマンスを事前に最適化するには、メトリクス ページでクエリ CU 計算を監視し、レプリカのスケールが必要な時期を判断してください。

なお、レプリカを追加してもクラスタ容量は増加しません。クラスタ容量は、各クラスタのクエリ CU 数によってのみ決定されるためです。クラスタ容量を増やしたい場合は、クラスタのスケール を参照してください。

本ガイドでは、Zilliz Cloud でクラスタのレプリカを設定する手順について説明します。

📘Notes

この機能は、Enterprise プロジェクト内のDedicated クラスタでのみ利用可能です。

制限

以下の条件を満たす限り、既存の Dedicated クラスタに対してレプリカを設定できます。

  • クラスタに 8 以上のクエリ CU があること

  • クラスタのクエリ CU 数 x レプリカ数の積が 1,024 を超えないこと

🚧Warning

レプリカ設定の更新により、わずかなサービスの揺らぎが発生する可能性があります。ご注意ください。

マニュアルスケール

既存の 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 を超えることはできません。この上限を引き上げる必要がある場合は、サポートチームにお問い合わせください

📘Notes
  • 現在の値より小さい最大レプリカ数を選択すると、即座にスケールインが実行されます。

  • 現在の値より大きい最小レプリカ数を選択すると、即座にスケールアウトが実行されます。

トリガー条件

  • スケールアウト: 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」に変更されます。