لمحة عن خدمة صيانة حديقة الحيوانات

Edge for Private Cloud ‏v4.18.01

تم تصميم مجموعات ZooKeeper لتظلّ وظيفية بدون فقدان البيانات، على الرغم من فقدان عقدة ZooKeeper واحدة أو أكثر. يمكن استخدام هذه المرونة بفعالية لإجراء عمليات الصيانة على مثبّتات ZooKeeper بدون إيقاف النظام.

لمحة عن ZooKeeper وEdge

في Edge، تحتوي عقد ZooKeeper على بيانات الإعدادات عن الموقع الجغرافي وإعدادات مكوّنات Edge المختلفة، وتُرسِل إشعارات إلى المكوّنات المختلفة بشأن تغييرات الإعدادات. تُحدِّد جميع طوبولوجيات Edge المتوافقة لنظام الإنتاج استخدام ثلاث عُقد ZooKeeper على الأقل.

استخدِم السمتَين ZK_HOSTS و ZK_CLIENT_HOSTS فيملف إعدادات Edge لتحديد عقد ZooKeeper. للامتحان

ZK_HOSTS="$IP1 $IP2 $IP3" 
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3" 

حيث:

  • ZK_HOSTS: لتحديد عنوان IP لعقد ZooKeeper يجب إدراج عناوين IP بالترتيب نفسه على جميع عقد ZooKeeper.

    في بيئة تتضمّن عدة مراكز بيانات، يجب إدراج جميع عقد ZooKeeper من جميع مراكز البيانات.
  • ZK_CLIENT_HOSTS: لتحديد عناوين IP لعقد ZooKeeper التي يستخدمها مركز البيانات هذا فقط. يجب إدراج عناوين IP بالترتيب نفسه على جميع عقد ZooKeeper في مركز البيانات.

    في عملية تثبيت واحدة من "مركز البيانات"، تكون هذه هي العقد نفسها المحدّدة بواسطة ZK_HOSTS. في البيئة التي تتضمّن عدة مراكز بيانات، يجب أن يسرد ملف إعدادات Edge لكل مركز بيانات فقط عقد ZooKeeper الخاصة بهذا المركز.

يتم تلقائيًا تصنيف جميع عقد ZooKeeper على أنّها عقد voter. وهذا يعني أنّ العقد تشارك جميعها في انتخاب قائد ZooKeeper. يمكنك تضمين المُعدِّل ":observer" مع ZK_HOSTS للإشارة إلى أنّه الملاحظة هي عقدة مراقب، وليست عقدة تصويت. لا تشارك العقدة المراقبة في انتخاب القائد.

عادةً ما تحدّد المُعدِّل ":observer" عند إنشاء مراكز Edge Data متعددة، أو عندما يتضمّن مركز بيانات واحد عددًا كبيرًا من عقد ZooKeeper. على سبيل المثال، في عملية تركيب Edge تتضمّن 12 مضيفًا مع مركزَي بيانات، يكون ZooKeeper على العقدة 9 في مركز البيانات 2 هو المراقب:

بعد ذلك، استخدِم الإعدادات التالية في ملف الإعدادات الخاص بمركز البيانات 1:

ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"

بالنسبة إلى مركز البيانات

ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9"

لمحة عن القادة والمتابعين والناخبين والمراقبين

في عملية تثبيت ZooKeeper متعددة العقد، يتم تحديد إحدى العقد على أنّها العقدة الرئيسية. يتم تصنيف جميع عقد ZooKeeper الأخرى على أنّها متابعون. في حين أنّ عمليات القراءة يمكن أن تتم من أي node في ZooKeeper، يتم إعادة توجيه جميع طلبات الكتابة إلى العقدة الرئيسية. على سبيل المثال، تتم إضافة معالج رسائل جديد إلى Edge. ويتم كتابة هذه المعلومات في عنصر ZooKeeper leader. جميع المتابعين ثم تكرار البيانات

في وقت تثبيت Edge، يمكنك تحديد كل عقدة ZooKeeper كمُشارك في التصويت أو كمراقب. ويتم بعد ذلك انتخاب العميل الرئيسي من قِبل جميع عقد ZooKeeper المشارِكة في التصويت. الشرط الوحيد لانتخاب زعيم هو أن يكون هناك عدد كافٍ من الأصوات لعقد اجتماع صحيح من خلال توفُّر عدد كافٍ من عقد ZooKeeper المُنتخبة. يشير مصطلح "اقتران التصويت" إلى أنّ أكثر من نصف جميع عقد ZooKeeper المشارِكة في التصويت، في جميع مراكز البيانات، تعمل بشكلٍ سليم.

