🚀 جرب Zilliz Cloud، الـ Milvus المدارة بالكامل، مجاناً — تجربة أداء أسرع بـ 10 أضعاف! جرب الآن>>

milvus-logo
LFAI
الصفحة الرئيسية
  • دليل الإدارة
  • Home
  • Docs
  • دليل الإدارة

  • التكوين

  • المنسق هـ أ

المنسق HA

كما هو موضح في بنية Milvus، تتكون Milvus من العديد من المكونات وتعمل بطريقة موزعة. من بين جميع المكونات، يضمن Milvus التوافر العالي للعاملين من خلال زيادة وتوسيع نطاق العقد، مما يجعل المنسقين الحلقة الضعيفة الوحيدة في السلسلة.

نظرة عامة

في الإصدار 2.2.3، يطبّق Milvus التوافر العالي للمنسقين لجعلهم يعملون في وضع الاستعداد النشط، مما يخفف من نقاط الفشل الأحادية المحتملة (SPoFs) التي يمكن أن تؤدي إلى عدم توفر الخدمة.

Coordinator HA المنسق HA

يوضح الشكل أعلاه كيفية عمل المنسقين في وضع الاستعداد النشط. عند بدء تشغيل زوج من المنسقين، يقومون بالتسجيل في etcd باستخدام معرف الخادم الخاص بهم ويتنافسون على الدور النشط. المنسق الذي ينجح في استئجار الدور النشط من الخادم سيبدأ في الخدمة، وسيبقى المنسق الآخر في الزوج في وضع الاستعداد، يراقب الدور النشط ويكون جاهزًا للخدمة في حالة وفاة المنسق النشط.

تمكين المنسق HA

مع Helm

لبدء تشغيل منسقين متعددين وجعلهم يعملون في وضع الاستعداد النشط، يجب عليك إجراء التغييرات التالية على ملف values.yaml.

  • قم بتعيين xxxCoordinator.replicas إلى 2.
  • قم بتعيين xxxCoordinator.activeStandby.enabled إلى true.

يستخدم مقتطف التعليمات البرمجية التالي RootCoord كمثال. يمكنك فعل الشيء نفسه مع المنسقين من الأنواع الأخرى.

rootCoordinator:
  enabled: true
  # You can set the number of replicas greater than 1 only if you also need to set activeStandby.enabled to true.
  replicas: 2  # Otherwise, remove this configuration item.
  resources: {}
  nodeSelector: {}
  affinity: {}
  tolerations: []
  extraEnv: []
  heaptrack:
    enabled: false
  profiling:
    enabled: false  # Enable live profiling
  activeStandby:
    enabled: true  # Set this to true to have RootCoordinators work in active-standby mode.

باستخدام Docker

لبدء تشغيل منسقين متعددين وجعلهم يعملون في وضع الاستعداد النشط، يمكنك إضافة بعض التعريفات إلى ملف docker-compose الذي تستخدمه لبدء تشغيل مجموعة ميلفوس الخاصة بك.

يستخدم مقتطف الشيفرة التالي RootCoord كمثال. يمكنك فعل الشيء نفسه مع المنسقين من الأنواع الأخرى.

  rootcoord:
    container_name: milvus-rootcoord
    image: milvusdb/milvus:v2.2.3
    command: ["milvus", "run", "rootcoord"]
    environment:
      ETCD_ENDPOINTS: etcd:2379
      MINIO_ADDRESS: minio:9000
      PULSAR_ADDRESS: pulsar://pulsar:6650
      ROOT_COORD_ADDRESS: rootcoord:53100
      # add ROOT_COORD_ENABLE_ACTIVE_STANDBY to enable active standby
      ROOT_COORD_ENABLE_ACTIVE_STANDBY: true
    depends_on:
      - "etcd"
      - "pulsar"
      - "minio"

#   add the following to have RootCoords work in active-standby mode
#   rootcoord-1:
#    container_name: milvus-rootcoord-1
#    image: milvusdb/milvus:v2.2.3
#    command: ["milvus", "run", "rootcoord"]
#    environment:
#      ETCD_ENDPOINTS: etcd:2379
#      MINIO_ADDRESS: minio:9000
#      PULSAR_ADDRESS: pulsar://pulsar:6650
#      ROOT_COORD_ADDRESS: rootcoord-1:53100
#      # add ROOT_COORD_ENABLE_ACTIVE_STANDBY to enable active standby
#      ROOT_COORD_ENABLE_ACTIVE_STANDBY: true
#    depends_on:
#      - "etcd"
#      - "pulsar"
#      - "minio"

مع قذيفة ماك/لينكس

