ريديس الحارس

Rydys Alhars



افترض سيناريو يكون لديك فيه مثيل Redis واحد فقط في إنتاجك ويفشل في مرحلة ما لسبب ما. يخزن تطبيقك البيانات مؤقتًا في مخزن بيانات Redis والآن أصبح مصدر بياناتك الوحيد ميتًا. تتمثل إحدى طرق التحكم في هذه الأنواع من السيناريوهات في الحفاظ على بنية السيد والعبد حيث يمكن للعبيد نسخ العقدة الرئيسية حتى تعود. تدعم مجموعات Redis الإتاحة العالية إلى حد ما باستخدام نهج النسخة المتماثلة الرئيسية. Redis Sentinel هو نهج آخر يوفر طريقة أكثر موثوقية للحفاظ على التوفر العالي لمثيلات Redis. إنه يراقب عقدة Redis الرئيسية بحثًا عن حالات الفشل ويطلق عملية تجاوز الفشل على الفور والتي ستعمل على ترقية عقدة تابعة موجودة إلى علامة تجارية رئيسية جديدة.







علاوة على ذلك ، يعمل Redis sentinel كوسيط حيث يتصل العملاء ويطلبون أحدث عنوان IP للعقدة الرئيسية. لذلك ، يوفر الحارس المتصل عنوان العقدة الرئيسية على الفور.



بالإضافة إلى ذلك ، يتم تأكيد فشل العقدة الرئيسية إذا اتفق العديد من الحراس على أن العنصر الرئيسي المعين لا يمكن الوصول إليه أو عدم توفره. هذا ينهي مرحلة اكتشاف الفشل وتبدأ عملية تجاوز الفشل على الفور. وبالتالي ، يمكن اعتبار حارس Redis كنظام موزع بخصائص محددة.



يعتمد اتفاق الحراس على قيمة النصاب الذي سيتم مناقشته في القسم التالي.





لمن القيمة

قيمة النصاب هي الحد الأقصى لعدد الحراس الذين يجب الاتفاق عليهم عندما تكون العقدة الرئيسية معطلة. تُستخدم هذه القيمة فقط لتحديد فشل العقدة الرئيسية. تبدأ عملية تجاوز الفشل بترخيص العديد من العقد الحارس المتاحة للمتابعة مع الحارس المحدد باعتباره القائد.

ميزات Redis Sentinel

يُعرف الحارس بتوفير آلية توفر عالية لمخزن بيانات Redis. بصرف النظر عن ذلك ، يمكن سرد العديد من القدرات الأخرى.



  • يراقب Sentinel باستمرار حالة العقد الرئيسية والعقد التابعة في نظام Redis الخاص بك.
  • عندما يكون هناك فشل أو خطأ ما في مثيلات Redis الخاصة بك ، يكون الحارس قادرًا على إخطار المسؤول أو التطبيقات المتصلة باستخدام Sentinel API.
  • يتم توجيه مرحلة تجاوز الفشل بواسطة الحارس من خلال ترقية نسخة متماثلة باعتبارها النسخة الرئيسية الجديدة. تم تكوين النسخ المتماثلة المتبقية لاستخدام الرئيسي الجديد. أخيرًا ، سيتم إخطار العملاء المقابلين بعنوان العقدة الرئيسية الجديدة.
  • أيضًا ، Redis sentinel هو موفر تكوين للعملاء المتصلين حيث يمكن للعملاء طلب عنوان المثيل الرئيسي المتاح حاليًا وإذا حدث انهيار مفاجئ ، فإن الحارس ملتزم بدفع عنوان العقدة الرئيسية الجديدة على الفور.

في القسم التالي ، سنقوم بتكوين حراس Redis مع مثيلات النسخة المتماثلة الرئيسية واستخدام واجهة برمجة تطبيقات الحارس لمراقبة العقد.

تكوين الحارس

أولاً ، قمنا بإنشاء مثيلين Redis في المنفذين 7000 و 7001. سيكون المنفذ 7000 هو العقدة الرئيسية والآخر يكرر العقدة الرئيسية. يستخدم كلا المثالين ملفات التكوين التالية على التوالي:

تكوين العقدة الرئيسية