إذا لم يكن هناك نصاب من العقد المُنتخبة، لا يمكن انتخاب أي قائد. في هذا السيناريو، لا يمكن لـ Zookeeper تقديم الطلبات. وهذا يعني أنّه لا يمكنك إرسال طلب إلى "خادم إدارة Edge" أو معالجة طلبات Management API أو تسجيل الدخول إلى واجهة مستخدم Edge إلى أن تتم استعادة النصاب القانوني.

على سبيل المثال، في عملية تثبيت واحدة لمركز بيانات:

  • لقد ثبَّتّ ثلاث عقد ZooKeeper.
  • جميع عقد ZooKeeper هي عقد تصويت
  • النصاب القانوني هو عقدتَا تصويت صالحتَين
  • إذا كانت هناك عقدة واحدة فقط من العقد المُحددة للتصويت، لا يمكن أن تعمل مجموعة ZooKeeper.

في عملية التثبيت التي تتضمّن مركزَي بيانات:

  • لقد ثبَّتت ثلاث عقد ZooKeeper لكل مركز بيانات، بإجمالي ست عقد.
  • يتضمّن مركز البيانات 1 ثلاث عقد تصويت.
  • يتضمّن "مركز البيانات 2" عقدتَي تصويت وعقدة مراقبة واحدة.
  • يستند النصاب القانوني إلى الناخبين الخمسة في كلا مركزَي البيانات، وبالتالي هو ثلاث عقد ناخبين صالحة
  • إذا كانت هناك عقدتَان فقط أو أقل من عقد الاختيار، لا يمكن لمجموعة ZooKeeper العمل.

إضافة العقد كمُنتخبين أو مراقبين

قد تتطلّب متطلبات النظام إضافة المزيد من عقد ZooKeeper إلى عملية تثبيت Edge. توضِّح مستندات إضافة عقد ZooKeeper كيفية إضافة عقد ZooKeeper إضافية إلى Edge. عند إضافة عقد ZooKeeper، يجب مراعاة نوع العقد التي تريد إضافتها: مراقب أو مشارك في التصويت.

يجب التأكّد من توفّر عدد كافٍ من العقد المُشفِّرة لضمان استمرار عمل مجموعة ZooKeeper في حال تعطُّل عقدة واحدة أو أكثر من العقد المُشفِّرة، ما يعني أنّه لا يزال هناك نصاب كافٍ من العقد المُشفِّرة. من خلال إضافة عقد تصويت، يمكنك زيادة حجم النصاب القانوني، وبالتالي يمكنك تحمل المزيد من حالات تعطُّل عقد التصويت.

ومع ذلك، يمكن أن تؤثّر إضافة عقد تصويت إضافية سلبًا في أداء الكتابة لأنّ عمليات الكتابة تتطلّب حصول النصاب القانوني على الموافقة على العقد الرئيسي. يعتمد الوقت المستغرَق لتحديد العقدة الرائدة على عدد العقد التي تُجري عملية التصويت، والذي يزداد عند إضافة المزيد من هذه العقد. لذلك، لا تريد جعل جميع العقد ناخبين.

بدلاً من إضافة عقد تصويت، يمكنك إضافة عقد مراقبة. تؤدي إضافة العقد المراقبة إلى زيادة الأداء العام لقراءة النظام بدون زيادة النفقات العامة لانتخاب قائد لأنّ العقد المراقبة لا تصوت ولا تؤثّر في حجم العدد المطلوب. لذلك، إذا تعطّلت إحدى العقد المراقبة، لن يؤثّر ذلك في قدرة المجموعة على انتخاب قائد. ومع ذلك، يمكن أن يؤدي فقدان عقد المراقبين إلى انخفاض في أداء القراءة لمجموعة ZooKeeper لأنّه سيكون هناك عدد أقل من العقد المتاحة لطلبات البيانات.

في مركز بيانات واحد، تنصح Apigee بعدم استخدام أكثر من خمسة مستخدمين للتصويت بغض النظر عن عدد العقد المراقبة. في مركزَي بيانات، تنصح شركة Apigee بعدم استخدام أكثر من تسعة مستخدمين مؤهّلين للتصويت (خمسة في مركز البيانات أحدهما وأربعة في المركز الآخر). يمكنك بعد ذلك إضافة أي عدد مطلوب من العقد المراقبة وفقًا لمتطلبات النظام.

اعتبارات الصيانة

يمكن إجراء صيانة ZooKeeper على مجموعة تعمل بكامل طاقتها بدون أي وقت توقف إذا كانت تتم على عقدة واحدة في كل مرة. من خلال التأكّد من أنّه لا تتعطّل سوى عقدة واحدة من عقد ZooKeeper في أي وقت، يمكنك التأكّد من توفّر عدد كافٍ من العقد المُنتخبة في أي وقت لانتخاب قائد.

