Cambiar entre Kafka y Woodpecker

En esta página se describe cómo cambiar la cola de mensajes (MQ) de un clúster de Milvus entre Kafka (integrado o externo) y Woodpecker (backend MinIO), en ambas direcciones. Para conocer el flujo de trabajo general y los requisitos previos, consulta Cambiar la cola de mensajes.

Requisito previo: la función «Cambiar MQ» está disponible en Milvus 3.0 y versiones posteriores. Actualiza tu instancia de Milvus a la versión 3.0 o posterior antes de comenzar; esta función no está disponible en versiones anteriores.

El cambio de la cola de mensajes es una operación de alto riesgo. Elige la sección que se corresponda con tu método de implementación —«Con Helm» o «Con Milvus Operator »— y síguela de principio a fin. No mezcles comandos de Helm y de Operator.

Con Helm

Cambiar de Kafka a Woodpecker (Helm)

Paso 1: Comprueba que la instancia de Milvus esté en ejecución. Asegúrate de que tu clúster de Milvus funcione correctamente; por ejemplo, creando una colección de prueba, insertando datos y ejecutando una consulta.

Paso 2: Ejecuta el cambio de cola de mensajes. Accede a la interfaz de gestión de MixCoord y, a continuación, llama a la API de cambio:

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

En otra terminal:

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

Paso 3: Comprueba que el cambio se haya completado.

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

Si el cambio se ha realizado correctamente, se registrará en el registro de eventos de Milvus ( [mqTypeValue=woodpecker]).

Paso 4: (Opcional) Detén Kafka y realiza una limpieza. Para Kafka integrado, elimina los pods de Kafka y sus PVC. Para Kafka externo, limpia los temas de Milvus en la instancia externa de Kafka; siguen el formato <cluster_prefix>-dml_<seqNo>_<TimeTick><Version>.

Si tiene previsto volver a Kafka más adelante, elimine primero los datos y los temas para evitar conflictos.

Cambiar de Woodpecker a Kafka (Helm)

Paso 1: Comprueba que la instancia de Milvus esté en ejecución.

Paso 2: Configura la conexión de destino a Kafka y reinicia Milvus. Para realizar el cambio, es necesario que Milvus ya conozca la conexión a Kafka, así que introdúcela en user.yaml mediante extraConfigFiles y aplícala con helm upgrade (lo que reinicia los pods). Se requiere streaming.enabled=true para la función Switch MQ. Para obtener más detalles sobre SASL/SSL, consulta «Conectarse a Kafka con SASL/SSL».

# values.yaml
extraConfigFiles:
  user.yaml: |+
    kafka:
      brokerList:
        - <your_kafka_address>:<your_kafka_port>
      saslUsername:
      saslPassword:
      saslMechanisms: PLAIN
      securityProtocol: SASL_SSL
helm upgrade -i my-release zilliztech/milvus \
  --set kafka.enabled=true \
  --set woodpecker.enabled=false \
  --set streaming.enabled=true \
  -f values.yaml

Espere a que todos los pods estén listos y, a continuación, confirme que la configuración de acceso a Kafka se ha incorporado a la configuración de Milvus.

Paso 3: Ejecuta el cambio a MQ.

Asegúrese de que el Kafka de destino no contenga temas de Milvus de una configuración anterior. Si se trata de su primer cambio a Kafka, omita esta nota; de lo contrario, elimine primero los temas residuales de Milvus con los mismos nombres.

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

En otra terminal:

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

Paso 4: Verifica que la migración se haya completado.

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

Si la migración se ha realizado correctamente, se registrará en el archivo de registro [mqTypeValue=kafka].

Paso 5: (Opcional) Elimina los datos de Woodpecker. Elimina los datos de Woodpecker en MinIO/S3 (en la ruta <rootPath>/wp/..., normalmente files/wp/...) y los metadatos de Woodpecker en etcd (etcdctl get woodpecker --prefix). Si tienes previsto volver a Woodpecker más adelante, elimina primero estos archivos.

Con Milvus Operator

Cambiar de Kafka a Woodpecker (Milvus Operator)

Paso 1: Comprueba que la instancia de Milvus esté en ejecución.

Paso 2: Ejecuta el cambio de MQ. El servicio MixCoord no está expuesto, así que ejecuta la API de cambio desde dentro del pod de MixCoord:

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

Paso 3: Comprueba que el cambio se haya completado.

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

Si el cambio se ha realizado correctamente, se registrará en [mqTypeValue=woodpecker].

Paso 4: Actualiza el tipo de MQ en el Operator. Actualiza la configuración gestionada por el Operator para que este no revierta el cambio. Crea 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

Paso 5: (Opcional) Detén Kafka y realiza la limpieza. Para Kafka integrado, elimina los pods de Kafka y sus PVC. Para Kafka externo, limpia los temas de Milvus (formato <cluster_prefix>-dml_<seqNo>_<TimeTick><Version>).

Cambiar de Woodpecker a Kafka (Operador de Milvus)

Paso 1: Comprueba que la instancia de Milvus esté en ejecución.

Paso 2: Configura la conexión a Kafka de destino y reinicia Milvus. Introduce la conexión a Kafka en spec.config (el operador convierte spec.config en user.yaml) y establece el tipo de MQ; al aplicar el CR, los pods se actualizan con la nueva configuración. Para obtener más información sobre SASL/SSL, consulta «Conectarse a Kafka con SASL/SSL».

# change_configmap.yaml
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
  name: my-release
  labels:
    app: milvus
spec:
  config:
    kafka:
      brokerList:
        - <your_kafka_address>:<your_kafka_port>
      saslUsername:
      saslPassword:
      saslMechanisms: PLAIN
      securityProtocol: SASL_SSL
  dependencies:
    msgStreamType: kafka
kubectl patch -f change_configmap.yaml --patch-file change_configmap.yaml --type merge

Espere a que todos los pods estén listos y, a continuación, confirme que la configuración de acceso a Kafka se ha aplicado a la configuración de Milvus.

Paso 3: Ejecuta el cambio de MQ.

Asegúrate de que el Kafka de destino no contenga temas de Milvus de una configuración anterior. Si es tu primer cambio a Kafka, omite esta nota; de lo contrario, elimina primero los temas residuales de Milvus con los mismos nombres.

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

Paso 4: Verifica que la migración se haya completado.

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

Si la migración se ha realizado correctamente, se registrará en el archivo de registro « [mqTypeValue=kafka] ».

Paso 5: (Opcional) Elimina los datos de Woodpecker. Elimina los datos de Woodpecker en MinIO/S3 (en la ruta <rootPath>/wp/..., normalmente files/wp/...) y los metadatos de Woodpecker en etcd (etcdctl get woodpecker --prefix). Si tienes previsto volver a Woodpecker más adelante, elimina primero estos archivos.

Escenarios compatibles

MQ de origenMQ de destinoHelmOperador Milvus
Kafka integradoWoodpecker (MinIO)CompatibleCompatible
Kafka externoWoodpecker (MinIO)CompatibleCompatible
Woodpecker (MinIO)Kafka externoCompatibleCompatible
KafkaWoodpecker (local)Compatible, pero no recomendado (todos los pods necesitan un sistema de archivos compartido)No compatible

Traducido porDeepL

Prueba Milvus gestionado gratis

Zilliz Cloud no da problemas, funciona con Milvus y es 10 veces más rápido.

Empezar
Feedback

¿Fue útil esta página?