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

Edge for Private Cloud، الإصدار 4.17.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، أو عندما يحتوي مركز بيانات واحد على عدد كبير من عُقد 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 إلى أن تتم استعادة العقدة. إذا كانت العقدة عبارة عن عقدة خاصة بالناخبين، قد يؤثّر ذلك على جدوى مجموعة ZooKeeper بسبب فقدان إحدى النقاط المشاركة في عملية انتخاب القائد. بغض النظر عن سبب تعطُّل العقدة المُنتخبة، من المهم الحفاظ على النصاب القانوني للعقد المُنتخبة المتاحة.

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

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

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

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

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

    حيث يكون 2181 هو منفذ ZooKeeper.













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

ملخّص

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

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