إليك كيفية تعامل Redis Cluster مع حالات فشل العقدة:
تجاوز الفشل التلقائي
عندما تفشل عقدة Redis Cluster الرئيسية، ستقوم المجموعة تلقائيًا بترقية إحدى العقد المتماثلة لتلك العقدة الرئيسية لتصبح العقدة الرئيسية الجديدة. تحدث عملية تجاوز الفشل هذه تلقائيًا دون أي تدخل يدوي.
الخطوات الأساسية في عملية تجاوز الفشل هي:
1. تكتشف العقد الأخرى في المجموعة أن العقدة الرئيسية قد فشلت، إما من خلال بروتوكول ثرثرة المجموعة أو عن طريق محاولة الاتصال بالعقدة.
2. تقوم المجموعة بعد ذلك بإجراء انتخابات بين العقد المتماثلة لهذا السيد. يتم اختيار النسخة المتماثلة التي تحتوي على أحدث البيانات لتكون النسخة الرئيسية الجديدة.
3. تتم ترقية العقدة المتماثلة المنتخبة لتصبح العقدة الرئيسية الجديدة. يتم بعد ذلك إعادة تكوين النسخ المتماثلة الأخرى للنسخ المتماثل من النسخة الرئيسية الجديدة.
4. تتم إعادة توجيه العملاء إلى العقدة الرئيسية الجديدة باستخدام استجابة الخطأ "MOVED"، والتي تحتوي على تعيين الفتحة إلى العقدة الجديد.
تغطية الفتحة
لكي تظل متاحة أثناء فشل العقدة، تتطلب مجموعة Redis أن تكون غالبية العقد الرئيسية متاحة وقادرة على التواصل. يُعرف هذا بالحفاظ على "تغطية الفتحة".
كل عقدة رئيسية في المجموعة مسؤولة عن مجموعة فرعية من فتحات التجزئة البالغ عددها 16,384. وطالما أن أغلبية الشرائح الرئيسية متوفرة ويمكنها خدمة الفتحات المخصصة لها، فيمكن أن تستمر المجموعة في العمل.
إذا فشل عدد كبير جدًا من العقد الرئيسية بحيث لا تتمكن العقد الرئيسية المتبقية من تغطية نطاق فتحة التجزئة بالكامل، فستصبح المجموعة غير متاحة حتى يتم استرداد العقد الفاشلة أو استبدالها.
الترويج المتماثل
تعتمد مجموعة Redis على العقد المتماثلة لتوفير إمكانية توفر عالية. عند فشل عقدة رئيسية، تتم ترقية إحدى العقد المتماثلة الخاصة بها تلقائيًا لتصبح العقدة الرئيسية الجديدة.
يتم اختيار النسخة المتماثلة التي تحتوي على أحدث البيانات لتكون النسخة الرئيسية الجديدة. وهذا يضمن الحفاظ على تناسق البيانات أثناء عملية تجاوز الفشل.
التعامل مع انقسام الدماغ
يستخدم Redis Cluster أسلوبًا قائمًا على النصاب للتعامل مع أقسام الشبكة وتجنب سيناريوهات "الدماغ المنقسم" حيث يتم تقسيم المجموعة إلى مجموعات مستقلة متعددة.
إذا أصبحت أغلبية الوحدات الرئيسية غير متوفرة، فسترفض العقد المتبقية طلبات العميل حتى يتم حل القسم. وهذا يضمن الحفاظ على اتساق البيانات.
ومن خلال الاستفادة من آليات تجاوز الفشل التلقائي والآليات المستندة إلى النصاب القانوني، فإن Redis Cluster قادر على توفير درجة عالية من التوفر والمرونة في مواجهة فشل العقد وأقسام الشبكة.
الاستشهادات:[1] https://yifan-online.com/en/km/article/detail/16750
[2] https://stackoverflow.com/questions/63878562/two-failure-support-in-3-node-redis-cluster
[3] https://redis.io/docs/latest/operate/oss_and_stack/management/scaling/
[4] https://redis.io/docs/latest/commands/cluster-nodes/
[5] https://github.com/lettuce-io/lettuce-core/issues/2318