• Milvus 소개
  • 시작하기
  • 개념
  • 사용자 안내서
  • 데이터 가져오기
  • AI 도구
  • 관리 가이드
  • 도구
  • 연동 기능
  • 튜토리얼
  • 자주 묻는 질문
  • API Reference

Milvus Operator를 사용하여 메시지 저장소 구성

Milvus 3.x에서는 Woodpecker가 기본 메시지 큐로 사용됩니다( Woodpecker 참조). Milvus Operator를 사용하면 최근 변경 내역 로그 관리, 스트림 로그 출력 및 로그 구독 제공을 위해 RocksMQ, Pulsar 또는 Kafka를 구성할 수도 있습니다. 이 항목에서는 Milvus Operator와 함께 Milvus를 설치할 때 메시지 저장소 종속성을 구성하는 방법을 소개합니다. 자세한 내용은 Milvus Operator 저장소의 ‘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가 지원되는지 여부를 보여줍니다.

RocksMQPulsarKafkaWoodpecker
독립 실행 모드✔️✔️✔️✔️
클러스터 모드✖️✔️✔️✔️

메시지 저장소를 지정할 때 다음과 같은 다른 제한 사항도 있습니다:

  • 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: 일반적으로 블록 스토리지의 경우 ReadWriteOnce
  • storageClassName: 클러스터의 스토리지 클래스
  • 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의 각 구성 요소에 대한 복제본 수, Pulsar BookKeeper의 컴퓨팅 리소스 및 기타 구성을 지정합니다.
values.yaml에서 내부 Pulsar 서비스를 구성하기 위한 전체 구성 항목을 확인하십시오. 앞의 예제와 같이 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 종속성을 구성하는 방법을 알아보세요:

번역DeepL

관리형 Milvus를 무료로 사용해 보세요

Zilliz Cloud는 번거로움이 없으며, Milvus 기반으로 10배 더 빠릅니다.

시작하기
피드백

이 페이지가 도움이 되었나요?