Milvus 독립형 확장
Milvus Standalone은 단일 머신 서버 배포입니다. Milvus Standalone의 모든 구성 요소는 단일 Docker 이미지에 포함되어 있어 배포가 편리합니다. 이 항목에서는 이 모드에서 실행 중인 Milvus 인스턴스를 확장하는 방법에 대해 설명합니다.
전제 조건
Docker 또는 Docker Compose로 Milvus Standalone을 배포할 때 배포 스크립트(standalone_embed.sh) 또는 구성 파일(docker-compose.yml)은 여러 볼륨을 생성하고 이를 호스트 디렉터리에 매핑하여 데이터 지속성을 보장합니다.
이러한 방식으로 배포된 Milvus 인스턴스를 확장하려면 기존 컨테이너 또는 컨테이너 스택을 중지 및 제거하고, 업데이트된 구성 설정으로 Milvus Standalone을 다시 배포하고, 호스트에서 지속된 데이터를 재사용하여 새 인스턴스를 시작해야 합니다.
다음 표에는 호스트와 컨테이너 간의 볼륨 매핑이 나와 있습니다.
배포 옵션 |
호스트 경로 |
컨테이너 경로 |
|---|---|---|
Docker |
|
|
|
|
|
|
|
|
도커 컴포즈 |
|
|
|
|
|
|
|
이 가이드의 절차를 실행하기 전에 데이터가 위의 호스트 경로에 지속되는지 확인하세요.
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