ريديس يوفر توفرية عالية من خلال نظام ريديس سنتينل الموزع. سنتينل يساعد على مراقبة حالات ريديس، وكشف الأعطال وسيقوم بتبديل الأدوار تلقائيًا مما يمكّن توزيع ريديس من مقاومة أي نوع من الأعطال.
يتميز بمراقبة حالات ريديس (الرئيسية والنسخ)، ويدعم إشعار الخدمات/العمليات الأخرى أو مدير النظام عبر سكربت، والتحويل التلقائي للفشل لترقية نسخة إلى رئيسي عندما يتعطل الرئيسي ويوفر تكوينًا للعملاء لاكتشاف الرئيسي الحالي الذي يقدم خدمة معينة.
يوضح هذا المقال كيفية إعداد ريديس للتوفرية العالية مع ريديس سنتينل في سنتوس 8، بما في ذلك تكوين السنتينلز، والتحقق من حالة الإعداد واختبار تحويل سنتينل الفشل.
المتطلبات الأساسية:
إعداد بيئة الاختبار
Master Server and Sentinel1: 10.42.0.247 Redis Replica1 and Sentinel2: 10.42.0.21 Redis Replica2 and Sentinel3: 10.42.0.34

وفقًا لوثائق Redis Sentinel، يحتاج المرء إلى ثلاثة مثيلات Sentinel على الأقل لنشر قوي. بالنظر إلى إعدادنا أعلاه، إذا فشل الماستر، فإن Sentinel2 وSentinel3 سيتفقان على الفشل وسيكونان قادرين على تفويض عملية الفشل، مما يجعل عمليات العميل قادرة على الاستمرار.
الخطوة 1: بدء وتمكين خدمة Redis Sentinel
1. على CentOS 8، يتم تثبيت خدمة Redis Sentinel جنبًا إلى جنب مع خادم Redis (الذي قمنا به بالفعل في إعداد التكرار Redis Replication Setup).
لبدء خدمة Redis سنتينل وتمكينها للبدء تلقائيًا عند بدء تشغيل النظام، استخدم الأوامر systemctl التالية. أيضًا، تأكد من أنها تعمل بشكل صحيح من خلال التحقق من الحالة (قم بذلك على جميع العقد):
# systemctl start redis-sentinel # systemctl enable redis-sentinel # systemctl status redis-sentinel

الخطوة 2: تكوين Redis Sentinel على جميع عقد Redis
2. في هذا القسم، نشرح كيفية تكوين Sentinel على جميع عقدنا. خدمة Sentinel لها تنسيق تكوين مشابه لخادم Redis. لتكوينه، استخدم ملف التكوين الموثق ذاتيًا /etc/redis-sentinel.conf.
أولاً، قم بإنشاء نسخة احتياطية من الملف الأصلي وافتحه للتحرير.
# cp /etc/redis-sentinel.conf /etc/redis-sentinel.conf.orig # vi /etc/redis-sentinel.conf
3. بشكل افتراضي ، يستمع Sentinel على المنفذ 26379 ، قم بالتحقق من ذلك على جميع الحالات. يجب ترك المعلمة bind معلقة (أو ضبطها على 0.0.0.0).
port 26379

4. بعد ذلك ، قم بإخبار Sentinel بمراقبة الرئيسية لدينا ، واعتبارها في حالة “الفشل الموضوعي” فقط إذا وافق على الأقل 2 “quorum sentinels”. يمكنك استبدال “mymaster” باسم مخصص.
#On Master Server and Sentinel1 sentinel monitor mymaster 127.0.0.1 6379 2 #On Replica1 and Sentinel2 sentinel monitor mymaster 10.42.0.247 6379 2 #On Replica1 and Sentinel3 sentinel monitor mymaster 10.42.0.247 6379 2

مهم: يجب وضع بيان مراقب Sentinel قبل بيان auth-pass لتجنب الخطأ “No such master with the specified name.” عند إعادة تشغيل خدمة Sentinel.
5. إذا كان لديك كلمة مرور مضبوطة لمراقبة الرئيسية Redis (في حالتنا لديها) ، قم بتوفير كلمة المرور بحيث يمكن لـ Sentinel المصادقة مع الحالة المحمية.
sentinel auth-pass mymaster Securep@55Here

6. ثم قم بتعيين عدد من الأجزاء النصفية الملي ثانية التي يجب أن تكون الرئيسية (أو أي نسخة احتياطية مرفقة أو Sentinel) غير قابلة للوصول إليها للنظر فيها في حالة “الفشل الموضوعي”.
تعني الإعدادات التالية أنه سيتم اعتبار الرئيسية كمفشلة فورما لم نتلق أي رد من البندقية الخاصة بنا في غضون 5 ثوانٍ (1 ثانية تعادل 1000 مللي ثانية).
sentinel down-after-milliseconds mymaster 5000

