Pulsar와 Woodpecker 간 전환

이 페이지에서는 Milvus 클러스터의 메시지 큐(MQ)를 Pulsar (내장형 또는 외부)와 Woodpecker (MinIO 백엔드) 간에 양방향으로 전환하는 방법을 설명합니다. 일반적인 워크플로우 및 필수 조건에 대해서는 '메시지 큐 전환'을 참조하십시오.

필수 조건: MQ 전환 기능은 Milvus 3.0 이상 버전에서 사용할 수 있습니다. 시작하기 전에 Milvus 인스턴스를 Milvus 3.0 이상으로 업그레이드하십시오. 이전 버전에서는 이 기능을 사용할 수 없습니다.

메시지 큐 전환은 위험도가 높은 작업입니다. 배포 방식 ( Helm 사용 또는 Milvus Operator 사용 ) 해당하는 섹션을 선택하고, 해당 섹션의 지침을 처음부터 끝까지 따르십시오. Helm 명령어와 Operator 명령어를 혼용하지 마십시오.

Helm 사용 시

Pulsar에서 Woodpecker로 전환(Helm)

1단계: Milvus 인스턴스가 실행 중인지 확인합니다. 테스트 컬렉션을 생성하고, 데이터를 삽입하며, 쿼리를 실행하는 등의 방법으로 Milvus 클러스터가 정상적으로 작동하는지 확인하십시오.

2단계: MQ 전환을 실행합니다. MixCoord 관리 인터페이스를 노출한 다음, 전환 API를 호출합니다.

kubectl port-forward --address 0.0.0.0 service/my-release-milvus-mixcoord 29091:9091

다른 터미널에서:

curl -X POST http://127.0.0.1:29091/management/wal/alter \
  -H "Content-Type: application/json" \
  -d '{"target_wal_name": "woodpecker"}'

3단계: 전환이 완료되었는지 확인합니다.

kubectl logs <mixcoord-pod> | grep "successfully updated mq.type configuration in etcd"

전환이 성공하면 [mqTypeValue=woodpecker] 로깅됩니다.

4단계: (선택 사항) Pulsar를 중지하고 정리합니다. 내장형 Pulsar의 경우, Pulsar를 비활성화하고 Woodpecker를 활성화한 다음, Pulsar PVC를 삭제합니다:

helm upgrade my-release zilliztech/milvus \
  --set image.all.tag=v3.0.0 \
  --set pulsarv3.enabled=false \
  --set woodpecker.enabled=true \
  --set streaming.enabled=true \
  --set indexNode.enabled=false
kubectl get pvc | grep my-release-pulsarv3
kubectl delete pvc <pulsar-pvc-name> ...

외부 Pulsar의 경우, 외부 Pulsar 인스턴스에서 Milvus 토픽을 정리합니다. Milvus 토픽은 <cluster_prefix>-dml_<seqNo>_<TimeTick><Version> 형식을 따릅니다(예: by-dev-rootcoord-dml_10_464633776992639586v0).

나중에 Pulsar로 다시 전환할 계획이라면, 충돌을 방지하기 위해 먼저 데이터/토픽을 정리하십시오. Helm 차트의 제한 사항으로 인해, 현재 내장형 Pulsar 인스턴스로 다시 전환하는 것은 불가능합니다.

Woodpecker에서 Pulsar로 전환하기 (Helm)

1단계: Milvus 인스턴스가 실행 중인지 확인합니다.

2단계: 대상 Pulsar 연결을 구성하고 Milvus를 다시 시작합니다. 전환을 위해서는 Milvus가 이미 Pulsar 연결을 인식하고 있어야 하므로, extraConfigFiles 을 통해 user.yaml 에 내용을 작성하고 helm upgrade (포드를 롤링합니다)를 실행하여 적용하십시오. Switch MQ 기능을 사용하려면 streaming.enabled=true 가 필요합니다.

# values.yaml
extraConfigFiles:
  user.yaml: |+
    pulsar:
      address: <pulsar addr>
      port: <pulsar port, e.g. 6650>
helm upgrade -i my-release zilliztech/milvus \
  --set pulsarv3.enabled=true \
  --set woodpecker.enabled=false \
  --set streaming.enabled=true \
  -f values.yaml

모든 파드가 준비될 때까지 기다린 후, Pulsar 액세스 구성이 Milvus 구성에 반영되었는지 확인하십시오.

3단계: MQ 전환을 실행합니다.

대상 Pulsar에 이전 구성의 Milvus 토픽이 포함되어 있지 않은지 확인하십시오. Pulsar로 처음 전환하는 경우 이 참고 사항을 건너뛰고, 그렇지 않은 경우 먼저 동일한 이름을 가진 잔여 Milvus 토픽을 정리하십시오.

kubectl port-forward --address 0.0.0.0 service/my-release-milvus-mixcoord 29091:9091

다른 터미널에서:

curl -X POST http://127.0.0.1:29091/management/wal/alter \
  -H "Content-Type: application/json" \
  -d '{"target_wal_name": "pulsar"}'

4단계: 전환이 완료되었는지 확인합니다.

kubectl logs <mixcoord-pod> | grep "successfully updated mq.type configuration in etcd"

전환이 성공하면 [mqTypeValue=pulsar] 로 기록됩니다.

