이번에는 Milvus 데이터베이스 docker에 구축방법을 작성해보겠습니다.

 

순서

  • Container
  • Docker-Compose

방법1. docker-standalone

본문링크 : https://milvus.io/docs/install_standalone-docker.md

 

Run Milvus in Docker | Milvus Documentation

Learn how to install Milvus standalone with Docker. | v2.4.x

milvus.io

 

Milvus-standalone 쉘파일 다운로드 코드

curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.sh

 

 

1. VMware 혹은 자신의 서버에서 curl 위 명령어를 사용을 해서 sh 파일을 다운로드 받습니다.

다운로드 받은 사진

 

2. chmod를 이용하여 실행 권한을 추가합니다.

chmod +x standalone_embed.sh

실행 권한 추가

 

3. 실행권한 획득 후 실행을 합니다.

./standalone_embed.sh start

milvus start

 

※ 명령어 종류

  1. restart # 재기동 명령어
  2. start # 시작 명령어
  3. stop # 중지 명령어
  4. delete
    # volume까지 삭제 즉, 초기화 하는 명령어
    # delete를 사용하면 설치한적이 없는것처럼 지워집니다.

start를 하면 자동적으로 도커이미지를 다운로드 받는 모습
다운로드 완료 후 정상적으로 실행된 모습
서비스가 실행 되면서 생긴 파일들

4. 파일 설명

  • user.yaml 파일
    user.yaml 파일은 사용하시는분의 설정값을 선언할 수 있는 파일입니다.
    ex) server_config:
            Address: 0.0.0.0
            Port: 19530
    이런 느낌으로 선언하실 수 있지만... 테스트 목적이면 넘어가시면 됩니다^^
    그냥 default로 사용하실것이면 그냥 냅두시면 됩니다.

  • embedEtcd.yaml
    Milvus와 함께 설치되는 embedded etcd의 설정파일입니다.
    Etcd는 분산 키-값 저장소로, 분산 시스템에서 설정, 서비스 디스커버리, 동기화 등의 목적으로 사용됩니다.

embedEtcd.yaml 파일내부 요소

listen-client-urls: http://0.0.0.0:2379
advertise-client-urls: http://0.0.0.0:2379
quota-backend-bytes: 4294967296
auto-compaction-mode: revision
auto-compaction-retention: '1000'
  • sten-client-urls
    클라이언트(예: Milvus)가 etcd에 연결할 때 사용할 URL을 지정합니다.

  • advertise-client-urls
    etcd가 클라이언트에게 알릴 URL을 설정합니다.

  • quota-backend-bytes
    etcd 데이터베이스의 최대 크기를 지정합니다.
    4294967296 바이트는 4GB를 의미합니다.
    etcd가 사용하는 백엔드 데이터 저장소(Boltdb)의 최대 크기를 제한하여, 디스크 공간 사용을 관리할 수 있습니다.
    백엔드 크기가 이 한도에 도달하면 etcd는 더 이상 데이터를 쓸 수 없고, 쓰기 작업은 실패합니다.

  • auto-compaction-mode
    revision 이 설정은 자동 압축(compaction)의 모드를 설정합니다.
    revision 모드는 etcd의 개정(revision) 단위로 압축을 수행합니다.
    개정이란 etcd의 데이터가 변경될 때마다 증가하는 숫자입니다.
    이 모드에서는 일정한 개정이 지나면 자동으로 압축이 발생하여 데이터 저장소에서 불필요한 이력 데이터를 제거하고 공간을 절약합니다.

  • auto-compaction-retention
    '1000'이 설정은 auto-compaction-mode에 따라 자동 압축이 유지되는 기간을 정의합니다.
    revision 모드에서 이 값이 1000으로 설정된 경우, etcd는 마지막 1000개 개정(revisions)만 유지하고, 그 이전의 데이터는 압축하여 제거합니다.
    즉, etcd는 최신 1000개의 수정 내역만을 보존하고, 오래된 내역은 자동으로 삭제됩니다.

딱히 건들이실 내용은 없으므로 패스합니다.

 

  • Volumes
    데티어베이스 혹은 어플리케이션의 데이터를 영구적으로 저장하는 디렉토리 혹은 스토리지 위치를 가리킵니다.

    cat standalone_embed.sh파일을 보면 

    -v $(pwd)/volumes/milvus:/var/lib/milvus
    위 내용이 있는데 volumes의 폴더를 가상docker container에 마운트를 합니다.

    명령어 중 delete만 사용을 안하시면 날라갈 일이 없습니다.
    만약에 volumes가 사라졌다고 하면 rm -rf volumes로 지웠던가,
    ./standalone_embed.sh delete 명령어를 사용한겁니다^^