7. بعد ذلك ، قم بتعيين مهلة فشل التبديل في مللي ثانية والتي تحدد العديد من الأمور (اقرأ وثائق المعلمة في ملف التكوين).
sentinel failover-timeout mymaster 180000

8. ومن ثم قم بتعيين عدد النسخ التي يمكن تعيينها مجددا لاستخدام المسؤول الجديد بعد الفشل في الوقت نفسه. لأن لدينا عدد صفر من النسخ، سنقم بتعيين نسخة واحدة والأخرى ستتم تعيينها كمسؤول الجديد.
sentinel parallel-syncs mymaster 1

تلاحظ أن ملفات التكوينات على Redis Replica1 و Sentinel2 و Reddis Replica1 و Sentinel2 يجب أن تكون متشابهة.
9. ما يلي ذلك، اعداد خدمات Sentinel على جميع النقاط لتطبيق التغييرات الأخيرة.
# systemctl restart redis-sentinel
10. ما يلي ذلك، فتح منابع ال26379 في الناقل المواجه على جميع النقاط لتمكين مجموعات Sentinel من بدء المحادثات والاقتصاد بالاتصالات من وسائل الناقل المواجه.
# firewall-cmd --zone=public --permanent --add-port=26379/tcp # firewall-cmd --reload
11. ستيجعلت جميع النسخ تتم اكتشافها تلقائيًا. وبشكل مهم، سيقوم Sentinel بتحديث التكوينات تلقائيًا بمعلومات إضافية حول النسخ. يمكنك تأكيد هذا بفتح ملفات التكوينات Sentinel لكل مثال وسطها.
على سبيل المثال، عندما تنظر إلى نهاية ملف المسؤول الرئيسي، يجب أن ترى الأعلانات known-sentinels و known-replica كما يظهر في الصورة التالية.

ويجب أن يكون نفس الحال في replica1 و replica2.


تلاحظ أن تعديلات
الخطوة 3: تحقق من حالة إعداد Redis Sentinel
12. الآن قم بالتحقق من حالة/معلومات Sentinel على الخادم الرئيسي، باستخدام أمر info sentinel على النحو التالي.
# redis-cli -p 26379 info sentinel
من الناتج الذي تم الحصول عليه من الأمر كما هو موضح في اللقطة الخاصة بالشاشة التالية، لدينا نسختان/عبيد وثلاثة رقاقات.

13. لعرض معلومات مفصلة حول الرئيسي (المسمى mymaster)، استخدم أمر sentinel master.
# redis-cli -p 26379 sentinel master mymaster

14. لعرض معلومات مفصلة حول العبيد و الرقاقات، استخدم أمر sentinel slaves وأمر sentinel sentinels على التوالي.
# redis-cli -p 26379 sentinel slaves mymaster # redis-cli -p 26379 sentinel sentinels mymaster
15. بعد ذلك، اطلب عنوان الرئيسي بالاسم من حالات العبيد باستخدام أمر sentinel get-master-addr-by-name على النحو التالي.
يجب أن يكون الناتج عنوان IP ومنفذ الرئيسي الحالي:
# redis-cli -p 26379 sentinel get-master-addr-by-name mymaster

الخطوة 4: اختبار فشل Sentinel
16. أخيرًا، دعنا نختبر الفشل التلقائي في إعدادنا لـ Sentinel. على الخادم Redis/Sentinel الرئيسي، قم بجعل الخادم Redis الرئيسي (الذي يعمل على المنفذ 6379) يدخل في وضع السكون لمدة 60 ثانية. ثم اسأل عن عنوان الرئيسي الحالي على العبيد كما يلي.
# redis-cli -p 6379 127.0.0.1:6379> AUTH Securep@55Here 127.0.0.1:6379> debug sleep 60 # redis-cli -p 26379 sentinel get-master-addr-by-name mymaster # redis-cli -p 26379 sentinel get-master-addr-by-name mymaster
من الناتج للاستعلام، الرئيسي الجديد الآن هو عبد/عبد2 بعنوان IP 10.42.0.34 كما هو موضح في اللقطة الخاصة بالشاشة.

يمكنك الحصول على مزيد من المعلومات من توثيق ريديس سينتينيل. ولكن إذا كان لديك أي أفكار لمشاركتها أو استفسارات، فإن النموذج أدناه هو بوابتك إلينا.
في الجزء القادم والأخير من هذه السلسلة، سنلقي نظرة على كيفية إعداد مجموعة ريديس في CentOS 8. سيكون مقال مستقل عن الجزئين الأوليين.
Source:
https://www.tecmint.com/setup-redis-high-availability-with-sentinel-in-centos-8/