Milvusスタンドアローンの拡張性

Milvus Standaloneはシングルマシンでのサーバ展開が可能です。Milvus Standaloneのすべてのコンポーネントは単一のDockerイメージにまとめられており、デプロイを便利にします。このトピックでは、このモードで動作するMilvusインスタンスをスケールする方法について説明します。

前提条件

DockerまたはDocker Composeを使用してMilvus Standaloneをデプロイする場合、デプロイスクリプト(standalone_embed.sh)または設定ファイル(docker-compose.yml)は複数のボリュームを作成し、データの永続性を確保するためにそれらをホストディレクトリにマッピングします。

この方法でデプロイされたMilvusインスタンスをスケールするには、既存のコンテナまたはコンテナスタックを停止して削除し、コンフィギュレーション設定を更新してMilvus Standaloneを再デプロイし、新しいインスタンスを起動するためにホスト上の永続化されたデータを再利用する必要があります。

次の表に、ホストとコンテナ間のボリュームマッピングを示します。

デプロイオプション

ホストのパス

コンテナパス

ドッカー

$(pwd)/volumes/milvus

/var/lib/milvus

$(pwd)/embedEtcd.yaml

/milvus/configs/embedEtcd.yaml

$(pwd)/user.yaml

/milvus/configs/user.yaml

Docker Compose

${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd(milvus-etcd)

/etcd

${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio(milvus-minio)

/minio_data

${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus(milvus-standalone)

/var/lib/milvus

このガイドの手順を実行する前に、上記のホストパスにデータが永続化されていることを確認してください。

Dockerを使用してデプロイされたインスタンスのスケール

現在実行中のMilvusインスタンスをスケールするには、インスタンスを停止し、コンテナを削除し、新しい設定と永続化されたデータでインスタンスを再デプロイする必要があります。

具体的な手順は以下の通りです:

  1. 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インスタンスの現在のリソース使用量を確認できます。

  2. コンテナを停止し、削除する。

    $ docker stop milvus-standalone
    $ docker rm milvus-standalone
    
  3. standalone_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
    
  4. 永続化されたデータがstandalone_embed.sh スクリプトと同じフォルダにあることを確認し、以下のようにスクリプトを実行します:

    sudo  bash standalone_embed.sh start
    
  5. docker 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インスタンスをスケールするには、インスタンスを停止し、コンテナスタックを削除し、新しい設定と永続化されたデータでインスタンスを再デプロイする必要があります。

具体的な手順は以下の通りです:

  1. 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インスタンスの現在のリソース使用量を確認できます。

  2. コンテナスタックを停止し、削除する。

    $ docker compose down
    
  3. docker-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"
    
  4. 永続化されたデータが利用可能であることを確認し、docker compose を以下のように実行します:

    docker compose up -d
    
  5. docker 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
    

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
フィードバック

このページは役に立ちましたか ?