5단계: (선택 사항) Woodpecker 데이터를 정리합니다. MinIO/S3( <rootPath>/wp/... 폴더 내, 일반적으로 files/wp/...)에 있는 Woodpecker 데이터와 etcd(etcdctl get woodpecker --prefix)에 있는 Woodpecker 메타데이터를 삭제합니다. 나중에 Woodpecker로 다시 전환할 계획이라면, 먼저 이 파일들을 정리하십시오.

Milvus Operator 사용 시

Pulsar에서 Woodpecker로 전환(Milvus Operator)

1단계: Milvus 인스턴스가 실행 중인지 확인합니다.

2단계: MQ 전환을 실행합니다. MixCoord 서비스는 외부에 노출되지 않으므로 MixCoord 포드 내부에서 전환 API를 실행하십시오:

kubectl exec -it <mixcoord-pod> -- \
  curl -X POST http://localhost:9091/management/wal/alter \
  -H "Content-Type: application/json" \
  -d '{"target_wal_name": "woodpecker"}'

3단계: 전환이 완료되었는지 확인합니다.

kubectl logs <mixcoord-pod> | grep "successfully updated mq.type configuration in etcd"

전환이 성공하면 [mqTypeValue=woodpecker] 로깅됩니다.

4단계: Operator의 MQ 유형을 업데이트합니다. Operator가 전환을 되돌리지 않도록 Operator가 관리하는 구성을 업데이트합니다. change_configmap.yaml 를 생성합니다:

apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
  name: my-release
  labels:
    app: milvus
spec:
  dependencies:
    msgStreamType: woodpecker
kubectl patch -f change_configmap.yaml --patch-file change_configmap.yaml --type merge

5단계: (선택 사항) Pulsar를 중지하고 정리합니다. 내장형 Pulsar의 경우, Pulsar 릴리스를 제거하고 해당 PVC를 삭제합니다:

helm uninstall my-release-pulsar
kubectl get pvc | grep my-release-pulsar
kubectl delete pvc <pulsar-pvc-name> ...

외부 Pulsar의 경우, Milvus 토픽을 정리합니다( <cluster_prefix>-dml_<seqNo>_<TimeTick><Version> 형식).

나중에 Pulsar로 다시 전환할 계획이라면, 충돌을 방지하기 위해 먼저 데이터/토픽을 정리하십시오. Helm 차트의 제한 사항으로 인해, 현재 내장형 Pulsar 인스턴스로 다시 전환하는 것은 불가능합니다.

Woodpecker에서 Pulsar로 전환 (Milvus Operator)

1단계: Milvus 인스턴스가 실행 중인지 확인합니다.

2단계: 대상 Pulsar 연결을 구성하고 Milvus를 다시 시작합니다. Pulsar 연결을 spec.config 아래에 배치하고(Operator는 spec.configuser.yaml 로 변환합니다), MQ 유형을 설정합니다. CR을 적용하면 포드가 새로운 구성으로 재시작됩니다.

# change_configmap.yaml
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
  name: my-release
  labels:
    app: milvus
spec:
  config:
    pulsar:
      address: <pulsar addr>
      port: <pulsar port, e.g. 6650>
  dependencies:
    msgStreamType: pulsar
kubectl patch -f change_configmap.yaml --patch-file change_configmap.yaml --type merge

모든 파드가 준비될 때까지 기다린 후, Pulsar 액세스 구성이 Milvus 구성으로 반영되었는지 확인합니다.

3단계: MQ 전환을 실행합니다.

대상 Pulsar에 이전 구성의 Milvus 토픽이 포함되어 있지 않은지 확인하십시오. Pulsar로 처음 전환하는 경우 이 참고 사항을 건너뛰고, 그렇지 않은 경우 먼저 동일한 이름을 가진 잔여 Milvus 토픽을 정리하십시오.

kubectl exec -it <mixcoord-pod> -- \
  curl -X POST http://localhost:9091/management/wal/alter \
  -H "Content-Type: application/json" \
  -d '{"target_wal_name": "pulsar"}'

4단계: 전환이 완료되었는지 확인합니다.

kubectl logs <mixcoord-pod> | grep "successfully updated mq.type configuration in etcd"

전환이 성공하면 [mqTypeValue=pulsar] 로깅됩니다.

5단계: (선택 사항) Woodpecker 데이터 정리. MinIO/S3( <rootPath>/wp/... 폴더 내, 일반적으로 files/wp/...)에 있는 Woodpecker 데이터와 etcd(etcdctl get woodpecker --prefix)에 있는 Woodpecker 메타데이터를 삭제하십시오. 나중에 Woodpecker로 다시 전환할 계획이라면, 먼저 이러한 파일을 정리하십시오.

지원되는 시나리오

소스 MQ대상 MQHelmMilvus Operator
내장형 PulsarWoodpecker (MinIO)지원됨지원됨
외부 PulsarWoodpecker (MinIO)지원됨지원됨
Woodpecker (MinIO)외부 Pulsar지원됨지원됨
PulsarWoodpecker (로컬)지원되지만 권장하지 않음 (모든 포드에 공유 파일 시스템이 필요함)지원되지 않음

번역DeepL

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

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

시작하기
피드백

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