Milvus Standalone skalieren

Milvus Standalone ist eine Serverbereitstellung auf einer einzigen Maschine. Alle Komponenten von Milvus Standalone sind in ein einziges Docker-Image gepackt, was die Bereitstellung erleichtert. Dieses Thema beschreibt die Skalierung einer Milvus-Instanz, die in diesem Modus läuft.

Vorraussetzungen

Bei der Bereitstellung von Milvus Standalone mit Docker oder Docker Compose erstellt das Bereitstellungsskript (standalone_embed.sh) oder die Konfigurationsdatei (docker-compose.yml) mehrere Volumes und ordnet sie Host-Verzeichnissen zu, um die Datenpersistenz sicherzustellen.

Um eine auf diese Weise bereitgestellte Milvus-Instanz zu skalieren, müssen Sie den vorhandenen Container oder Container-Stack stoppen und entfernen, Milvus Standalone mit aktualisierten Konfigurationseinstellungen neu bereitstellen und die persistierten Daten auf Ihrem Host wiederverwenden, um eine neue Instanz zu starten.

Die folgende Tabelle listet die Datenträgerzuordnung zwischen dem Host und den Containern auf.

Bereitstellungsoption

Host-Pfad

Container-Pfad

Docker

$(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

Bevor Sie die Verfahren in diesem Handbuch ausführen, stellen Sie sicher, dass Ihre Daten in den oben genannten Host-Pfaden vorhanden sind.

Skalieren von Instanzen, die mit Docker bereitgestellt wurden

Um eine laufende Milvus-Instanz zu skalieren, müssen Sie die Instanz anhalten, den Container entfernen und die Instanz mit neuen Einstellungen und persistierten Daten neu bereitstellen.

Das spezifische Verfahren ist wie folgt:

  1. Führen Sie docker stats milvus-standalone aus, um die der Milvus-Instanz zugewiesene CPU und den Speicher anzuzeigen. Die Ausgabe sollte in etwa so aussehen wie die folgende:

    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
    

    In der Befehlsausgabe finden Sie die aktuelle Ressourcennutzung Ihrer Milvus-Instanz.

  2. Stoppen und entfernen Sie den Container.

    $ docker stop milvus-standalone
    $ docker rm milvus-standalone
    
  3. Suchen Sie die Skriptdatei standalone_embed.sh, finden Sie den Befehl docker run und fügen Sie die Ressourcenlimits hinzu.

    ...
        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. Vergewissern Sie sich, dass sich die persistierten Daten im gleichen Ordner wie das Skript standalone_embed.sh befinden, und führen Sie das Skript wie folgt aus:

    sudo  bash standalone_embed.sh start
    
  5. Führen Sie docker stats milvus-standalone aus, um die CPU und den Speicher, die der Milvus-Instanz nach der Skalierung zugewiesen wurden, anzuzeigen. Die Ausgabe sollte in etwa so aussehen wie die folgende:

    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
    

Skalieren von Instanzen, die mit Docker Compose bereitgestellt wurden

Um eine aktuell laufende Milvus-Instanz zu skalieren, müssen Sie die Instanz stoppen, den Container-Stack entfernen und die Instanz mit neuen Einstellungen und persistierten Daten neu bereitstellen.

Das spezifische Verfahren ist wie folgt:

  1. Führen Sie docker stats milvus-standalone aus, um die der Milvus-Instanz zugewiesene CPU und den Speicher anzuzeigen. Die Ausgabe sollte in etwa so aussehen wie die folgende:

    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
    

    In der Befehlsausgabe finden Sie die aktuelle Ressourcennutzung Ihrer Milvus-Instanz.

  2. Stoppen und entfernen Sie den Container-Stack.

    $ docker compose down
    
  3. Suchen Sie in der Konfigurationsdatei docker-compose.yml den Abschnitt "Standalone" und fügen Sie die Ressourcenbegrenzungen hinzu.

    ...
      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. Stellen Sie sicher, dass die persistierten Daten verfügbar sind, und führen Sie docker compose wie folgt aus:

    docker compose up -d
    
  5. Führen Sie docker stats milvus-standalone aus, um die CPU und den Speicher, die der Milvus-Instanz nach der Skalierung zugewiesen wurden, anzuzeigen. Die Ausgabe sollte in etwa so aussehen wie die folgende:

    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
Feedback

War diese Seite hilfreich?