ترقية بولسار
توضح هذه المقالة عملية ترقية مكون Pulsar من V2 إلى V3 إذا كان لديك بالفعل نشر Milvus يعمل مع Pulsar V2.
منذ الإصدار 2.5 من Milvus، سيستخدم Milvus-helm و milvus-oper Pulsar V3 افتراضيًا لإصلاح بعض الأخطاء والثغرات الأمنية. بينما يتوافق Milvus 2.5 مع Pulsar 2.x، فإن الترقية إلى Pulsar V3 اختيارية. لتحسين الثبات والأداء، نوصي بالترقية إلى Pulsar V3.
إذا كنت تفضل استخدام Pulsar V2 مع Milvus v2.5.x، اقرأ استخدام Pulsar V2 مع Milvus v2.5.x.
تتطلب عملية الترقية انقطاعًا قصيرًا للخدمة (عادةً ما يستغرق الأمر من بضع دقائق إلى أكثر من عشر دقائق، اعتمادًا على كمية البيانات).
قبل العملية، تحتاج إلى إيقاف جميع العملاء قيد التشغيل من كتابة البيانات إلى ميلفوس. وإلا فقد تُفقد البيانات المكتوبة.
تفترض هذه المقالة أن Milvus مثبت في مساحة الاسم
defaultواسمهmy-release. يرجى تغيير المعلمات إلى مساحة الاسم واسم الإصدار الخاص بك أثناء تنفيذ الأوامر المنسوخة من هذه الصفحة.تأكد من أن بيئة العمل الخاصة بك لديها أذونات ضمن مساحة الاسم المذكورة أعلاه في مجموعة Kubernetes وتم تثبيت الأوامر التالية.
a.
kubectl>= 1.20b.
helm>= 3.14.0c.
cat،grep،awkلعمليات معالجة السلاسلد.
curlأو أتو الإصدار 2.4+ للتفاعل مع واجهة برمجة تطبيقات إدارة ميلفوس
خارطة الطريق
تتضمن عملية الترقية الخطوات التالية:
الإجراءات
يقدم هذا القسم الإجراءات التفصيلية لترقية بولسار من V2 إلى V3 في ميلفوس.
استمرار البيانات غير المستهلكة في بولسار
في هذه الخطوة، تحتاج في هذه الخطوة إلى التأكد من استمرار البيانات الموجودة في بولسار إلى خدمة تخزين الكائنات. هناك طريقتان متاحتان، ويمكنك اختيار الطريقة التي تناسب احتياجاتك.
النهج 1: استخدام أتو
إذا لم يكن لديك سوى عدد قليل من المجموعات في عملية نشر Milvus العاملة الخاصة بك مع عدم وجود العديد من الشرائح، يمكنك استخدام Attu لاستمرار البيانات إلى خدمة تخزين الكائنات.
حدد كل مجموعة في جميع قواعد البيانات الخاصة بك، وادخل إلى لوحة
Segments، وانقر فوق الزرFlush
لوحة شريحة من مجموعة ثم عند النافذة المنبثقة، انقر فوق
Flushمرة أخرى.
مطالبة تدفق البيانات في أتو ثم انتظر حتى تصبح جميع حالات الشرائح الثابتة للمجموعات
Flushed.
عرض حالة تدفق البيانات في أتو
النهج 2: استخدام واجهة برمجة تطبيقات الإدارة
وكيل المنفذ 9091 من وكيل Milvus إلى المضيف المحلي للعمليات اللاحقة.
kubectl -n default port-forward deploy/my-release-milvus-proxy 9091:9091 &الإخراج.
[1] 8116 Forwarding from 127.0.0.1:9091 -> 9091حفظ Pid للتنظيف اللاحق.
pid=8116قم بتشغيل إجراء استمرار جميع البيانات المدرجة من بولسار إلى مخزن أوجبيكت.
curl 127.0.0.1:9091/api/v1/collections \ |curl 127.0.0.1:9091/api/v1/persist -d @/dev/stdin\ |jq '.flush_coll_segIDs'| jq '[.[] | .data[]]' | jq '{segmentIDs: (.)}' \ > flushing_segments.json cat flushing_segments.jsonالإخراج.
{ "segmentIDs": [ 454097953998181000, 454097953999383600, 454097953998180800 ] }تحقق من مسح جميع المقاطع.
cat flushing_segments.json| curl -X GET 127.0.0.1:9091/api/v1/persist/state -d @/dev/stdinعند الانتهاء، يجب أن ترى المخرجات التالية
{"status":{},"flushed":true}إيقاف العملية الخلفية
kubectl port-forwardkill $pidالإخراج.
[1] + 8116 terminated kubectl -n default port-forward deploy/my-release-milvus-proxy 9091:9091
أوقف Milvus واحذف Pulsar V2
في هذه الخطوة، تحتاج إلى إيقاف جراب Milvus وحذف نشر Pulsar V2. هناك قسمان منفصلان متاحان:
لمستخدمي Milvus Helm
إذا كنت قد قمت بتثبيت Milvus باستخدام مخطط Milvus Helm، انتقل إلى حذف Pulsar v2 باستخدام Helm.
لمستخدمي مشغل Milvus Helm
إذا كنت قد قمت بتثبيت Milvus باستخدام مشغل Milvus، انتقل إلى حذف Pulsar v2 باستخدام مشغل Milvus.
حذف Pulsar V2 باستخدام Helm
إذا كنت قد قمت بتثبيت Milvus باستخدام مخطط Milvus Helm، اتبع الخطوات التالية لإيقاف جراب Milvus وحذف نشر Pulsar V2.
احفظ قيم إصدار Milvus الحالية في
values.yamlلاستعادتها لاحقًا.helm -n default get values my-release -o yaml > values.yaml cat values.yamlاستخدم الأمر لإيقاف ميلفوس وجميع التبعيات. لا تقلق بشأن وحدات تخزين البيانات، فسيتم الاحتفاظ بها بشكل افتراضي.
helm -n default uninstall my-releaseالإخراج
These resources were kept due to the resource policy: [PersistentVolumeClaim] my-release-minio release "my-release" uninstalledيجب مسح قائمة PVCs و PVs النابضة (مطالبات وحدة التخزين الثابتة ووحدات التخزين الثابتة)
kubectl -n default get pvc -lapp=pulsar,release=my-release |grep -v NAME |awk '{print $1}' > pulsar-pvcs.txt kubectl -n default get pvc -lapp=pulsar,release=my-release -o custom-columns=VOL:.spec.volumeName|grep -v VOL > pulsar-pvs.txt echo "Volume Claims:" cat pulsar-pvcs.txt echo "Volumes:" cat pulsar-pvs.txtالإخراج
Volume Claims: my-release-pulsar-bookie-journal-my-release-pulsar-bookie-0 my-release-pulsar-bookie-journal-my-release-pulsar-bookie-1 my-release-pulsar-bookie-ledgers-my-release-pulsar-bookie-0 my-release-pulsar-bookie-ledgers-my-release-pulsar-bookie-1 my-release-pulsar-zookeeper-data-my-release-pulsar-zookeeper-0 Volumes: pvc-f590a4de-df31-4ca8-a424-007eac3c619a pvc-17b0e215-3e14-4d14-901e-1a1dda9ff5a3 pvc-72f83c25-6ea1-45ee-9559-0b783f2c530b pvc-60dcb6e4-760d-46c7-af1a-d1fc153b0caf pvc-2da33f64-c053-42b9-bb72-c5d50779aa0aتحقق مما إذا كانت قائمة PVCs
pulsar-pvcs.txtكلها لـ Pulsar. بمجرد التأكد من عدم وجود خطأ، احذف PVCs.cat pulsar-pvcs.txt |xargs -I {} kubectl -n default delete pvc {} --wait=falseالإخراج.
persistentvolumeclaim "my-release-pulsar-bookie-journal-my-release-pulsar-bookie-0" deleted persistentvolumeclaim "my-release-pulsar-bookie-journal-my-release-pulsar-bookie-1" deleted persistentvolumeclaim "my-release-pulsar-bookie-ledgers-my-release-pulsar-bookie-0" deleted persistentvolumeclaim "my-release-pulsar-bookie-ledgers-my-release-pulsar-bookie-1" deleted persistentvolumeclaim "my-release-pulsar-zookeeper-data-my-release-pulsar-zookeeper-0" deleted(اختياري) اعتمادًا على فئة التخزين التي توفر PVC، قد تحتاج أيضًا إلى إزالة PVC يدويًا.
cat pulsar-pvs.txt |xargs -I {} kubectl -n default delete pvc {} --wait=falseلا بأس إذا أخرجت أخطاء NotFound. تم حذفه بالفعل بواسطة وحدات تحكم kubernetes.
Error from server (NotFound): persistentvolumeclaims "pvc-f590a4de-df31-4ca8-a424-007eac3c619a" not found Error from server (NotFound): persistentvolumeclaims "pvc-17b0e215-3e14-4d14-901e-1a1dda9ff5a3" not found Error from server (NotFound): persistentvolumeclaims "pvc-72f83c25-6ea1-45ee-9559-0b783f2c530b" not found Error from server (NotFound): persistentvolumeclaims "pvc-60dcb6e4-760d-46c7-af1a-d1fc153b0caf" not found Error from server (NotFound): persistentvolumeclaims "pvc-2da33f64-c053-42b9-bb72-c5d50779aa0a" not found
حذف Pulsar V2 باستخدام مشغل Milvus
إذا كنت قد قمت بتثبيت Milvus باستخدام مشغل Milvus، اتبع الخطوات أدناه لإيقاف جراب Milvus وحذف نشر Pulsar V2.
احفظ بيان Milvus الحالي في
milvus.yamlلاستخدامه لاحقًا.kubectl -n default get milvus my-release -o yaml > milvus.yaml head milvus.yaml -n 20الإخراج.
apiVersion: milvus.io/v1beta1 kind: Milvus metadata: annotations: milvus.io/dependency-values-merged: "true" milvus.io/pod-service-label-added: "true" milvus.io/querynode-current-group-id: "0" creationTimestamp: "2024-11-22T08:06:59Z" finalizers: - milvus.milvus.io/finalizer generation: 3 labels: app: milvus milvus.io/operator-version: 1.1.2 name: my-release namespace: default resourceVersion: "692217324" uid: 7a469ed0-9df1-494e-bd9a-340fac4305b5 spec: components:إنشاء ملف
patch.yamlبالمحتوى التالي.# a patch to retain etcd & storage data and delete pulsar data while delete milvus spec: dependencies: etcd: inCluster: deletionPolicy: Retain pvcDeletion: false storage: inCluster: deletionPolicy: Retain pvcDeletion: false pulsar: inCluster: deletionPolicy: Delete pvcDeletion: trueاستخدم
kubectl patchللاحتفاظ ببيانات إلخd وبيانات التخزين وحذف بيانات بولسار أثناء حذف ميلفوس.kubectl -n default patch milvus my-release --patch-file patch.yaml --type=mergeالإخراج.
milvus.milvus.io/my-release patchedإيقاف ميلفوس وحذف بولسار V2. لا تقلق بشأن وحدات تخزين بيانات إلخd وبيانات تخزين الكائنات، سيتم الاحتفاظ بها افتراضيًا.
kubectl -n default delete milvus my-release --wait=false kubectl -n default get milvus my-release kubectl -n default delete milvus my-release --wait=trueالإخراج: لاحظ أنه قد يستغرق الأمر بضع دقائق حتى يتوقف ميلفوس برشاقة وحتى يقوم المشغل بحذف وحدات تخزين بولسار.
milvus.milvus.io "my-release" deleted NAME MODE STATUS UPDATED AGE my-release cluster Deleting True 41m milvus.milvus.io "my-release" deletedانتظر حتى انتهاء الأمر.
تحقق مرة أخرى لترى أن مورد ميلفوس قد اختفى
kubectl -n default get milvus my-releaseيجب أن يكون الإخراج مثل.
No resources found in default namespace.
بدء تشغيل بولسار V3 وميلفوس
في هذه الخطوة، تحتاج في هذه الخطوة إلى بدء تشغيل مجلدات Pulsar V3 و Milvus. هناك قسمان منفصلان متاحان:
لمستخدم Helm
إذا كنت قد قمت بتثبيت Milvus باستخدام مخطط Milvus Helm، انتقل إلى لمستخدمي Milvus Helm.
لمستخدمي مشغل ميلفوس
إذا كنت قد قمت بتثبيت Milvus باستخدام مشغل Milvus، انتقل إلى لمستخدم مشغل Milvus.
بدء تشغيل Pulsar V3 واستخدام Helm
قم بتحرير
values.yamlالمحفوظ في الخطوة السابقة.# change the following: pulsar: enabled: false # set to false # you may also clean up rest fields under pulsar field # it's ok to keep them though. pulsarv3: enabled: true # append other values for pulsar v3 chart if needsقم بتحديث ريبو الدفة المحلي الخاص بك
helm repo add zilliztech https://zilliztech.github.io/milvus-helm helm repo update zilliztechالإخراج
"zilliztech" already exists with the same configuration, skipping Hang tight while we grab the latest from your chart repositories... ...Successfully got an update from the "zilliztech" chart repository Update Complete. ⎈Happy Helming!⎈قم بتثبيت إصدار ميلفوس الخاص بك بأحدث إصدار من مخطط الدفة باستخدام الإصدار المحرر
values.yamlhelm -n default install my-release zilliztech/milvus --reset-values -f values.yamlالإخراج
NAME: my-release LAST DEPLOYED: Fri Nov 22 15:31:27 2024 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: Noneتحقق من البودات لمعرفة ما إذا كانت جميعها مجدولة وتعمل مع
kubectl -n default get pods.قد يستغرق الأمر بضع دقائق حتى تبدأ جميع الكبسولات في العمل
الإخراج مثل.
NAME READY STATUS RESTARTS AGE my-release-etcd-0 1/1 Running 0 4m3s my-release-milvus-datanode-56487bc4bc-s6mbd 1/1 Running 0 4m5s my-release-milvus-indexnode-6476894d6-rv85d 1/1 Running 0 4m5s my-release-milvus-mixcoord-6d8875cb9c-67fcq 1/1 Running 0 4m4s my-release-milvus-proxy-7bc45d57c5-2qf8m 1/1 Running 0 4m4s my-release-milvus-querynode-77465747b-kt7f4 1/1 Running 0 4m4s my-release-minio-684ff4f5df-pnc97 1/1 Running 0 4m5s my-release-pulsarv3-bookie-0 1/1 Running 0 4m3s my-release-pulsarv3-bookie-1 1/1 Running 0 4m3s my-release-pulsarv3-bookie-2 1/1 Running 0 4m3s my-release-pulsarv3-bookie-init-6z4tk 0/1 Completed 0 4m1s my-release-pulsarv3-broker-0 1/1 Running 0 4m2s my-release-pulsarv3-broker-1 1/1 Running 0 4m2s my-release-pulsarv3-proxy-0 1/1 Running 0 4m2s my-release-pulsarv3-proxy-1 1/1 Running 0 4m2s my-release-pulsarv3-pulsar-init-wvqpc 0/1 Completed 0 4m1s my-release-pulsarv3-recovery-0 1/1 Running 0 4m3s my-release-pulsarv3-zookeeper-0 1/1 Running 0 4m2s my-release-pulsarv3-zookeeper-1 1/1 Running 0 4m2s my-release-pulsarv3-zookeeper-2 1/1 Running 0 4m2s
بدء تشغيل Pulsar V3 واستخدام مشغل Milvus
قم بتحرير
milvus.yamlالمحفوظة في الخطوة السابقة.# change the followings fields: apiVersion: milvus.io/v1beta1 kind: Milvus metadata: annotations: null # this field should be removed or set to null resourceVersion: null # this field should be removed or set to null uid: null # this field should be removed or set to null spec: dependencies: pulsar: inCluster: chartVersion: pulsar-v3 # delete all previous values for pulsar v2 and set it to null. # you may add additional values here for pulsar v3 if you're sure about it. values: nullتأكد من ترقية مشغل Milvus إلى الإصدار v1.1.2 أو إصدار أحدث
helm repo add milvus-operator https://zilliztech.github.io/milvus-operator helm repo update milvus-operator helm -n milvus-operator upgrade milvus-operator milvus-operator/milvus-operatorاستخدم الأمر لبدء تشغيل ميلفوس باستخدام Pulsar v3
kubectl create -f milvus.yamlالإخراج
milvus.milvus.io/my-release createdتحقق من القرون لمعرفة ما إذا كانت جميعها مجدولة وتعمل مع
kubectl -n default get pods.قد يستغرق الأمر بضع دقائق لبدء تشغيل جميع الكبسولات.
الإخراج مثل.
NAME READY STATUS RESTARTS AGE my-release-etcd-0 1/1 Running 0 65m my-release-milvus-datanode-57fd59ff58-5mdrk 1/1 Running 0 93s my-release-milvus-indexnode-67867c6b9b-4wsbw 1/1 Running 0 93s my-release-milvus-mixcoord-797849f9bb-sf8z5 1/1 Running 0 93s my-release-milvus-proxy-5d5bf98445-c55m6 1/1 Running 0 93s my-release-milvus-querynode-0-64797f5c9-lw4rh 1/1 Running 0 92s my-release-minio-79476ccb49-zvt2h 1/1 Running 0 65m my-release-pulsar-bookie-0 1/1 Running 0 5m10s my-release-pulsar-bookie-1 1/1 Running 0 5m10s my-release-pulsar-bookie-2 1/1 Running 0 5m10s my-release-pulsar-bookie-init-v8fdj 0/1 Completed 0 5m11s my-release-pulsar-broker-0 1/1 Running 0 5m11s my-release-pulsar-broker-1 1/1 Running 0 5m10s my-release-pulsar-proxy-0 1/1 Running 0 5m11s my-release-pulsar-proxy-1 1/1 Running 0 5m10s my-release-pulsar-pulsar-init-5lhx7 0/1 Completed 0 5m11s my-release-pulsar-recovery-0 1/1 Running 0 5m11s my-release-pulsar-zookeeper-0 1/1 Running 0 5m11s my-release-pulsar-zookeeper-1 1/1 Running 0 5m10s my-release-pulsar-zookeeper-2 1/1 Running 0 5m10s