Milvusスタンドアローンの拡張性
Milvus Standaloneはシングルマシンでのサーバ展開が可能です。Milvus Standaloneのすべてのコンポーネントは単一のDockerイメージにまとめられており、デプロイを便利にします。このトピックでは、このモードで動作するMilvusインスタンスをスケールする方法について説明します。
前提条件
DockerまたはDocker Composeを使用してMilvus Standaloneをデプロイする場合、デプロイスクリプト(standalone_embed.sh)または設定ファイル(docker-compose.yml)は複数のボリュームを作成し、データの永続性を確保するためにそれらをホストディレクトリにマッピングします。
この方法でデプロイされたMilvusインスタンスをスケールするには、既存のコンテナまたはコンテナスタックを停止して削除し、コンフィギュレーション設定を更新してMilvus Standaloneを再デプロイし、新しいインスタンスを起動するためにホスト上の永続化されたデータを再利用する必要があります。
次の表に、ホストとコンテナ間のボリュームマッピングを示します。
デプロイオプション |
ホストのパス |
コンテナパス |
|---|---|---|
ドッカー |
|
|
|
|
|
|
|
|
Docker Compose |
|
|
|
|
|
|
|
このガイドの手順を実行する前に、上記のホストパスにデータが永続化されていることを確認してください。
Dockerを使用してデプロイされたインスタンスのスケール
現在実行中のMilvusインスタンスをスケールするには、インスタンスを停止し、コンテナを削除し、新しい設定と永続化されたデータでインスタンスを再デプロイする必要があります。
具体的な手順は以下の通りです:
docker stats milvus-standaloneを実行し、Milvus インスタンスに割り当てられている CPU とメモリを表示する。出力は以下のようになるはずです:CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 917da667f2ff milvus-standalone 6.10% 171.8MiB / 3.886GiB 4.32% 1.57kB / 0B 1.01GB / 1.79MB 31コマンドの出力で、Milvusインスタンスの現在のリソース使用量を確認できます。
コンテナを停止し、削除する。
$ docker stop milvus-standalone $ docker rm milvus-standalonestandalone_embed.shスクリプトファイルを探し、docker runコマンドを見つけ、リソース制限を追加する。... sudo docker run -d \ --name milvus-standalone \ --security-opt seccomp:unconfined \ -e ETCD_USE_EMBED=true \ -e ETCD_DATA_DIR=/var/lib/milvus/etcd \ -e ETCD_CONFIG_PATH=/milvus/configs/embedEtcd.yaml \ -e COMMON_STORAGETYPE=local \ -v $(pwd)/volumes/milvus:/var/lib/milvus \ -v $(pwd)/embedEtcd.yaml:/milvus/configs/embedEtcd.yaml \ -v $(pwd)/user.yaml:/milvus/configs/user.yaml \ -p 19530:19530 \ -p 9091:9091 \ -p 2379:2379 \ --health-cmd="curl -f http://localhost:9091/healthz" \ --health-interval=30s \ --health-start-period=90s \ --health-timeout=20s \ --health-retries=3 \ --memory="4g" \ # New memory limit --cpus="2.0" \ # New CPU limit milvusdb/milvus:v2.5.11 \ milvus run standalone 1> /dev/null永続化されたデータが
standalone_embed.shスクリプトと同じフォルダにあることを確認し、以下のようにスクリプトを実行します:sudo bash standalone_embed.sh startdocker stats milvus-standalone、スケーリング後のMilvusインスタンスに割り当てられたCPUとメモリを表示します。出力は以下のようになるはずです:CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 7aea450f87ce milvus-standalone 7.52% 210.9MiB / 4GiB 5.15% 1.05kB / 0B 610kB / 8.19kB 29
Docker Composeを使用してデプロイされたインスタンスのスケール
現在実行中のMilvusインスタンスをスケールするには、インスタンスを停止し、コンテナスタックを削除し、新しい設定と永続化されたデータでインスタンスを再デプロイする必要があります。
具体的な手順は以下の通りです:
docker stats milvus-standaloneを実行し、Milvus インスタンスに割り当てられている CPU とメモリを表示します。出力は以下のようになるはずです:CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 917da667f2ff milvus-standalone 6.10% 171.8MiB / 3.886GiB 4.32% 1.57kB / 0B 1.01GB / 1.79MB 31コマンドの出力で、Milvusインスタンスの現在のリソース使用量を確認できます。
コンテナスタックを停止し、削除する。
$ docker compose downdocker-compose.yml設定ファイルを探し、スタンドアロンセクションを見つけ、リソース制限を追加する。... standalone: container_name: milvus-standalone image: milvusdb/milvus:v2.5.8 command: ["milvus", "run", "standalone"] deploy: resources: limits: cpus: "2" # new cpu limits memory: 4G # new memory limits security_opt: - seccomp:unconfined environment: ETCD_ENDPOINTS: etcd:2379 MINIO_ADDRESS: minio:9000 volumes: - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"] interval: 30s start_period: 90s timeout: 20s retries: 3 ports: - "19530:19530" - "9091:9091" depends_on: - "etcd" - "minio"永続化されたデータが利用可能であることを確認し、
docker composeを以下のように実行します:docker compose up -ddocker stats milvus-standaloneを実行し、スケーリング後にMilvusインスタンスに割り当てられたCPUとメモリを表示する。出力は以下のようになるはずです:CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 7aea450f87ce milvus-standalone 7.52% 210.9MiB / 4GiB 5.15% 1.05kB / 0B 610kB / 8.19kB 29