ميناء 7000
تمكين الكتلة لا
الكتلة nodes.conf ملف التكوين
مهلة العقدة العنقودية 5000
الزائدة فقط نعم

تكوين العقدة التابعة

ميناء 7001
تمكين الكتلة لا
الكتلة nodes.conf ملف التكوين
مهلة العقدة العنقودية 5000
الزائدة فقط نعم

ستبدأ كلتا الحالتين من خلال توفير ملف التكوين المرتبط بكل منهما. يمكننا استخدام الأمر التالي لبدء حالات Redis بشكل منفصل:

redis-server redis.conf

دعنا نتصل بمثيل Redis الذي بدأ في المنفذ 7001 على النحو التالي:

ريديس- CLI -p 7001

الآن ، يمكننا جعل هذا المثيل نسخة طبق الأصل من النسخة الرئيسية التي تعمل في المنفذ 7000. يمكن استخدام الأمر REPLICAOF على النحو التالي:

نسخة طبق الأصل من 127.0.0.1 7000

كما هو متوقع ، أصبح المثيل الذي يتم تشغيله في المنفذ 7001 هو العقدة المتماثلة للسيد الذي يعمل في المنفذ 7000.

الآن ، نحن جاهزون لتكوين ثلاثة حراس Redis لمراقبة مثيل الماستر أعلاه. نحتاج إلى ثلاثة ملفات تكوين لإنشاء ثلاث حالات خافرة في المنافذ 5000 و 5001 و 5002 كما هو موضح في ما يلي.

كل الحارس يبدو الملف كما يلي باستثناء أنه سيتم تغيير رقم المنفذ:

ميناء 5000
المراقبة الخافرة 127.0.0.1 7000 اثنين
الحارس أسفل بعد ميلي ثانية masternode 5000
الحارس فشل تجاوز المهلة الرئيسية 60000

الآن ، حان الوقت لتشغيل الحراس الثلاثة. يمكنك استخدام الملف التنفيذي redis-sentinel مع المسار إلى الحارس ملف التكوين لإنشاء مثيل حارس. خلاف ذلك ، لا يزال بإمكاننا استدعاء خادم redis القابل للتنفيذ عن طريق تحديد المسار إلى الحارس والعلم -الحارس .

لنبدأ كل حارس باستخدام الأمر التالي:

redis-server sentinel.conf --الحارس

تم بدء تشغيل الحارس الأول في المنفذ 5000. وبالمثل ، يمكنك بدء المثيلتين الأخريين أيضًا.

الآن ، تم إعداد Redis Sentinel وتشغيله كما هو موضح في الرسم التوضيحي التالي:

في القسم التالي ، سنستكشف المزيد حول Sentinel API وكيف يمكننا استخدامها لاسترداد المعلومات المتعلقة بعقدة Redis الرئيسية.

API الحارس

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

  • تحقق من حالة مثيلات Redis الرئيسية والمثيلات التابعة المراقبة
  • تفاصيل حول الحراس الآخرين
  • تلقي إخطارات بأسلوب الدفع من الحراس في حالة تجاوز الفشل

يمكن استخدام الأمر SENTINEL مع الأوامر الفرعية المرتبطة به للاستعلام عن أو تحديث أو تعيين حراس Redis والعقد المراقبة.

تحقق من حالة العقدة الرئيسية

من المهم جدًا مراقبة صحة العقدة الرئيسية أو التحقق منها من وقت لآخر. يمكن استخدام الأمر Sentinel API التالي لاسترداد التفاصيل الرئيسية:

سينتينيل ماستر < monitor_master_name >

monitored_master_name: اسم العقدة الرئيسية المحددة في ملف تكوين الحارس الذي أنشأناه في الخطوة السابقة.

دعنا نستخدم هذا الأمر للاستعلام عن الحالة الرئيسية في الإعداد الخاص بنا. في حالتنا ، اسم العقدة الرئيسية هو 'ماسترنود'.

سينتينيل ماستر ماسترنود

تم استرداد العديد من المعلومات وبعضها مهم مثل عدد العبيد والأعلام وعدد الحراس الآخرين.

