كيفية إعداد عقدة Redis في CentOS 8 – الجزء 3

كتلة Redis هي ميزة مدمجة في Redis تدعم التقسيم التلقائي والتكرار والتوفر العالي والتي كانت تُنفذ سابقًا باستخدام الحراس. صُممت لغرضين رئيسيين: الأول هو تقسيم مجموعة البيانات تلقائيًا بين عدة نُسخ والثاني لتوفير درجة من التوفر أثناء الانقسامات، لاستمرار العمليات عند فشل بعض النُسخ (خاصة الرئيسية) أو عدم قدرتها على التواصل مع أغلبية العُقد في الكتلة.

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

وفقًا لوثائق كتلة Redis، فإن “الكتلة الدنيا” التي تعمل كما هو متوقع تتطلب وجود ثلاث نُسخ رئيسية على الأقل. لكن الإعداد الأنسب للتوفر العالي يجب أن يحتوي على ست نُسخ على الأقل مع ثلاث نُسخ رئيسية وثلاث تابعة، كل رئيسية لها تابعة.

مهم: كتلة Redis لها أيضًا بعض القيود وهي عدم دعم البيئات المعالجة بـ NAT وكذلك تلك التي يتم فيها إعادة تعيين عناوين IP أو منافذ TCP على سبيل المثال تحت دوكر. بالإضافة إلى ذلك، لا تدعم كل مكتبة عميل ذلك.

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

ملاحظة: لهذا الدليل، سنستخدم حالات ريديس فارغة/جديدة لتشغيل وضع الكتلة. لن يعمل وضع الكتلة مع بعض التكوينات التي تم إجراؤها في أول دليلين من سلسلة ريديس لدينا، وخاصة أنه لا يعمل عند استخدام نسخة من البارامتر.

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

  1. خوادم مع تثبيت سنتوس 8

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

Redis Master1: 10.42.0.247
Redis Master2: 10.42.0.197
Redis Master3: 10.42.0.132

Redis Slave1: 10.42.0.200
Redis Slave2: 10.42.0.21
Redis Slave3: 10.42.0.34
Redis Cluster Logical Diagram

تتكون إعداداتنا من 3 عقد رئيسية للقراءة/الكتابة و3 عقد نسخ قراءة فقط، كل رئيسية لها نسخة واحدة، بحيث تحتوي الشظايا الثلاث على جميع بيانات الكتلة في كل عقدة. يمكن لعميل API التطبيق أو CLI الكتابة فقط إلى العقد الرئيسية ولكن القراءة من أي عقدة في الكتلة.

الخطوة 1: تثبيت ريديس على جميع العقد

1. قم بتسجيل الدخول إلى جميع النسخ عبر SSH، ثم قم بتشغيل الأمر التالي لتثبيت وحدة Redis باستخدام مدير حزم DNF كما هو موضح.

# dnf module install redis

2. بعد ذلك، ابدأ خدمة Redis، وقم بتفعيلها لتبدأ تلقائيًا عند بدء تشغيل النظام وتحقق من حالتها للتأكد من أنها تعمل (تحقق من الخدمة على جميع النسخ الستة):

# systemctl start redis
# systemctl enable redis
# systemctl status redis

الخطوة 2: تكوين نسخ Redis على جميع العقد

3. تصف هذه القسم كيفية تكوين عقد مجموعة Redis. تذكر أن تقوم بالتكوينات هنا على جميع العقد.

استخدم ملف التكوين /etc/redis.conf لتكوين خادم Redis. كممارسة موصى بها، قم بإنشاء نسخة احتياطية من الملف الأصلي قبل تعديله باستخدام محرر نصوص سطر الأوامر الذي تختاره.

# cp /etc/redis.conf /etc/redis.conf.orig
# vi /etc/redis.conf