لبدء تشغيل عدة منسقين وجعلهم يعملون في وضع الاستعداد النشط، يمكنك

  1. تحميل التعليمات البرمجية المصدرية لـ Milvus على محرك الأقراص المحلي، وبدء تشغيل مجموعة Milvus من التعليمات البرمجية المصدرية كما يلي:

    sudo ./scripts/start_cluster.sh
    

    يعمل Milvus بمنسق واحد فقط من كل نوع في نهاية هذه الخطوة.

  2. قم بتحديث milvus.yaml لتغيير رقم منفذ المنسق من كل نوع. يستخدم ما يلي rootCoord كمثال.

    rootCoord:
      address: localhost
      port: 53100 # change to 53001
    
  3. ابدأ تشغيل المنسق الاحتياطي.

    sudo nohup ./bin/milvus run rootcoord > /tmp/rootcoord2.log 2>&1 &
    

    في نهاية هذه الخطوة، قم بتشغيل الأمر التالي للتحقق من وجود عمليتي منسقين.

    ps aux|grep milvus
    

    يجب أن تكون المخرجات مشابهة لـ

    > ps aux|grep milvus
    root        12813   0.7 0.2 410709648   82432   ??  S   5:18PM  0:33.28 ./bin/milvus run rootcoord
    root        12816   0.5 0.2 409487968   62352   ??  S   5:18PM  0:22.69 ./bin/milvus run proxy
    root        17739   0.1 0.3 410289872   91792 s003  SN  6:01PM  0:00.30 ./bin/milvus run rootcoord
    ...
    

    ويقوم المنسق الاحتياطي بإخراج إدخال سجل كل عشر ثوانٍ على النحو التالي:

    [INFO] [sessionutil/session_util.go:649] ["serverName: rootcoord is in STANDBY ..."]
    
  4. أوقف المنسق النشط في زوج وراقب سلوك المنسق الاحتياطي.

    يمكنك أن تجد أن الأمر يستغرق 60 ثانية حتى يتولى المنسق الاحتياطي الدور النشط.

    [2022/09/21 11:58:33.855 +08:00] [DEBUG] [sessionutil/session_util.go:677] ["watch the ACTIVE key"] [DELETE="key:\"by-dev/meta/session/rootcoord\" mod_revision:167 "]
    [2022/09/21 11:58:33.856 +08:00] [DEBUG] [sessionutil/session_util.go:677] ["watch the ACTIVE key"] [DELETE="key:\"by-dev/meta/session/rootcoord-15\" mod_revision:167 "]
    [2022/09/21 11:58:33.856 +08:00] [INFO] [sessionutil/session_util.go:683] ["stop watching ACTIVE key"]
    [2022/09/21 11:58:33.856 +08:00] [INFO] [sessionutil/session_util.go:655] ["start retrying to register as ACTIVE service..."]
    [2022/09/21 11:58:33.859 +08:00] [INFO] [sessionutil/session_util.go:641] ["register ACTIVE service successfully"] [ServerID=19]
    [2022/09/21 11:58:33.859 +08:00] [INFO] [sessionutil/session_util.go:690] ["quit STANDBY mode, this node will become ACTIVE"]
    [2022/09/21 11:58:33.859 +08:00] [INFO] [rootcoord/root_coord.go:638] ["rootcoord switch from standby to active, activating"]
    [2022/09/21 11:58:33.859 +08:00] [INFO] [rootcoord/root_coord.go:306] ["RootCoord Register Finished"]
    [2022/09/21 11:58:33.859 +08:00] [DEBUG] [rootcoord/service.go:148] ["RootCoord start done ..."]
    [2022/09/21 11:58:33.859 +08:00] [DEBUG] [components/root_coord.go:58] ["RootCoord successfully started"]
    

يتم تعطيل المنسق HA افتراضيًا. ويمكنك تمكين هذه الميزة يدويًا عن طريق تغيير العناصر التالية في ملف تكوين Milvus.

الحدود

لا يوجد حالياً ضمان تناسق قوي بين الخدمة النشطة والخدمة الاحتياطية. لذلك، يحتاج المنسق الاحتياطي إلى إعادة تحميل البيانات الوصفية أثناء تولي الدور النشط.

لا يقوم Etcd بإصدار عقد إيجار إلا بعد انتهاء مهلة جلسة العمل الحالية. يتم تحديد المهلة الافتراضية لجلسة العمل بـ 60 ثانية. ولذلك، توجد فجوة مدتها 60 ثانية بين وقت وفاة المنسق النشط ووقت تولي المنسق الاحتياطي للدور النشط.

جرب Managed Milvus مجاناً

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

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

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