تتولى Redis Cluster فشل العقدة من خلال مجموعة من الكشف عن الفشل ، وترويج النسخة المتماثلة ، وإدارة الحالة العنقودية لضمان استمرار التشغيل وتوافر البيانات. إنه مصمم للبقاء على قيد الحياة من إخفاقات بعض العقد عن طريق الترويج تلقائيًا النسخ المتماثلة لاستبدال الأساتذة الذين لا يمكن الوصول إليهم ، مع الحفاظ على سلامة المساحة الرئيسية مع تقليل مخاطر فقدان البيانات.
الاتصالات العنقودية والكشف عن الفشل
تتصل العقد العنقودية Redis عبر بروتوكول ثنائي قائم على TCP مخصص يسمى Bus Redis Cluster Bus. تحافظ كل عقدة على اتصالات مع كل عقدة أخرى في المجموعة باستخدام هذا الحافلة ، مما يتيح الفحوصات الصحية المستمرة وتكاثر الدولة. ترسل العقد بشكل دوري حزم ping لتأكيد الحالة التشغيلية لأقرانها وتبادل المعلومات حول حالة المجموعة. يستخدم هذا الاتصال بروتوكول القيل والقال لنشر معلومات الكتلة بكفاءة ، ومساعدة في اكتشاف فشل العقدة.
العقد مراقبة أقرانها باستخدام آلية بينغ النشطة. إذا كانت العقدة لا تستجيب للأصوات خلال فترة مهلة تم تكوينها (Node_timeout) ، فسيتم وضع علامة على أنه من المحتمل أن يفشل مع حالة PFAIL. هذا هو مؤشر فشل مؤقت ، وهذا يعني أن العقدة قد تكون غير قابلة للوصول أو أسفل ، ولكن لم يتم تأكيدها بعد. إذا استمرت حالة PFAIL وتم تأكيدها من قبل غالبية العقد الرئيسية ، يتم تمييز العقدة على أنها فشل ، مما يشير إلى أنها تعتبر غير قابلة للوصول أو أسفلها. تساعد آلية الكشف عن الفشل المستندة إلى الإجماع هذه على منع الإيجابيات الخاطئة في تحديد العقد الفاشلة.
التعامل مع فشل العقدة الرئيسية
عندما يتم وضع علامة على العقدة الرئيسية على أنها فشل ، تبدأ Redis Cluster في عملية تجاوز الفشل لتعزيز إحدى النسخ المتماثلة لتصبح السيد الجديد. يتم تشغيل هذه العملية تلقائيًا من خلال كاشف فشل الكتلة دون تدخل إداري. تتولى النسخة المتماثلة التي تمت ترقيتها مسؤولية خدمة فتحات التجزئة التي تتم إدارتها مسبقًا من قبل السيد الفاشل ، مما يضمن أن المجموعة يمكن أن تستمر في تقديم طلبات دون إعادة تكوين يدوي.
لا يحدث تجاوز الفشل إلا إذا كان هناك نسخة طبق الأصل واحدة على الأقل متاحة ويمكن الوصول إليها للترويج. في حالة عدم وجود نسخة طبق الأصل مناسبة ، تدخل الكتلة إلى حالة خطأ حيث ستتوقف عن قبول الاستعلامات لمنع خدمة البيانات غير المتسقة. هذا يسلط الضوء على أهمية تكوين النسخ المتماثلة لكل سيد للحفاظ على توافر عالي.
الفشل الميكانيكا والسلامة
أثناء تجاوز الفشل ، تنتظر النسخة المتماثلة للمزامنة تمامًا مع السيد الذي يتم استبداله ، مما يضمن معالجة جميع التحديثات المعلقة لتجنب فقدان البيانات. إنه يحقق هذا من خلال مطابقة إزاحة النسخ المتماثل مع Master بحيث يحتوي على مجموعة بيانات محدثة قبل تولي الدور الرئيسي.
بمجرد المزامنة ، تطلب النسخة المتماثلة حقبة تكوين جديدة من غالبية الماجستير. العصر هو طابع طابع منطقي يستخدم لتتبع تغييرات التكوين في الكتلة. بعد الحصول على إجماع ، تبث النسخة المتماثلة التكوين المحدث إلى جميع العقد ، معلنة الترويج لها إلى المتقدمة واتخاذ تخفيض للسيد القديم إلى النسخة المتماثلة أو الإزالة.
يتلقى السيد القديم ، عندما يتعافى ، تحديث التكوين هذا ويتوقف عن تقديم الاستعلامات كسيد. يعيد توجيه طلبات العميل إلى السيد الجديد ، مما يضمن استمرار العملاء بشفافية في التفاعل مع الكتلة دون تدخل يدوي.
معالجة أقسام الشبكة وسيناريوهات الانقسام الدماغ
تستخدم Redis Cluster الإجماع القائم على الأغلبية لتجنب مشكلات الانقسام في الدماغ أثناء أقسام الشبكة. لن يتم فشل السيد إلا إذا لم يتمكن أكثر من نصف الماجستير في المجموعة. سيتوقف الماجستير الذين لا يستطيعون التواصل مع الأغلبية عن قبول الكتابة ، ومنع حالات البيانات المتباينة بين الأقسام.
ومع ذلك ، إذا كان قسم الأقلية يحتوي على عملاء يواصلون الكتابة إلى سيد قبل الفشل ، فهناك إمكانية لفقدان الكتابة. Redis يخفف من هذا الخطر من خلال رفض الكتابة على جانب الأقلية بعد مهلة وعلى جانب الأغلبية من خلال فشل بسرعة على السيد الذي لا يمكن الوصول إليه.
على الرغم من هذه الاحتياطات ، يمكن أن تضيع عمليات الكتابة أثناء نوافذ الفشل لأن Redis يستخدم النسخ المتماثل غير المتزامن بين الماجستير والنسخ المتماثل. نظرًا لأن الردود على كتابة الأوامر وتحديثات النسخ المتماثل يتم إرسالها في وقت واحد تقريبًا ، فإن نافذة الخسارة التي كتبها الكتابة ضيقة للغاية ولكنها ليست مستحيلة.
خيارات التكوين التي تؤثر على معالجة الفشل
تتضمن مجموعة Redis خيارات التكوين التي تؤثر على توفر وسلوك أثناء فشل العقدة:
-`cluster-require-full-coverage` (الافتراضي نعم): تتوقف الكتلة عن قبول الكتابة إذا تم الكشف عن أي جزء من المساحة الرئيسية بسبب فشل العقدة ، مما يضمن تناسق البيانات القوي.
-"قراءات الكتلة"-عندما تراجع "(رقم افتراضي): تحكم ما إذا كانت القراءات مسموح بها عندما تكون الكتلة في حالة فشل. تمكين هذا يسمح للقراءات من العقد حتى أثناء الإخفاقات الجزئية ولكن قد يخاطر بالبيانات التي لا معنى لها.
تتيح هذه الإعدادات للمسؤولين موازنة التوافر والاتساق بناءً على متطلبات التطبيق.
دعم الفشل اليدوي
بالإضافة إلى الفشل التلقائي ، توفر Redis Cluster أمر تجاوز الفشل اليدوي الذي يمكن إصداره على العقد المتماثلة. هذا مفيد لسيناريوهات الصيانة أو الاختبار حيث يرغب المسؤول في تبديل الأدوار الرئيسية دون انتظار حدث فشل فعلي.
يعمل الفشل اليدوي عن طريق منع العملاء على السيد الحالي ، في انتظار أن تكون النسخة المتماثلة اللحاق بالركب بالكامل ، ثم الترويج للنسخة المتماثلة مع انتقال ذري سلس. هذا يضمن عدم فقدان البيانات أثناء تغيير الدور والحد الأدنى من الاضطراب للعملاء.
ملخص
تعامل Redis Cluster مع فشل العقدة بشكل أساسي من خلال الكشف عن الأخطاء ونظام الفشل على أساس المراقبة المستمرة عبر ناقل Redis Cluster وبروتوكول القيل والقال. تكتشف العقد الماجستير التي لا يمكن الوصول إليها وتعزيز النسخ المتماثلة تلقائيًا بعد عملية إجماع تتطلب أغلبية الأساتذة للاتفاق على الفشل. تم تصميم الفشل لتقليل فقدان البيانات عن طريق ضمان مزامنة النسخ المتماثلة بالكامل قبل الترويج. تتم إدارة أقسام الشبكة من خلال القرارات القائمة على الأغلبية لمنع ظروف الانقسام الدماغ ، على الرغم من أن نافذة ضيقة لفقدان الكتابة قد تحدث بسبب التكرار غير المتزامن. تتيح خيارات التكوين ضبط التوافر مقابل الاتساق أثناء الفشل ، وتمنح أوامر الفشل اليدوية التحكم في المشغلين للصيانة.
تتيح هذه الهندسة المعمارية Redis Cluster من توفير توفر عالي وتسامح التقسيم مع الاسترداد التلقائي من فشل العقدة الرئيسية ، مما يضمن أن المجموعة لا تزال تعمل ومتسقة بموجب سيناريوهات الفشل.