설치 방법

설치 방법

설치 방법 설명
Milvus Lite - Milvus 의 경량 버전
- Milvus Python SDK 에 포함됨 (라이브러리)
- 벡터 데이터 적재, 벡터 CRUD, 벡터 검색 등 대부분 기능 제공
Milvus 독립 실행형 - Docker 기반으로 Milvus 실행
- Docker 로 단독 컨테이너 실행 (Standalone) 혹은
- Docker Compose 로 실행할 수 있음
- Docker 단독 실행 : Standalone
- Docker Compose : Standalone, etcd, minio
Milvus 분산 실행형 - K8s 클러스터 대상으로 설치
- etcd, Pulsar, Minio 와 같은 종속 요소 포함

Milvus Lite 설치 및 사용

  • Python Milvus SDK 에 포함됨
1
pip install -U pymilvus
1
2
from pymilvus import MilvusClient
client = MilvusClient("./milvus_demo.db")

Milvus 독립 실행형, 분산 실행형 또한 파이썬 단에서 개발할 때에는 동일하게 MilvusClient 인스턴스를 통해 Milvus 저장소와 연결합니다.

Milvus 독립실행형

하드웨어 요구 사항

구성 요소 요구 사항 권장 사항
CPU - 인텔 2세대 코어 CPU 이상
- Apple 실리콘
- 독립형: 4코어 이상
- 클러스터: 8코어 이상
CPU 명령어 세트 - SSE4.2
- AVX
- AVX2
- AVX-512
- SSE4.2
- AVX
- AVX2
- AVX-512
RAM - 독립형: 8G
- 클러스터: 32G
- 독립형: 16G
- 클러스터 128G
하드 드라이브 SATA 3.0 SSD 이상 NVMe SSD 이상

소프트웨어 요구 사항

운영 체제 소프트웨어
macOS 10.14 이상 Docker 데스크톱
Linux 플랫폼 - Docker 19.03 이상
- Docker Compose 1.25.1 이상
WSL 2가 활성화된 Windows Docker 데스크톱

Docker 로 단독 설치와 실행

  • 도커 컨테이너를 설치하는 스크립트를 기반으로 실행, 종료 수행
  • 서비스 설정 변경은 스크립트를 실행하는 디렉터리에 생성된 user.yaml 에서 수정 가능
  • Milvus 데이터 볼륨은 스크립트 실행 디렉터리의 /volume/milvus 에 마운트 됨
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Download the installation script
$ curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.sh

# Start the Docker container
$ bash standalone_embed.sh start

# Stop Milvus
$ bash standalone_embed.sh stop

# Delete Milvus data
$ bash standalone_embed.sh delete

# upgrade Milvus
$ bash standalone_embed.sh upgrade
서비스 포트 서비스
19530 milvus
2379 milvus, etcd
9091 milvus web ui

Docker Compose 를 통한 설치와 실행

  • Docker Compose yaml 파일을 기반으로 여러 컨테이너를 실행
1
2
3
4
5
6
7
8
9
# Download the configuration file
$ wget https://github.com/milvus-io/milvus/releases/download/v2.5.10/milvus-standalone-docker-compose.yml -O docker-compose.yml

# Start Milvus
$ sudo docker compose up -d

Creating milvus-etcd ... done
Creating milvus-minio ... done
Creating milvus-standalone ... done
서비스 포트 서비스 비고
19530 milvus 호스트 포트 포워딩
9091 milvus web ui 호스트 포트 포워딩
2379 milvus, etcd  

설치해봤습니다

설치 환경 소개

  • Intel N100 CPU
  • RAM 32GB (16GB)
  • Rocky9.3
  • Docker-Compose 환경으로 설치

docker-compose 환경 구성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
version: '3.5'

services:
  etcd:
    container_name: milvus-etcd
    image: quay.io/coreos/etcd:v3.5.18
    environment:
      - ETCD_AUTO_COMPACTION_MODE=revision
      - ETCD_AUTO_COMPACTION_RETENTION=1000
      - ETCD_QUOTA_BACKEND_BYTES=4294967296
      - ETCD_SNAPSHOT_COUNT=50000
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd
    command: etcd -advertise-client-urls=http://etcd:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
    healthcheck:
      test: ["CMD", "etcdctl", "endpoint", "health"]
      interval: 30s
      timeout: 20s
      retries: 3

  minio:
    container_name: milvus-minio
    image: minio/minio:RELEASE.2023-03-20T20-16-18Z
    environment:
      MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY}
      MINIO_SECRET_KEY: ${MINIO_SECRET_KEY}
    ports:
      - "9001:9001"
      - "9000:9000"
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data
    command: minio server /minio_data --console-address ":9001"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3

  standalone:
    container_name: milvus-standalone
    image: milvusdb/milvus:v2.5.10
    command: ["milvus", "run", "standalone"]
    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"

networks:
  default:
    name: milvus

WebUI 접근하기

  • 웹 브라우저에서 http://서버IP:9091/webui 주소로 접근
  • 아래와 같은 페이지가 보인다면 성공

  • 9091 포트의 루트 (http://서버IP:9091)로 접근하면 404 에러가 발생하니 주의!

구성 이미지

  • etcd : 로그 브로커, 실시간 데이터(growing segment) 처리
  • minio : 패킹된 데이터 (sealed segment) 저장 및 제공
  • milvus-standalone : milvus 기능 제공
1
2
3
4
REPOSITORY            TAG                             IMAGE ID        SIZE
minio/minio           RELEASE.2023-03-20T20-16-18Z    400c20c8aac0    252MB
milvusdb/milvus       v2.5.10                         d500060a18e8    1.72GB
quay.io/coreos/etcd   v3.5.18                         b9e6889272c9    59MB

Reference

https://milvus.io/docs/ko/milvus_lite.md
https://milvus.io/docs/ko/install_standalone-docker.md
https://milvus.io/docs/ko/install_standalone-docker-compose.md

Comments