ال الأعلام تم تعيين الخاصية على رئيسي - سيد مما يعني أن السيد بصحة جيدة. عندما تكون العقدة الرئيسية معطلة ، فإن ملف s_down أو اوووهو سيتم عرض العلم. الملكية عدد الحراس الآخرين تم ضبطه على 2 مما يعني أن حارس Redis قد تعرف بالفعل على الحارسين الآخرين للعقدة الرئيسية. بالإضافة إلى ذلك ، فإن عدد العبيد تعرض الخاصية النسخ المتماثلة المتاحة للعقدة الرئيسية. في هذه الحالة ، يتم تعيينه على 1 نظرًا لأن لدينا نسخة متماثلة واحدة فقط.

الحصول على معلومات حول النسخ المتماثلة المتصلة

يمكننا التحقق من النسخ المتماثلة المتصلة بالعقدة الرئيسية باستخدام الأمر الفرعي SENTINEL التالي:

نسخ سينتينيل < monitor_master_name >

في هذا المثال ، الاسم الرئيسي هو 'ماسترنود'.

النسخ المتماثلة SENTINEL ماسترنود

كما هو متوقع ، اكتشف Sentinel العقدة التابعة التي تعمل في المنفذ 7001.

احصل على معلومات حول Associated Sentinels

وبالمثل ، يمكننا الاستعلام عن التفاصيل المتعلقة بالحراس الآخرين المرتبطين بالعقدة الرئيسية الحالية باستخدام أمر SENTINEL الفرعي التالي:

سينتينيل < master_node_name >

في هذه الحالة ، سنقوم بإحضار المعلومات المتعلقة بالعقدة الرئيسية المسماة 'العقدة الرئيسية'.

SENTINEL الحارس الرئيسي

الحصول على عنوان العقدة الرئيسية

كما ذكرنا في القسم السابق ، فإن Redis sentinel هو مزود تكوين للعملاء المتصلين. لذلك ، فهو قادر على توفير عنوان IP الخاص بالعقدة الرئيسية قيد التشغيل حاليًا والمنفذ للعملاء المطلوبين. يمكن استخدام الأمر الفرعي Sentinel API التالي لاسترداد المعلومات المذكورة.

SENTINEL GET-MASTER-ADDR-BY-NAME < master_node_name >

دعنا ننفذ الأمر أعلاه لسيناريونا على النحو التالي:

الحارس get-master-addr-by-name masternode

ناقشنا فقط عددًا قليلاً من أوامر الحارس API. تتوفر العديد من الأوامر الفرعية الأخرى مثل الحارس-فشل ، وذاكرة التخزين المؤقت لمعلومات الحارس ، والماجستير الحارس ، وما إلى ذلك. علاوة على ذلك ، تتوفر العديد من الأوامر لاستخدامها لأغراض الإدارة أيضًا. في القسم التالي ، سنركز على عملية تجاوز فشل الحارس Redis.

عملية تجاوز الفشل الحارس

منذ أن تم تكوين الحارس الخاص بنا ، يمكننا اختبار مرحلة تجاوز الفشل. دعنا نرسل العقدة الرئيسية إلى وضع السكون لمدة 300 ثانية والتي تحاكي فشل العقدة الرئيسية.

التصحيح ينام 300

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

دعونا نتحقق من عنوان IP للعقدة الرئيسية والمنفذ مرة أخرى.

الحارس get-master-addr-by-name masternode

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

استنتاج

Redis sentinel هو النهج الأكثر موثوقية لضمان التوفر العالي لنسخة متماثلة معينة من Redis Master. الحارس قادر على المراقبة والإخطار والبدء في تجاوز الفشل التلقائي دون تدخل بشري. أيضًا ، يتفق العديد من الحراس معًا على حقيقة أن العقدة الرئيسية لا يمكن الوصول إليها ويتم استخدام قيمة النصاب كأقصى عدد من الحراس الذين يجب الاتفاق عليهم عند التحقق من توفر المثيل الرئيسي. يوفر Redis sentinel واجهة برمجة تطبيقات سهلة الاستخدام لاسترداد معلومات حول صحة العقدة الرئيسية والنسخ المتماثلة المرتبطة بها وتنفيذ المهام الإدارية أيضًا.