الصيانة في مراكز بيانات متعدّدة

عند العمل مع مراكز بيانات متعددة، تذكَّر أنّ مجموعة ZooKeeper لا تصنِّف بين مراكز البيانات. تعرض مجموعات ZooKeeper جميع عقد ZooKeeper في جميع مراكز البيانات كمجموعة واحدة.

لا يشكّل الموقع الجغرافي لعقد المدراء في مركز بيانات معيّن عاملاً عندما يُجري ZooKeeper حسابات قاعدة النصاب. يمكن أن تتعطل العقد الفردية في مراكز البيانات، ولكن طالما يتم الحفاظ على العدد المطلوب من العقد في المجموعة بأكملها، سيظلّ ZooKeeper قيد التشغيل.

الآثار المترتبة على الصيانة

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

إذا كانت العقدة التي تتعطل هي عقدة مراقبة، يمكنك توقّع انخفاض طفيف في أداء مجموعة ZooKeeper إلى أن تتم استعادة العقدة. إذا كانت العقدة node هي node تصويت، يمكن أن يؤثّر ذلك في قابلية مجموعة ZooKeeper للاستمرار بسبب فقدان عقدة تشارك في عملية انتخاب القائد. بغض النظر عن سبب تعطُّل العقدة المُنتخبة، من المهم الحفاظ على النصاب القانوني للعقد المُنتخبة المتاحة.

إجراءات الصيانة

يجب عدم تنفيذ أي إجراء صيانة إلا بعد التأكّد من أنّ مجموعة ZooKeeper تعمل بشكل صحيح. يفترض ذلك أنّ العقد المراقبة صالحة وأنّه تتوفّر عدد كافٍ من العقد المُنتخبة أثناء الصيانة للحفاظ على النصاب القانوني.

عند استيفاء هذه الشروط، يمكن لمجموعة ZooKeeper ذات الحجم العشوائي تحمل فقدان عقدة واحدة في أي وقت بدون فقدان البيانات أو التأثير بشكل ملحوظ في الأداء. وهذا يعني أنّه يمكنك إجراء عمليات الصيانة على أي عقدة في المجموعة طالما أنّها على عقدة واحدة في المرة الواحدة.

كجزء من إجراء الصيانة، استخدِم الإجراء التالي لتحديد نوع عقدة ZooKeeper (قائد أو ناخب أو مراقب):

  1. إذا لم يكن مثبّتًا على عقدة ZooKeeper، ثبِّت nc:
    > sudo yum install nc
  2. شغِّل الأمر nc التالي على العقدة:
    > echo stat | nc localhost 2181

    حيث يكون 2181 هو منفذ ZooKeeper. من المفترض أن يظهر لك الإخراج في النموذج:
    إصدار Zookeeper: 3.4.5-1392090، تم إنشاؤه في ‎30/09/2012 17:52 GMT
    العملاء: ‎/a.b.c.d:xxxx[0](queued=0,recved=1,sent=0)
    مدة الاستجابة الدنيا/المتوسّطة/الحد الأقصى: 0/0/0
    تم الاستلام: 1
    تم الإرسال: 0
    عمليات الربط: 1
    عمليات الربط غير المكتملة: 0
    Zxid: 0xc00000044
    الوضع: تابع
    عدد العقد: 653


    في سطر الوضع من الإخراج للعقد، من المفترض أن يظهر لك مراقب أو قائد أو تابع (أي ناخب ليس هو القائد) استنادًا إلى إعدادات العقدة.

    ملاحظة: في عملية تثبيت مستقلة لـ Edge باستخدام عقدة ZooKeeper واحدة، يتم ضبط الوضع على مستقل.
  3. كرِّر الخطوتَين 1 و2 على كل عقدة ZooKeeper.

ملخّص

إنّ أفضل طريقة لإجراء الصيانة على مجموعة ZooKeeper هي إجراؤها على عقدة واحدة في كل مرة. تذكير:

  • يجب الحفاظ على نصاب من العقد التي تُجري عملية التصويت أثناء الصيانة لضمان استمرار عمل مجموعة ZooKeeper
  • لا يؤثّر إيقاف عقدة مراقبة في العدد المطلوب أو إمكانية انتخاب قائد.
  • يتم احتساب النصاب على مستوى جميع عقد ZooKeeper في جميع مراكز البيانات.
  • مواصلة الصيانة للخادم التالي بعد تشغيل الخادم السابق
  • استخدام الأمر nc لفحص عقدة ZooKeeper