Milvus Operator를 사용하여 메시지 저장소 구성
Milvus 3.x에서는 Woodpecker가 기본 메시지 큐로 사용됩니다( Woodpecker 참조). Milvus Operator를 사용하면 최근 변경 내역 로그 관리, 스트림 로그 출력 및 로그 구독 제공을 위해 RocksMQ, Pulsar 또는 Kafka를 구성할 수도 있습니다. 이 항목에서는 Milvus Operator와 함께 Milvus를 설치할 때 메시지 저장소 종속성을 구성하는 방법을 소개합니다. 자세한 내용은 Milvus Operator 저장소의 ‘Milvus Operator를 사용하여 메시지 저장소 구성’을 참조하십시오.
이 항목은 Milvus Operator가 이미 배포되어 있음을 전제로 합니다.
Milvus Operator를 사용하여 Milvus 클러스터를 시작하려면 구성 파일을 지정해야 합니다.
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 인스턴스당 하나의 메시지 저장소만 지원됩니다. 하지만 하나의 인스턴스에 여러 메시지 저장소를 설정하는 경우와도 하위 호환성을 유지합니다. 우선순위는 다음과 같습니다:
- 독립 실행 모드: Woodpecker(기본값) > RocksMQ > Pulsar > Kafka
- 클러스터 모드: Woodpecker(기본값) > Pulsar > Kafka
- Milvus 시스템이 실행 중인 동안에는 메시지 저장소를 변경할 수 없습니다.
- Kafka 2.x 또는 3.x 버전만 지원됩니다.
- 업그레이드 제한 사항: 메시지 큐 제한 사항: Milvus v3.0.1로 업그레이드할 때는 현재 사용 중인 메시지 큐를 유지해야 합니다. 업그레이드 과정에서 다른 메시지 큐 시스템으로 전환하는 것은 지원되지 않습니다. 메시지 큐 시스템 변경 기능은 향후 버전에서 제공될 예정입니다.
RocksMQ 구성
RocksMQ는 2.5.x 버전까지 Milvus 독립 실행형(standalone)의 기본 메시지 저장소였습니다(2.6.x 버전부터 Woodpecker로 대체됨).
현재 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: 표준 Kubernetes PVC 사양accessModes: 일반적으로 블록 스토리지의 경우ReadWriteOncestorageClassName: 클러스터의 스토리지 클래스storage: 영구 볼륨의 크기
Woodpecker 구성
Woodpecker는 오브젝트 스토리지를 위해 설계된 클라우드 네이티브 WAL(Write-Ahead Log)입니다. 높은 처리량, 낮은 운영 오버헤드 및 원활한 확장성을 제공합니다. 자세한 내용은 Woodpecker를 참조하십시오.
Pulsar 구성
Pulsar는 최근 변경 내역에 대한 로그를 관리하고, 스트림 로그를 출력하며, 로그 구독 기능을 제공합니다. 메시지 저장을 위한 Pulsar 구성은 Milvus 독립 실행형 및 Milvus 클러스터 모두에서 지원됩니다. 그러나 Milvus Operator를 사용하는 경우, Milvus 클러스터의 메시지 저장소로만 Pulsar를 구성할 수 있습니다. Pulsar를 구성하려면 ‘ spec.dependencies.pulsar ’ 아래에 필수 필드를 추가하십시오.
pulsar external 및 을 지원합니다. inCluster
외부 Pulsar
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: {}
내부 Pulsar
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는 2.5.x 버전까지 Milvus 클러스터의 기본 메시지 저장소였습니다(2.6.x 버전부터는 Woodpecker로 대체됨). Kafka를 사용하려면 선택적 필드인 msgStreamType 를 추가하여 Kafka를 구성하십시오.
kafka external 및 을 지원합니다. inCluster
외부 Kafka
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 구성은 Operator v0.8.5 이상 버전에서 지원됩니다.
Internal Kafka
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 종속성을 구성하는 방법을 알아보세요: