Docker Compose 또는 Helm으로 메시지 저장소 구성하기
Milvus는 최근 변경 사항의 로그 관리, 스트림 로그 출력, 로그 구독 제공을 위해 Pulsar 또는 Kafka를 사용합니다. 기본 메시지 저장 시스템은 Pulsar입니다. 이 항목에서는 Docker Compose 또는 Helm으로 메시지 저장소를 구성하는 방법을 소개합니다.
Docker Compose 또는 K8에서 Pulsar를 구성하고 K8에서 Kafka를 구성할 수 있습니다.
도커 컴포즈로 Pulsar 구성하기
1. Pulsar 구성하기
Docker Compose로 Pulsar를 구성하려면 milvus/configs 경로의 milvus.yaml
파일에 pulsar
섹션에 값을 입력합니다.
pulsar:
address: localhost # Address of pulsar
port: 6650 # Port of pulsar
maxMessageSize: 5242880 # 5 * 1024 * 1024 Bytes, Maximum size of each message in pulsar.
자세한 내용은 Pulsar 관련 구성을 참조하세요.
2. Milvus 실행
다음 명령어를 실행하여 Pulsar 설정을 사용하는 Milvus를 시작합니다.
docker compose up
헬름으로 Pulsar 구성하기
K8의 Milvus 클러스터의 경우, Milvus를 시작하는 것과 동일한 명령으로 Pulsar를 구성할 수 있습니다. 또는 Milvus를 시작하기 전에 milvus-helm 리포지토리의 /charts/milvus 경로에 있는 values.yml
파일을 사용하여 Pulsar를 구성할 수 있습니다.
헬름을 사용하여 Milvus를 구성하는 방법에 대한 자세한 내용은 헬름 차트로 Milvus 구성하기를 참조하세요. 펄사 관련 구성 항목에 대한 자세한 내용은 펄사 관련 구성을 참고한다.
YAML 파일 사용하기
values.yaml
파일에서externalConfigFiles
섹션을 구성합니다.
extraConfigFiles:
user.yaml: |+
pulsar:
address: localhost # Address of pulsar
port: 6650 # Port of Pulsar
webport: 80 # Web port of pulsar, if you connect direcly without proxy, should use 8080
maxMessageSize: 5242880 # 5 * 1024 * 1024 Bytes, Maximum size of each message in pulsar.
tenant: public
namespace: default
- 앞의 섹션을 구성하고
values.yaml
파일을 저장한 후, 다음 명령어를 실행하여 Pulsar 구성을 사용하는 Milvus를 설치합니다.
helm install <your_release_name> milvus/milvus -f values.yaml
헬름으로 Kafka 구성
K8의 Milvus 클러스터의 경우, Milvus를 시작하는 것과 동일한 명령으로 Kafka를 구성할 수 있습니다. 또는 Milvus를 시작하기 전에 milvus-helm 리포지토리의 /charts/milvus 경로에 있는 values.yml
파일을 사용하여 Kafka를 구성할 수 있습니다.
헬름을 사용하여 Milvus를 구성하는 방법에 대한 자세한 내용은 헬름 차트로 Milvus 구성을 참조하세요. Pulsar 관련 구성 항목에 대한 자세한 내용은 Pulsar 관련 구성을 참고한다.
YAML 파일 사용하기
- Kafka를 메시지 저장 시스템으로 사용하려면
values.yaml
파일에서externalConfigFiles
섹션을 구성합니다.
extraConfigFiles:
user.yaml: |+
kafka:
brokerList:
- <your_kafka_address>:<your_kafka_port>
saslUsername:
saslPassword:
saslMechanisms: PLAIN
securityProtocol: SASL_SSL
- 앞의 섹션을 구성하고
values.yaml
파일을 저장한 후, 다음 명령을 실행하여 Kafka 구성을 사용하는 Milvus를 설치합니다.
helm install <your_release_name> milvus/milvus -f values.yaml
헬름으로 RocksMQ 구성하기
Milvus 스탠드얼론은 기본 메시지 저장소로 RocksMQ를 사용합니다. 헬름으로 Milvus를 구성하는 방법에 대한 자세한 단계는 헬름 차트로 Milvus 구성하기를 참조하세요. RocksMQ 관련 구성 항목에 대한 자세한 내용은 RocksMQ 관련 구성을 참조하세요.
RocksMQ로 Milvus를 시작하고 설정을 변경하려면 다음 YAML 파일에서 변경된 설정으로
helm upgrade -f
을 실행하면 됩니다.헬름을 사용하여 RocksMQ가 아닌 다른 메시지 저장소를 사용하여 Milvus를 독립형으로 설치한 경우 다시 RocksMQ로 변경하려면 모든 컬렉션을 플러시하고 Milvus를 중지한 후 다음 YAML 파일로
helm upgrade -f
을 실행하세요.
extraConfigFiles:
user.yaml: |+
rocksmq:
# The path where the message is stored in rocksmq
# please adjust in embedded Milvus: /tmp/milvus/rdb_data
path: /var/lib/milvus/rdb_data
lrucacheratio: 0.06 # rocksdb cache memory ratio
rocksmqPageSize: 67108864 # 64 MB, 64 * 1024 * 1024 bytes, The size of each page of messages in rocksmq
retentionTimeInMinutes: 4320 # 3 days, 3 * 24 * 60 minutes, The retention time of the message in rocksmq.
retentionSizeInMB: 8192 # 8 GB, 8 * 1024 MB, The retention size of the message in rocksmq.
compactionInterval: 86400 # 1 day, trigger rocksdb compaction every day to remove deleted data
# compaction compression type, only support use 0,7.
# 0 means not compress, 7 will use zstd
# len of types means num of rocksdb level.
compressionTypes: [0, 0, 7, 7, 7]
메시지 저장소를 변경하는 것은 권장하지 않습니다. 이 작업을 수행하려면 모든 DDL 작업을 중지한 다음 FlushAll API를 호출하여 모든 컬렉션을 플러시하고 마지막으로 메시지 저장소를 실제로 변경하기 전에 Milvus를 마지막으로 중지하세요.
헬름으로 NATS 구성하기
NATS는 RocksMQ를 대체하는 실험적인 메시지 저장소입니다. 헬름으로 밀버스를 구성하는 방법에 대한 자세한 단계는 헬름 차트로 밀버스 구성하기를 참조하세요. RocksMQ 관련 구성 항목에 대한 자세한 내용은 NATS 관련 구성을 참고한다.
NATS로 Milvus를 시작하고 설정을 변경하려면 다음 YAML 파일에서 변경된 설정으로
helm upgrade -f
을 실행하면 됩니다.NATS가 아닌 다른 메시지 저장소가 있는 Milvus를 독립형으로 설치한 경우 이를 NATS로 변경하려면 모든 컬렉션을 플러시하고 Milvus를 중지한 후 다음 YAML 파일로
helm upgrade -f
을 실행하세요.
extraConfigFiles:
user.yaml: |+
mq:
type: natsmq
natsmq:
# server side configuration for natsmq.
server:
# 4222 by default, Port for nats server listening.
port: 4222
# /var/lib/milvus/nats by default, directory to use for JetStream storage of nats.
storeDir: /var/lib/milvus/nats
# (B) 16GB by default, Maximum size of the 'file' storage.
maxFileStore: 17179869184
# (B) 8MB by default, Maximum number of bytes in a message payload.
maxPayload: 8388608
# (B) 64MB by default, Maximum number of bytes buffered for a connection applies to client connections.
maxPending: 67108864
# (√ms) 4s by default, waiting for initialization of natsmq finished.
initializeTimeout: 4000
monitor:
# false by default, If true enable debug log messages.
debug: false
# true by default, If set to false, log without timestamps.
logTime: true
# no log file by default, Log file path relative to.. .
logFile:
# (B) 0, unlimited by default, Size in bytes after the log file rolls over to a new one.
logSizeLimit: 0
retention:
# (min) 3 days by default, Maximum age of any message in the P-channel.
maxAge: 4320
# (B) None by default, How many bytes the single P-channel may contain. Removing oldest messages if the P-channel exceeds this size.
maxBytes:
# None by default, How many message the single P-channel may contain. Removing oldest messages if the P-channel exceeds this limit.
maxMsgs:
RocksMQ와 NATS 중 어떤 것을 선택해야 하나요?
RockMQ는 CGO를 사용하여 RocksDB와 상호 작용하고 자체적으로 메모리를 관리하는 반면, Milvus 설치에 내장된 순수 GO NATS는 메모리 관리를 Go의 가비지 컬렉터(GC)에 위임합니다.
데이터 패킷이 64KB보다 작은 시나리오에서는 메모리 사용량, CPU 사용량, 응답 시간 측면에서 RocksDB가 더 우수한 성능을 보입니다. 반면 데이터 패킷이 64KB보다 큰 경우, 충분한 메모리와 이상적인 GC 스케줄링으로 응답 시간 측면에서 NATS가 우수합니다.
현재는 실험용으로만 NATS를 사용하는 것이 좋습니다.
다음 단계
도커 컴포즈 또는 헬름으로 다른 Milvus 종속성을 구성하는 방법을 알아보세요: