الإصدار 4.16.09 من Edge for 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 لمركز البيانات هذا فقط.
By default, all ZooKeeper nodes are designated as voter nodes. وهذا يعني أنّ جميع العُقد تشارك في اختيار قائد 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 التي يحق لها التصويت. الشرط الوحيد لانتخاب قائد هو أن يكون هناك نصاب قانوني من عُقد ناخبي 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 (القائد أو الناخب أو المراقب):
- إذا لم يكن مثبّتًا على عقدة ZooKeeper، ثبِّت nc:
> sudo yum install nc - شغِّل الأمر 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
في سطر الوضع من الناتج للعُقد، من المفترض أن يظهر لك المراقب أو القائد أو التابع (أي الناخب الذي ليس القائد) بناءً على إعدادات العُقدة.
ملاحظة: في عملية تثبيت مستقلة لـ Edge مع عقدة ZooKeeper واحدة، يتم ضبط الوضع على مستقل. - كرِّر الخطوتَين 1 و2 على كل عقدة ZooKeeper.
ملخّص
أفضل طريقة لإجراء الصيانة على مجموعة ZooKeeper هي إجراؤها على عقدة واحدة في كل مرة. تذكير:
- يجب الحفاظ على نصاب قانوني من عُقد المصوّتين أثناء الصيانة لضمان استمرار عمل مجموعة ZooKeeper.
- لا يؤثر إيقاف عقدة مراقبة في النصاب القانوني أو القدرة على اختيار قائد
- يتم احتساب النصاب القانوني على مستوى جميع عُقد ZooKeeper في جميع مراكز البيانات
- متابعة الصيانة للخادم التالي بعد تشغيل الخادم السابق
- استخدام الأمر nc لفحص عقدة ZooKeeper