Docker에서 Milvus 인스턴스 실행하는법
RAG 관련 프로젝트를 진행하면서 aws 인스턴스에 milvus 인스턴스를 실행할 필요가 생겼다.
linux에서 Docker로 milvus 인스턴스 실행하는법을 알아보자.
linux 환경에 docker가 설치되어있어야한다.
인스턴스를 처음 실행했다면 아래 글을 참고해서 docker를 설치하고 오면 된다.
Milvus에서는 도커 컨테이너로 설치할 수 있는 설치 스크립트를 제공한다.
설치 스크립트 다운로드
curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.sh
도커 컨테이너 시작
bash standalone_embed.sh start
처음 실행하게 되면 컨테이너 이미지를 다운받게 된다.
잘 돌아가고 있음을 확인할 수 있다.
Python SDK를 활용해서 비밀번호를 변경할 수 있다.
ipynb 파일로 실행하면 편하다.
pymilvus 라이브러리를 다운받고 포트에 연결이 되는지 확인한다.
from pymilvus import connections
# 기본 연결
connections.connect(
alias="default",
host="0.0.0.0",
port="19530"
)
로컬에서 실행중이라면 그대로 실행하면 되고, 아니라면 localhost를 본인 인스턴스 ip주소로 치환하면 된다.
※ 연결 전에 인스턴스의 포트 3개를 허용해야합니다! (19530, 2379, 9091)
※ 오류가 뜬다면 먼저 포트가 연결되는지 확인해보세요.
import grpc
channel = grpc.insecure_channel('0.0.0.0:19530')
오류가 생기지 않는다면 DB에 접속이 잘되는지 확인한다.
from pymilvus import connections, utility
# 연결 상태 확인
print("연결된 aliases:", connections.list_connections())
try:
# 서버 정보 확인
print("서버 버전:", utility.get_server_version())
print("연결 성공!")
except Exception as e:
print(f"서버 정보 가져오기 실패: {e}")
저대로 사용하게되면 암호가 걸리지 않은 상태로 시작하므로 설정을 변경해야된다.
Milvus 구성을 수정하기 위해서는 user.yaml을 수정하면 된다.
cat << EOF > user.yaml
을 입력하면 터미널에서 원하는 내용을 여러 줄 직접 입력하고, 마지막에 EOF를 입력하면 입력한 내용이 user.yaml
파일로 저장된다.
만약 중간에 잘못 입력했으면 당황하지말고 ctrl + c 하시라.. 그러면 저장하지않고 빠져나올 수 있다.
터미널에서 파일 수정하는게 귀찮다면 vscode에서 ssh로 들어가서 수정해주자.
user.yaml
파일을 변경했으면 서비스를 다시 시작해야한다.
bash standalone_embed.sh restart
common:
security:
authorizationEnabled: true
해당 부분을 user.yaml에 입력하고 재시작하면 인증이 활성화된다.
사실 재시작 안해도 되더라
root 사용자 계정이 생성되며 초기 root 비밀번호는 Milvus
가 기본값으로 설정된다.
암호를 입력받도록 설정을 바꿨으니 이제 root 계정의 비밀번호를 변경해야한다.
from pymilvus import MilvusClient
client = MilvusClient(
uri='http://localhost:19530', # replace with your own Milvus server address
token="root:Milvus"
)
localhost를 ip주소로 치환해서 쓰면 된다.
client.update_password(
user_name="root",
old_password="Milvus",
new_password="P@ssw0rd123"
)
new_password에 변경하고자하는 비밀번호 기입해서 실행하면 된다.
# user 생성하기
client.create_user(
user_name="user_1",
password="P@ssw0rd",
)
# user 생성되었는지 확인하기
client.describe_user("user_1")
# 출력 예시
# {'user_name': 'user_1', 'roles': ()}
Milvus 컨테이너를 중지하고 삭제하는 명령어는 아래와 같다.
컨테이너 중지
bash standalone_embed.sh stop
컨테이너 삭제
bash standalone_embed.sh delete
업그레이드
bash standalone_embed.sh upgrade
관련한 공식 문서는 아래를 참고하면 된다. 들어가서 목차를 보면 docker 이외에도 milvus를 실행할 수 있는 다양한 방법을 확인할 수 있다.