이번에는 Milvus 데이터베이스 docker에 구축방법을 작성해보겠습니다.
순서
- Container
- Docker-Compose
방법1. docker-standalone
본문링크 : https://milvus.io/docs/install_standalone-docker.md
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
※ 명령어 종류
- restart # 재기동 명령어
- start # 시작 명령어
- stop # 중지 명령어
- delete
# volume까지 삭제 즉, 초기화 하는 명령어
# delete를 사용하면 설치한적이 없는것처럼 지워집니다.
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 명령어를 사용한겁니다^^
정상적으로 올라간 모습
5. 서비스 중지
./standalone_embed.sh stop
중지 및 container 중지된 모습
백그라운드 종료
# Container를 사용하면서 쉽고 빠르게 구축 및 테스트를 진행할 수 있습니다.
방법2. docker-compose
본문링크 : https://milvus.io/docs/install_standalone-docker-compose.md
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
[다운로드 사진]
[다운로드 완료 후 자동 실행]
3. docker 명령어를 이용해서 실행중인지 확인
docker ps -a
4. 파일설명
Docker Compose 설정에서 milvus-etcd, milvus-minio, milvus-standalone 이라는 세 가지 서비스가 포함되어 있는 경우,
각 모듈의 역할은 다음과 같습니다
- milvus-etcd
역할:
milvus-etcd는 Milvus의 메타데이터 관리에 사용되는 etcd 인스턴스를 실행합니다.
etcd는 분산 키-값 저장소로, Milvus에서 분산된 환경에서의 구성 관리, 서비스 디스커버리, 그리고 클러스터 상태 관리 등을 담당합니다.
주요 기능:
1. Milvus 클러스터의 메타데이터 관리
2. Milvus 노드 간의 상태 동기화
3. 클러스터 내에서의 설정 관리 - milvus-minio
역할:
milvus-minio는 Milvus에서 객체 스토리지를 제공하는 MinIO 인스턴스를 실행합니다.
MinIO는 AWS S3와 호환되는 인터페이스를 제공하며, Milvus의 벡터 데이터를 저장하는 데 사용됩니다.
주요 기능:
1. 벡터 데이터 및 메타데이터의 영구 저장
2. 데이터의 백업 및 복구 지원
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
일단 간단하게 설치하는 방법에 대해 설명을 드렸으며, 다음에는 파이썬 코드와 연결하는 방법을 알려드리겠습니다.
감사합니다.
'VectorDB' 카테고리의 다른 글
[VectorDB] 밀버스(milvus) DB 데이터 csv 추출 튜토리얼 (1) | 2024.09.30 |
---|---|
[VectorDB]Milvus와 하이브리드 서치을 활용한 고급 벡터 검색 구현하기 (1) | 2024.09.03 |
[VectorDB] Milvus와 BGE-M3 모델로 문서 임베딩 및 AI 질의응답 구현하기 (8) | 2024.09.02 |
[VectorDB] Milvus 연결 + 컬렉션 및 스키마 생성하기 (0) | 2024.08.26 |
[VectorDB] Milvus 정의 (0) | 2024.08.22 |