ترقية بولسار
توضح هذه المقالة عملية ترقية مكون 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 وتم تثبيت الأوامر التالية.
أ.
kubectl
>= 1.20ب.
helm
>= 3.14.0c.
cat
،grep
،awk
لعمليات معالجة السلسلة لعمليات معالجة السلسلةد.
curl
أو أتو v2.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-forward
kill $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.yaml
helm -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