4. بعد ذلك، ابحث عن معاملات التكوين التالية وعدل قيمها كما هو موضح. يحدد معامل bind واجهة الاستماع لخادم Redis، قم بتعيين قيمته إلى IP LAN للنسخة. أزل 127.0.0.1 لأننا أدركنا أن تركه يبطئ عملية إنشاء المجموعة، وخاصة مرحلة الانضمام إلى المجموعة.

bind  10.42.0.247

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

protected-mode no

يحدد معامل المنفذ الذي سيستمع إليه خادم Redis للاتصالات، والافتراضي هو 6379. هذا هو منفذ البيانات للتواصل مع العملاء.

port 6379
Set Redis Listen Interface and Port

5. ستمكن المجموعة التالية من المعاملات وضع العنقود وتعيين بعض ميزاته المفيدة. معامل تمكين العنقود، عند تعيينه إلى نعم، ينشط وضع العنقود.

cluster-enabled yes

بعد ذلك، يحدد معامل ملف تكوين العنقود اسم ملف تكوين عنقود العقدة (مثل nodes-6379.conf). يتم إنشاء الملف في دليل العمل (الافتراضي هو /var/lib/redis المحدد باستخدام معامل dir) ولا يمكن تعديله من قبل المستخدم.

cluster-config-file nodes-6379.conf

الخيار المفيد التالي للعنقود هو مهلة عقدة العنقود، ويستخدم لتعيين الحد الأقصى للوقت بالمللي ثانية الذي يمكن أن تكون فيه العقدة غير متاحة قبل اعتبارها في حالة فشل. قيمة 15000 تعادل 15 ثانية.

cluster-node-timeout 15000
Set Cluster Node Timeout

6. نحتاج أيضًا إلى تمكين استمرارية Redis على القرص. يمكننا استخدام أحد أوضاع الاستمرارية، أي ملف التتابع فقط (AOF): يسجل (في الملف appendonly.aof المنشأ تحت دليل العمل) كل عملية كتابة تم استلامها بنجاح من قبل الخادم. سيتم تشغيل البيانات أثناء بدء تشغيل الخادم لإعادة بناء مجموعة البيانات الأصلية.

لتمكينه، قم بتعيين معامل appendonly إلى نعم.

appendonly yes
Set Persistence Options

7. بعد إجراء جميع التغييرات، أعد تشغيل خدمة Redis على جميع العقد لتطبيق التغييرات الأخيرة.

# systemctl restart redis

8. في هذه المرحلة، يجب أن يكون لكل عقدة في العنقود معرّف خاص بها. يمكنك التحقق من ذلك في ملف السجل الموجود في /var/log/redis/redis.log.

# cat /var/log/redis/redis.log
Check Cluster Node Log File

9. بعد ذلك، افتح المنفذ 6397 و 16379 على جميع النسخ. يُستخدم المنفذ الأخير للحافلة العنقودية (قناة اتصال من عقدة إلى عقدة باستخدام بروتوكول ثنائي). هذا متطلب أساسي لاتصالات TCP العنقودية لـ Redis.

# firewall-cmd --zone=public --permanent --add-port=6379/tcp 
# firewall-cmd --zone=public --permanent --add-port=16379/tcp 
# firewall-cmd --reload

الخطوة 3: إنشاء عنقود Redis

10. لإنشاء العنقود، استخدم عميل سطر الأوامر redis-cli كما يلي. يتيح --cluster create إنشاء العنقود و --cluster-replicas 1 يعني إنشاء نسخة واحدة لكل ماستر.

لإعدادنا الذي يحتوي على 6 عقد، سيكون لدينا 3 ماسترز و3 عبيد.

لاحظ أن العقد الستة الأولى ستعتبر ماسترز (M) والثلاثة التالية ستعتبر عبيد (S). العبد الأول أي 10.42.0.200:6379 يقوم بتكرار الأول ماستر أي 10.42.0.247:6379، والعبد الثاني يقوم بتكرار الثاني ماستر، وهكذا.

الأمر التالي مُنسق بطريقة تمثل إعدادنا المنطقي أعلاه.

# redis-cli --cluster create 10.42.0.247:6379 10.42.0.197:6379 10.42.0.132:6379 10.42.0.200:6379 10.42.0.21:6379 10.42.0.34:6379 --cluster-replicas 1
Create Redis Cluster

11. بمجرد نجاح إنشاء العنقود، قم بتشغيل الأمر التالي على أي مضيف (حدد عنوان IP الخاص به باستخدام علامة -h) لإدراج جميع عقد العنقود.

# redis-cli -h 10.42.0.247 -p 6379 cluster nodes

يجب أن تتمكن من رؤية جميع عقد العنقود، مع إشارة العبيد إلى أسيادهم، كما هو موضح في لقطة الشاشة التالية.

Check All Cluster Nodes on Any Node

ترتيب الحقول المختلفة هو كالتالي: معرف العقدة، عنوان IP:المنفذ، العلامات، آخر بينغ تم إرساله، آخر بونغ تم استلامه، عصر التكوين، حالة الرابط، الفتحات (للأسياد).

الخطوة 4: اختبار تعطل عنقود Redis

12. في هذا القسم، سنوضح كيفية اختبار تعطل العنقود. أولاً، دعونا نأخذ ملاحظة على الأسياد.

# redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep master
List Redis Cluster Masters

أيضًا، خذ ملاحظة على عبيد Redis.

# redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep slave
List All Redis Cluster Slaves

13. بعد ذلك، دعونا نوقف خدمة Redis على أحد عقد الأسياد مثلاً 10.42.0.197 ونتحقق من جميع عقد الأسياد في العنقود.

# systemctl stop redis
# redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep master

من لقطة الشاشة التالية، يمكنك أن ترى أن العقدة 10.42.0.197:6367 في حالة فشل وتمت ترقية عبدها 10.42.0.21:6379 إلى حالة الأسياد.

Check Cluster Failover Status

14. الآن دعونا نبدأ خدمة Redis مرة أخرى على العقدة التي فشلت ونتحقق من جميع الأسياد في العنقود.

# systemctl start redis
# redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep master
Check All Redis Cluster Master Status

أيضًا، تحقق من عبيد العنقود للتأكد من أن الأسياد الذي فشل أصبح الآن عبدًا.

# redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep slave
Check All Redis Cluster Slaves

الخطوة 5: اختبار تكرار البيانات عبر عنقود Redis

15. تشرح هذه القسم الأخير كيفية التحقق من تكرار بيانات العنقود. سنقوم بإنشاء مفتاح وقيمة على أحد الأسياد، ثم نحاول قراءتها من جميع عقد العنقود على النحو التالي. استخدم الأمر -c لتفعيل دعم العنقود تحت أداة redis-cli والوصول إلى البيانات في وضع العنقود.

# redis-cli -c -h 10.42.0.247 -p 6379 set name 'TecMint.com'
# redis-cli -c -h 10.42.0.247 -p 6379 get name
# redis-cli -c -h 10.42.0.21 -p 6379 get name
# redis-cli -c -h 10.42.0.132 -p 6379 get name
# redis-cli -c -h 10.42.0.200 -p 6379 get name
# redis-cli -c -h 10.42.0.197 -p 6379 get name
# redis-cli -c -h 10.42.0.34 -p 6379 get name
Verify Redis Cluster Data Replication

الخلاصة هي أن عنقود Redis هو الطريقة المفضلة للحصول على التجزئة التلقائية والتكرار والتوفر العالي. هناك العديد من معاملات التكوين الموثقة جيدًا في بقية ملف /etc/redis.conf، يمكنك العثور على مزيد من المعلومات في الوثائق الرسمية: دليل عنقود Redis ومواصفات عنقود Redis.

وهذا يقودنا إلى نهاية سلسلة الدروس الثلاثة عن Redis. يمكن استخدام نموذج التعليقات أدناه لطرح الأسئلة أو التعليقات.

Source:
https://www.tecmint.com/setup-redis-cluster-in-centos-8/