التبديل بين Kafka و Woodpecker
تصف هذه الصفحة كيفية التبديل بين Kafka (مدمج أو خارجي) و Woodpecker (خلفية MinIO) لقائمة انتظار الرسائل (MQ) في مجموعة Milvus، في كلا الاتجاهين. للاطلاع على سير العمل العام والمتطلبات الأساسية، راجع التبديل بين قوائم انتظار الرسائل.
المتطلبات الأساسية: تتوفر ميزة «التبديل بين قوائم انتظار الرسائل» في Milvus 3.0 والإصدارات الأحدث. قم بترقية مثيل Milvus الخاص بك إلى Milvus 3.0 أو إصدار أحدث قبل البدء — فهذه الميزة غير متوفرة في الإصدارات الأقدم.
يعد تبديل قائمة انتظار الرسائل عملية تنطوي على مخاطر عالية. اختر القسم الذي يتوافق مع طريقة النشر الخاصة بك — باستخدام Helm أو باستخدام Milvus Operator — واتبع التعليمات من البداية إلى النهاية. لا تخلط بين أوامر Helm و Operator.
باستخدام Helm
التبديل من Kafka إلى 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: (اختياري) أوقف Kafka وقم بالتنظيف. بالنسبة لـ Kafka المدمج ، قم بإزالة وحدات Kafka و PVCs الخاصة بها. بالنسبة لـ Kafka الخارجي، قم بتنظيف مواضيع Milvus في مثيل Kafka الخارجي — فهي تتبع التنسيق <cluster_prefix>-dml_<seqNo>_<TimeTick><Version>.
إذا كنت تخطط للعودة إلى Kafka لاحقًا، فقم بتنظيف البيانات/المواضيع أولاً لتجنب التعارضات.
التبديل من Woodpecker إلى Kafka (Helm)
الخطوة 1: تحقق من أن مثيل Milvus قيد التشغيل.
الخطوة 2: قم بتكوين اتصال Kafka المستهدف وأعد تشغيل Milvus. يتطلب التبديل أن يكون Milvus على دراية مسبقة باتصال Kafka، لذا قم بكتابته في user.yaml عبر extraConfigFiles وقم بالتطبيق باستخدام helm upgrade (الذي يقوم بتحديث البودات). يُعد streaming.enabled=true مطلوبًا لميزة Switch MQ. للحصول على تفاصيل SASL/SSL، راجع «الاتصال بـ Kafka باستخدام 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
انتظر حتى تصبح جميع البودات جاهزة، ثم تأكد من أن تكوين الوصول إلى Kafka قد تم تضمينه في تكوين Milvus.
الخطوة 3: تنفيذ التبديل إلى MQ.
تأكد من أن Kafka الهدف لا يحتوي على مواضيع Milvus من تكوين سابق. إذا كان هذا هو التبديل الأول إلى Kafka، فتخط هذه الملاحظة؛ وإلا فقم أولاً بتنظيف مواضيع 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": "kafka"}'
الخطوة 4: تحقق من اكتمال عملية التبديل.
kubectl logs <mixcoord-pod> | grep "successfully updated mq.type configuration in etcd"
يُسجل التبديل الناجح الرسالة التالية: [mqTypeValue=kafka].
الخطوة 5: (اختياري) قم بإزالة بيانات Woodpecker. احذف بيانات Woodpecker الموجودة على MinIO/S3 (ضمن <rootPath>/wp/... ، وعادةً ما تكون files/wp/...) وبيانات تعريف Woodpecker في etcd (etcdctl get woodpecker --prefix). إذا كنت تخطط للعودة إلى Woodpecker لاحقًا، فقم بإزالة هذه الملفات أولاً.
باستخدام Milvus Operator
التحويل من Kafka إلى Woodpecker (Milvus Operator)
الخطوة 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: (اختياري) أوقف Kafka وقم بالتنظيف. بالنسبة لـ Kafka المدمج ، قم بإزالة بودات Kafka و PVCs الخاصة بها. بالنسبة لـ Kafka الخارجي، قم بتنظيف مواضيع Milvus (تنسيق <cluster_prefix>-dml_<seqNo>_<TimeTick><Version>).
التبديل من Woodpecker إلى Kafka (مشغل Milvus)
الخطوة 1: تحقق من أن مثيل Milvus قيد التشغيل.
الخطوة 2: قم بتكوين اتصال Kafka المستهدف وأعد تشغيل Milvus. ضع اتصال Kafka ضمن spec.config (يقوم المشغل بتحويل spec.config إلى user.yaml) وقم بتعيين نوع MQ؛ يؤدي تطبيق CR إلى تحديث البودات بالتكوين الجديد. للحصول على تفاصيل SASL/SSL، راجع الاتصال بـ Kafka باستخدام 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
انتظر حتى تصبح جميع البودات جاهزة، ثم تأكد من أن تكوين الوصول إلى Kafka قد تم تضمينه في تكوين Milvus.
الخطوة 3: تنفيذ التبديل إلى MQ.
تأكد من أن Kafka الهدف لا يحتوي على مواضيع Milvus من تكوين سابق. إذا كان هذا هو التبديل الأول إلى Kafka، فتخط هذه الملاحظة؛ وإلا فقم أولاً بتنظيف مواضيع Milvus المتبقية التي تحمل نفس الأسماء.
kubectl exec -it <mixcoord-pod> -- \
curl -X POST http://localhost:9091/management/wal/alter \
-H "Content-Type: application/json" \
-d '{"target_wal_name": "kafka"}'
الخطوة 4: تحقق من اكتمال عملية التبديل.
kubectl logs <mixcoord-pod> | grep "successfully updated mq.type configuration in etcd"
يتم تسجيل " [mqTypeValue=kafka]" عند نجاح عملية التبديل.
الخطوة 5: (اختياري) قم بإزالة بيانات Woodpecker. احذف بيانات Woodpecker الموجودة على MinIO/S3 (ضمن <rootPath>/wp/... ، وعادةً ما تكون files/wp/...) وبيانات تعريف Woodpecker في etcd (etcdctl get woodpecker --prefix). إذا كنت تخطط للعودة إلى Woodpecker لاحقًا، فقم بإزالة هذه الملفات أولاً.
السيناريوهات المدعومة
| مصدر MQ | مستقبل MQ | Helm | مشغل Milvus |
|---|---|---|---|
| كافكا المدمج | وودبيكر (MinIO) | مدعوم | مدعوم |
| كافكا خارجي | وودبيكر (MinIO) | مدعوم | مدعوم |
| وودبيكر (MinIO) | كافكا خارجي | مدعوم | مدعوم |
| كافكا | وودبيكر (محلي) | مدعوم ولكن غير موصى به (تحتاج جميع البودات إلى نظام ملفات مشترك) | غير مدعوم |