التبديل بين Pulsar و Woodpecker

توضح هذه الصفحة كيفية التبديل بين Pulsar (مدمج أو خارجي) و Woodpecker (خلفية MinIO) لقائمة انتظار الرسائل (MQ) في مجموعة Milvus، في كلا الاتجاهين. للاطلاع على سير العمل العام والمتطلبات الأساسية، راجع التبديل بين قوائم انتظار الرسائل.

المتطلبات الأساسية: تتوفر ميزة التبديل بين قوائم انتظار الرسائل (Switch 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، ثم احذف PVCs الخاصة بـ Pulsar:

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 الخارجي، قم بتنظيف مواضيع Milvus في مثيل Pulsar الخارجي. تتبع مواضيع 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، لذا قم بكتابته في user.yaml عبر extraConfigFiles وقم بتطبيقه باستخدام helm upgrade (الذي يقوم بتدوير البودات). يعد streaming.enabled=true مطلوبًا لميزة Switch MQ.

# 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. احذف بيانات Woodpecker الموجودة على MinIO/S3 (تحت <rootPath>/wp/... ، وعادةً ما تكون files/wp/...) وبيانات تعريف Woodpecker في etcd (etcdctl get woodpecker --prefix). إذا كنت تخطط للعودة إلى Woodpecker لاحقًا، فقم بإزالة هذه الملفات أولاً.

باستخدام Milvus Operator

التبديل من Pulsar إلى Woodpecker (مشغل Milvus)

الخطوة 1: تحقق من أن مثيل Milvus قيد التشغيل.

الخطوة 2: تنفيذ عملية التبديل في MQ. خدمة MixCoord غير مكشوفة، لذا قم بتشغيل واجهة برمجة تطبيقات (API) التبديل من داخل بود 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"}'

الخطوة 3: تحقق من اكتمال عملية التبديل.

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

يتم تسجيل التبديل الناجح في [mqTypeValue=woodpecker].

الخطوة 4: قم بتحديث نوع MQ في Operator. قم بتحديث التكوين الذي يديره 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 وحذف PVCs الخاصة به:

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)

الخطوة 1: تحقق من أن مثيل Milvus قيد التشغيل.

الخطوة 2: قم بتكوين اتصال Pulsar المستهدف وأعد تشغيل Milvus. ضع اتصال Pulsar ضمن spec.config (يقوم المشغل بتحويل spec.config إلى user.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. احذف بيانات Woodpecker الموجودة على MinIO/S3 (تحت <rootPath>/wp/... ، وعادةً ما تكون files/wp/...) وبيانات تعريف Woodpecker في etcd (etcdctl get woodpecker --prefix). إذا كنت تخطط للعودة إلى Woodpecker لاحقًا، فقم بإزالة هذه الملفات أولاً.

السيناريوهات المدعومة

مصدر MQمستقبل MQHelmمشغل Milvus
Pulsar المدمجوودبيكر (MinIO)مدعوممدعوم
Pulsar خارجيوودبيكر (MinIO)مدعوممدعوم
وودبيكر (MinIO)Pulsar خارجيمدعوممدعوم
بولساروودبيكر (محلي)مدعوم ولكن غير موصى به (تحتاج جميع الوحدات إلى نظام ملفات مشترك)غير مدعوم

ترجمة بواسطةDeepL

جرب Managed Milvus مجاناً

Zilliz Cloud خالي من المتاعب، ويعمل بواسطة Milvus ويعمل بسرعة 10 أضعاف.

ابدأ
التعليقات

هل كانت هذه الصفحة مفيدة؟