Milvus 운영자로 메시지 저장소 구성하기
Milvus는 최근 변경 사항 로그 관리, 스트림 로그 출력, 로그 구독 제공을 위해 RocksMQ, Pulsar 또는 Kafka를 사용합니다. 이 항목에서는 Milvus Operator와 함께 Milvus를 설치할 때 메시지 저장소 종속성을 구성하는 방법을 소개합니다. 자세한 내용은 Milvus Operator 리포지토리에서 Milvus Operator로 메시지 저장소 구성을 참조하세요.
이 항목에서는 Milvus Operator를 배포했다고 가정합니다.
밀버스 오퍼레이터를 사용하여 밀버스 클러스터를 시작하려면 구성 파일을 지정해야 합니다.
kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_default.yaml
타사 종속성을 구성하려면 milvus_cluster_default.yaml 에서 코드 템플릿을 편집하기만 하면 됩니다. 다음 섹션에서는 각각 개체 스토리지, etcd 및 Pulsar를 구성하는 방법을 소개합니다.
시작하기 전에
아래 표는 Milvus 독립 실행형 및 클러스터 모드에서 RocksMQ, Pulsar, Kafka 및 Woodpecker가 지원되는지 여부를 보여줍니다.
| RocksMQ | Pulsar | Kafka | Woodpecker | |
|---|---|---|---|---|
| 독립 실행형 모드 | ✔️ | ✔️ | ✔️ | ✔️ |
| 클러스터 모드 | ✖️ | ✔️ | ✔️ | ✔️ |
메시지 저장소를 지정하는 데에는 다른 제한 사항도 있습니다:
- 하나의 Milvus 인스턴스에 대해 하나의 메시지 저장소만 지원됩니다. 그러나 하나의 인스턴스에 대해 여러 개의 메시지 저장소를 설정할 수 있는 이전 버전과의 호환성은 여전히 유지됩니다. 우선순위는 다음과 같습니다:
- 독립형 모드: RocksMQ(기본값) > Pulsar > Kafka
- 클러스터 모드: Pulsar(기본값) > Kafka
- Milvus 시스템이 실행되는 동안에는 메시지 저장소를 변경할 수 없습니다.
- Kafka 2.x 또는 3.x 버전만 지원됩니다.
- 업그레이드 제한: 메시지 큐 제한: Milvus v2.6.16으로 업그레이드할 때는 현재 선택한 메시지 큐를 유지해야 합니다. 업그레이드 중에 다른 메시지 큐 시스템 간에 전환하는 것은 지원되지 않습니다. 메시지 큐 시스템 변경에 대한 지원은 향후 버전에서 제공될 예정입니다.
RocksMQ 구성하기
RocksMQ는 Milvus 스탠드얼론의 기본 메시지 저장소입니다.
현재 Milvus Operator를 통해서만 Milvus 스탠드얼론의 메시지 저장소로 RocksMQ를 구성할 수 있습니다.
예제
다음 예는 RocksMQ 서비스를 구성하는 예제입니다.
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
name: milvus
spec:
mode: standalone
dependencies:
msgStreamType: rocksmq
rocksmq:
persistence:
enabled: true
pvcDeletion: true
persistentVolumeClaim:
spec:
accessModes: ["ReadWriteOnce"]
storageClassName: "local-path" # Specify your storage class
resources:
requests:
storage: 10Gi # Specify your desired storage size
components: {}
config: {}
주요 구성 옵션
msgStreamType: rocksmq: 명시적으로 RocksMQ를 메시지 큐로 설정합니다.persistence.enabled: RocksMQ 데이터에 영구 저장소를 사용 설정합니다.persistence.pvcDeletion: true일 경우, Milvus 인스턴스가 삭제될 때 PVC가 삭제됩니다.persistentVolumeClaim.spec: 표준 쿠버네티스 PVC 사양accessModes: 일반적으로 블록 스토리지의 경우ReadWriteOncestorageClassName: 클러스터의 스토리지 클래스storage: 퍼시스턴트 볼륨의 크기
딱따구리 구성
Woodpecker는 오브젝트 스토리지용으로 설계된 클라우드 네이티브 WAL(Write-Ahead Log)입니다. 높은 처리량, 낮은 운영 오버헤드, 원활한 확장성을 제공합니다. 자세한 내용은 Woodpecker 사용을 참조하세요.
Pulsar 구성
Pulsar는 최근 변경 사항의 로그를 관리하고, 스트림 로그를 출력하며, 로그 구독을 제공합니다. 메시지 저장을 위한 Pulsar 구성은 Milvus 독립형과 Milvus 클러스터 모두에서 지원됩니다. 그러나 Milvus Operator를 사용할 때는 Milvus 클러스터의 메시지 저장소로만 Pulsar를 구성할 수 있습니다. spec.dependencies.pulsar 에서 필수 필드를 추가하여 Pulsar를 구성하세요.
pulsar external 및 inCluster 을 지원합니다.
외부 펄서
external 는 외부 Pulsar 서비스를 사용함을 나타냅니다. 외부 Pulsar 서비스를 구성하는 데 사용되는 필드는 다음과 같습니다:
external:true값은 Milvus가 외부 Pulsar 서비스를 사용함을 나타냅니다.endpoints: Pulsar의 엔드포인트입니다.
예제
다음은 외부 Pulsar 서비스를 구성하는 예제입니다.
apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
name: my-release
labels:
app: milvus
spec:
dependencies: # Optional
pulsar: # Optional
# Whether (=true) to use an existed external pulsar as specified in the field endpoints or
# (=false) create a new pulsar inside the same kubernetes cluster for milvus.
external: true # Optional default=false
# The external pulsar endpoints if external=true
endpoints:
- 192.168.1.1:6650
components: {}
config: {}
내부 펄서
inCluster 는 Milvus 클러스터가 시작되면 클러스터에서 Pulsar 서비스가 자동으로 시작됨을 나타냅니다.
예제
다음은 내부 Pulsar 서비스를 구성하는 예제입니다.
apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
name: my-release
labels:
app: milvus
spec:
dependencies:
pulsar:
inCluster:
values:
components:
autorecovery: false
zookeeper:
replicaCount: 1
bookkeeper:
replicaCount: 1
resoureces:
limit:
cpu: '4'
memory: 8Gi
requests:
cpu: 200m
memory: 512Mi
broker:
replicaCount: 1
configData:
## Enable `autoSkipNonRecoverableData` since bookkeeper is running
## without persistence
autoSkipNonRecoverableData: "true"
managedLedgerDefaultEnsembleSize: "1"
managedLedgerDefaultWriteQuorum: "1"
managedLedgerDefaultAckQuorum: "1"
proxy:
replicaCount: 1
components: {}
config: {}
pulsar.inCluster.values 아래에 필요에 따라 구성 항목을 추가합니다.구성 파일의 이름이 milvuscluster.yaml 이라고 가정하고 다음 명령을 실행하여 구성을 적용합니다.
kubectl apply -f milvuscluster.yaml
Kafka 구성
Pulsar는 Milvus 클러스터의 기본 메시지 저장소입니다. Kafka를 사용하려면 선택적 필드 msgStreamType 를 추가하여 Kafka를 구성합니다.
kafka external 및 inCluster 을 지원합니다.
외부 카프카
external 는 외부 Kafka 서비스를 사용함을 나타냅니다.
외부 Kafka 서비스를 구성하는 데 사용되는 필드는 다음과 같습니다:
external:true값은 Milvus가 외부 Kafka 서비스를 사용함을 나타냅니다.brokerList: 메시지를 전송할 브로커 목록입니다.
예제
다음은 외부 Kafka 서비스를 구성하는 예제입니다.
apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
name: my-release
labels:
app: milvus
spec:
config:
kafka:
# securityProtocol supports: PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL
securityProtocol: PLAINTEXT
# saslMechanisms supports: PLAIN, SCRAM-SHA-256, SCRAM-SHA-512
saslMechanisms: PLAIN
saslUsername: ""
saslPassword: ""
# Omit other fields ...
dependencies:
# Omit other fields ...
msgStreamType: "kafka"
kafka:
external: true
brokerList:
- "kafkaBrokerAddr1:9092"
- "kafkaBrokerAddr2:9092"
# ...
SASL 구성은 운영자 v0.8.5 이상 버전에서 지원됩니다.
내부 카프카
inCluster 는 Milvus 클러스터가 시작되면 클러스터에서 Kafka 서비스가 자동으로 시작됨을 나타냅니다.
예제
다음 예는 내부 Kafka 서비스를 구성하는 예제입니다.
apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
name: my-release
labels:
app: milvus
spec:
dependencies:
msgStreamType: "kafka"
kafka:
inCluster:
values: {} # values can be found in https://artifacthub.io/packages/helm/bitnami/kafka
components: {}
config: {}
내부 Kafka 서비스 구성을 위한 전체 구성 항목은 여기에서 확인할 수 있습니다. kafka.inCluster.values 에서 필요에 따라 구성 항목을 추가합니다.
구성 파일의 이름이 milvuscluster.yaml 이라고 가정하고 다음 명령을 실행하여 구성을 적용합니다.
kubectl apply -f milvuscluster.yaml
다음 단계
Milvus Operator로 다른 Milvus 종속 요소를 구성하는 방법을 알아보세요: