Milvusクラスタのスケール
Milvusはコンポーネントの水平スケーリングをサポートしています。つまり、必要に応じて各タイプのワーカーノードの数を増やしたり減らしたりすることができます。
このトピックでは、Milvusクラスタのスケールアウトおよびスケールイン方法について説明します。スケールアウトする前にMilvusクラスタをインストール済みであることを前提としています。また、始める前にMilvusアーキテクチャに慣れておくことをお勧めします。
このチュートリアルでは、3つのクエリノードのスケールアウトを例として取り上げます。他の種類のノードをスケールアウトするには、コマンドラインでqueryNode
を対応するノードタイプに置き換えてください。
Milvus Operatorを使用してクラスタをスケールアウトする方法については、Milvus Operatorを使用したクラスタのスケールアウトを参照してください。
水平スケーリングとは何ですか?
水平スケーリングには、スケールアウトとスケールインがあります。
スケールアウト
スケールアウトとは、クラスタ内のノード数を増やすことを指します。スケールアップとは異なり、スケールアウトではクラスタ内の1つのノードにより多くのリソースを割り当てる必要はありません。その代わりに、スケールアウトではノードを追加することでクラスタを水平方向に拡張します。
スケールアウト
スケールアップ
Milvusアーキテクチャによると、ステートレスワーカーノードにはクエリノード、データノード、インデックスノード、プロキシが含まれます。そのため、ビジネスニーズやアプリケーションシナリオに合わせてこれらのタイプのノードをスケールアウトすることができます。Milvusクラスタは手動または自動でスケールアウトすることができます。
一般的に、作成したMilvusクラスタが過剰に使用されている場合はスケールアウトする必要があります。以下はMilvusクラスタのスケールアウトが必要となる典型的な状況です:
- CPUとメモリの使用率が一定期間高い。
- クエリのスループットが高くなった。
- インデックス作成の高速化が必要
- 大量の大規模データセットを処理する必要がある。
- Milvusサービスの高い可用性を確保する必要がある。
スケールイン
スケールインとは、クラスタ内のノード数を減らすことを指します。一般的に、作成したMilvusクラスタが十分に利用されていない場合、スケールインする必要があります。以下はMilvusクラスタのスケールインが必要な典型的な状況です:
- CPUとメモリの使用率が一定期間低い。
- クエリのスループットが低下している。
- インデックス作成の高速化は必要ない。
- 処理するデータセットのサイズが小さい。
前提条件
kubectl get pods
を実行して、作成したMilvusクラスタ内のコンポーネントとその作業ステータスのリストを取得します。
NAME READY STATUS RESTARTS AGE
my-release-etcd-0 1/1 Running 0 1m
my-release-milvus-datacoord-7b5d84d8c6-rzjml 1/1 Running 0 1m
my-release-milvus-datanode-665d4586b9-525pm 1/1 Running 0 1m
my-release-milvus-indexcoord-9669d5989-kr5cm 1/1 Running 0 1m
my-release-milvus-indexnode-b89cc5756-xbpbn 1/1 Running 0 1m
my-release-milvus-proxy-7cbcc8ffbc-4jn8d 1/1 Running 0 1m
my-release-milvus-pulsar-6b9754c64d-4tg4m 1/1 Running 0 1m
my-release-milvus-querycoord-75f6c789f8-j28bg 1/1 Running 0 1m
my-release-milvus-querynode-7c7779c6f8-pnjzh 1/1 Running 0 1m
my-release-milvus-rootcoord-75585dc57b-cjh87 1/1 Running 0 1m
my-release-minio-5564fbbddc-9sbgv 1/1 Running 0 1m
Milvusクラスタのスケール
Milvusクラスタは手動または自動でスケールできます。自動スケールが有効な場合、CPUおよびメモリリソースの消費量が設定した値に達すると、Milvusクラスタは自動的に縮小または拡張されます。
現在のところ、Milvus 2.1.0では手動によるスケールインおよびスケールアウトのみがサポートされています。
スケールアウト
helm upgrade my-release milvus/milvus --set queryNode.replicas=3 --reuse-values
を実行して手動でクエリノードをスケールアウトします。
成功すると、以下の例のようにクエリノード上で実行中のポッドが3つ追加されます。
NAME READY STATUS RESTARTS AGE
my-release-etcd-0 1/1 Running 0 2m
my-release-milvus-datacoord-7b5d84d8c6-rzjml 1/1 Running 0 2m
my-release-milvus-datanode-665d4586b9-525pm 1/1 Running 0 2m
my-release-milvus-indexcoord-9669d5989-kr5cm 1/1 Running 0 2m
my-release-milvus-indexnode-b89cc5756-xbpbn 1/1 Running 0 2m
my-release-milvus-proxy-7cbcc8ffbc-4jn8d 1/1 Running 0 2m
my-release-milvus-pulsar-6b9754c64d-4tg4m 1/1 Running 0 2m
my-release-milvus-querycoord-75f6c789f8-j28bg 1/1 Running 0 2m
my-release-milvus-querynode-7c7779c6f8-czq9f 1/1 Running 0 5s
my-release-milvus-querynode-7c7779c6f8-jcdcn 1/1 Running 0 5s
my-release-milvus-querynode-7c7779c6f8-pnjzh 1/1 Running 0 2m
my-release-milvus-rootcoord-75585dc57b-cjh87 1/1 Running 0 2m
my-release-minio-5564fbbddc-9sbgv 1/1 Running 0 2m
スケールイン
helm upgrade my-release milvus/milvus --set queryNode.replicas=1 --reuse-values
を実行して、クエリノードをスケールインします。
成功すると、次の例に示すように、クエリ・ノード上で実行中の 3 つのポッドが 1 つに減ります。
NAME READY STATUS RESTARTS AGE
my-release-etcd-0 1/1 Running 0 2m
my-release-milvus-datacoord-7b5d84d8c6-rzjml 1/1 Running 0 2m
my-release-milvus-datanode-665d4586b9-525pm 1/1 Running 0 2m
my-release-milvus-indexcoord-9669d5989-kr5cm 1/1 Running 0 2m
my-release-milvus-indexnode-b89cc5756-xbpbn 1/1 Running 0 2m
my-release-milvus-proxy-7cbcc8ffbc-4jn8d 1/1 Running 0 2m
my-release-milvus-pulsar-6b9754c64d-4tg4m 1/1 Running 0 2m
my-release-milvus-querycoord-75f6c789f8-j28bg 1/1 Running 0 2m
my-release-milvus-querynode-7c7779c6f8-pnjzh 1/1 Running 0 2m
my-release-milvus-rootcoord-75585dc57b-cjh87 1/1 Running 0 2m
my-release-minio-5564fbbddc-9sbgv 1/1 Running 0 2m
次のステップ
Milvusのサービスを監視してアラートを作成する方法を学びたい場合は、次の手順に進んでください:
クラウド上にクラスタをデプロイする準備ができている場合は、こちらを参照してください:
リソースの割り当て方法をお探しの方は、こちらをご覧ください: