كيفية إعداد Redis للتوفرية العالية مع Sentinel في CentOS 8 – الجزء 2

ريديس يوفر توفرية عالية من خلال نظام ريديس سنتينل الموزع. سنتينل يساعد على مراقبة حالات ريديس، وكشف الأعطال وسيقوم بتبديل الأدوار تلقائيًا مما يمكّن توزيع ريديس من مقاومة أي نوع من الأعطال.

يتميز بمراقبة حالات ريديس (الرئيسية والنسخ)، ويدعم إشعار الخدمات/العمليات الأخرى أو مدير النظام عبر سكربت، والتحويل التلقائي للفشل لترقية نسخة إلى رئيسي عندما يتعطل الرئيسي ويوفر تكوينًا للعملاء لاكتشاف الرئيسي الحالي الذي يقدم خدمة معينة.

يوضح هذا المقال كيفية إعداد ريديس للتوفرية العالية مع ريديس سنتينل في سنتوس 8، بما في ذلك تكوين السنتينلز، والتحقق من حالة الإعداد واختبار تحويل سنتينل الفشل.

المتطلبات الأساسية:

  1. كيفية إعداد تكرار ريديس (مع تعطيل وضع الكتلة) في سنتوس 8 – الجزء 1

إعداد بيئة الاختبار

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 Setup Logical Diagram

وفقًا لوثائق 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
Start Redis Sentinel Service

الخطوة 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
Set Sentinel Listen Interface and Port

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
Set Redis Master to Monitor

مهم: يجب وضع بيان مراقب Sentinel قبل بيان auth-pass لتجنب الخطأ “No such master with the specified name.” عند إعادة تشغيل خدمة Sentinel.

5. إذا كان لديك كلمة مرور مضبوطة لمراقبة الرئيسية Redis (في حالتنا لديها) ، قم بتوفير كلمة المرور بحيث يمكن لـ Sentinel المصادقة مع الحالة المحمية.

 
sentinel auth-pass mymaster Securep@55Here
Set Master Auth Password

6. ثم قم بتعيين عدد من الأجزاء النصفية الملي ثانية التي يجب أن تكون الرئيسية (أو أي نسخة احتياطية مرفقة أو Sentinel) غير قابلة للوصول إليها للنظر فيها في حالة “الفشل الموضوعي”.

تعني الإعدادات التالية أنه سيتم اعتبار الرئيسية كمفشلة فورما لم نتلق أي رد من البندقية الخاصة بنا في غضون 5 ثوانٍ (1 ثانية تعادل 1000 مللي ثانية).

sentinel down-after-milliseconds mymaster 5000
Set Down Time for Master

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

sentinel failover-timeout mymaster 180000
Set Fail Over Timeout

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

sentinel parallel-syncs mymaster 1
Set Number of Parallel Sync Replicas

تلاحظ أن ملفات التكوينات على 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 كما يظهر في الصورة التالية.

Auto Generated Config in Master

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

Auto Generated Config in Replica1
Auto Generated Config in Replica2

تلاحظ أن تعديلات

الخطوة 3: تحقق من حالة إعداد Redis Sentinel

12. الآن قم بالتحقق من حالة/معلومات Sentinel على الخادم الرئيسي، باستخدام أمر info sentinel على النحو التالي.

# redis-cli -p 26379 info sentinel

من الناتج الذي تم الحصول عليه من الأمر كما هو موضح في اللقطة الخاصة بالشاشة التالية، لدينا نسختان/عبيد وثلاثة رقاقات.

Check Sentinel Info on Master

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

# redis-cli -p 26379 sentinel master mymaster
Show Detailed Info About Sentinel Master

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
Get the Address of Master by Name on Slaves

الخطوة 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 كما هو موضح في اللقطة الخاصة بالشاشة.

Test Redis Sentinel Failover

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

في الجزء القادم والأخير من هذه السلسلة، سنلقي نظرة على كيفية إعداد مجموعة ريديس في CentOS 8. سيكون مقال مستقل عن الجزئين الأوليين.

Source:
https://www.tecmint.com/setup-redis-high-availability-with-sentinel-in-centos-8/