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

Edge for Private Cloud الإصدار 4.19.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 كعُقد 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"

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

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:

  1. عدِّل ملف الإعداد الصامت وإزالة عنوان IP لعقدة Zookeeper التي تريد إزالتها.
  2. أعِد تنفيذ الأمر setup لـ Zookeeper لإعادة ضبط عُقد ZooKeeper المتبقية:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper setup -f updated_config_file
  3. إعادة تشغيل جميع عُقد Zookeeper:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
  4. إعادة ضبط عقدة خادم الإدارة:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  5. إعادة ضبط جميع أجهزة التوجيه:
    /opt/apigee/apigee-service/bin/apigee-service edge-router setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  6. أعِد ضبط جميع معالِجات الرسائل:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  7. إعادة ضبط جميع عُقد Qpid:
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
  8. إعادة ضبط جميع عُقد Postgres:
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart

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

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

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

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

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

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

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

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

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

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

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

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

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

    من المفترض أن تظهر لك النتيجة على النموذج:

    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.