정상적으로 올라간 모습

docker ps -a로 정상적으로 올라간지 확인

5. 서비스 중지

./standalone_embed.sh stop

 

중지 및 container 중지된 모습

stop 명령어 사용 및 container 중지된 모습

 

백그라운드 종료

백그라운 종료

 

 

# Container를 사용하면서 쉽고 빠르게 구축 및 테스트를 진행할 수 있습니다.


방법2. docker-compose

본문링크 : https://milvus.io/docs/install_standalone-docker-compose.md

 

Run Milvus in Docker | Milvus Documentation

Learn how to install Milvus standalone with Docker. | v2.4.x

milvus.io

 

Milvus-standalone-docker-compose 실행 파일 다운로드 코드

wget https://github.com/milvus-io/milvus/releases/download/v2.4.9/milvus-standalone-docker-compose.yml -O docker-compose.yml

 

 

1. VMware 혹은 자신의 서버에서 wget 위 명령어를 사용을 해서 docker-compose 파일을 다운로드 받습니다.

다운로드 받는 사진
파일 정상확인

 

2. docker-compose로 실행하기

 

실행명령어

docker-compose up -d

 

[다운로드 사진]

자동적으로 docker 이미지 다운로드 및 실행하는 사진

 

[다운로드 완료 후 자동 실행]

다운로드 후 정상적으로 올라간 모습

 

3. docker 명령어를 이용해서 실행중인지 확인

docker ps -a

정상적으로 올라간 사진

 

4. 파일설명

Docker Compose 설정에서 milvus-etcd, milvus-minio, milvus-standalone 이라는 세 가지 서비스가 포함되어 있는 경우,

각 모듈의 역할은 다음과 같습니다

  1. milvus-etcd
    역할: 
    milvus-etcd는 Milvus의 메타데이터 관리에 사용되는 etcd 인스턴스를 실행합니다.
    etcd는 분산 키-값 저장소로, Milvus에서 분산된 환경에서의 구성 관리, 서비스 디스커버리, 그리고 클러스터 상태 관리 등을 담당합니다.

    주요 기능:
    1. Milvus 클러스터의 메타데이터 관리
    2. Milvus 노드 간의 상태 동기화
    3. 클러스터 내에서의 설정 관리

  2. milvus-minio
    역할: 
    milvus-minio는 Milvus에서 객체 스토리지를 제공하는 MinIO 인스턴스를 실행합니다. 
    MinIO는 AWS S3와 호환되는 인터페이스를 제공하며, Milvus의 벡터 데이터를 저장하는 데 사용됩니다.

    주요 기능:
    1. 벡터 데이터 및 메타데이터의 영구 저장
    2. 데이터의 백업 및 복구 지원
    3. 고가용성과 확장성을 위한 분산 스토리지 제공

  3. milvus-standalone
    역할: 
    milvus-standalone은 Milvus의 단일 노드 버전을 실행합니다. 
    이 모듈은 Milvus 서버의 모든 핵심 기능을 단일 인스턴스로 제공하며, 개발 및 테스트 환경에서 주로 사용됩니다.

    주요 기능:
    1. 벡터 검색, 삽입, 삭제 등의 Milvus 주요 기능 실행
    2. etcd와 MinIO와의 통합을 통해 메타데이터와 데이터 저장 관리
    3. 단일 노드 환경에서 모든 Milvus 기능을 간단하게 테스트 및 개발할 수 있음

 

5. Milvus 계정 정리

 

1. Minio (docker-compose만 해당)

    주소 : http://localhost:9001/login

    id : minioadmin

    pw : minioadmin

 

페이지 로그인 한 모습

 

2. milvus-standalone

    id : root

    pw : Milvus

 

3. milvus alive 확인방법(container, compose 동일)

주소 : http://localhost:9091/healthz

접속시 위 "OK" 문구가 나오면 정상적으로 구동중임을 확인 하실  수 있습니다.

 

 

6. docker-compose 종료 방법

 

[종료 명령어]

docker-compose down

종료 명령어 사용한 사진

 

종료 이후 자동으로 백그라운드까지 지워진 사진

 

 

일단 간단하게 설치하는 방법에 대해 설명을 드렸으며, 다음에는 파이썬 코드와 연결하는 방법을 알려드리겠습니다.

감사합니다.