لمحة عن صيانة ZooKeeper

الإصدار 4.18.05 من Edge الخاص بخدمة Private Cloud

صُممت مجموعات 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 كعُقد authr. وهذا يعني أن العُقد جميعها تشارك في اختيار قائد 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 الأخرى كمتابعين. ويمكن أن تتم القراءات من أي عقدة ZooKeeper، إلا أنه تتم إعادة توجيه جميع طلبات الكتابة إلى القائد. على سبيل المثال، تمت إضافة معالج رسائل جديد إلى Edge. هذه المعلومات مكتوبة إلى قائد ZooKeeper. ثم ينسخ جميع المتابعين البيانات.

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

وفي حال عدم توفّر نصابي صحيح من بين عُقد الناخبين، لا يمكن انتخاب أي قائد. في هذا السيناريو، لا يمكن لـ Zookeeper تقديم الطلبات. وهذا يعني أنه لا يمكنك تقديم طلب إلى خادم إدارة Edge، أو معالجة طلبات واجهة برمجة تطبيقات الإدارة، أو تسجيل الدخول إلى واجهة مستخدم 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. من المفترض أن تظهر لك النتيجة على النموذج:

    Zookeeper version: 3.4.5-1392090,
    built on 09/30/2012 17:52 GMT
    Clients: /a.b.c.d:xxxx[0](queued=0,recved=1,sent=0)
    Latency min/avg/max: 0/0/0
    Received: 1
    Sent: 0
    Connections: 1
    Outstanding: 0
    Zxid: 0xc00000044
    Mode: follower
    Node count: 653

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

  3. كرِّر الخطوتين 1 و2 في كل عقدة ZooKeeper.

ملخّص

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

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