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

ريديس (خادم القاموس البعيد) هو خادم قيمة مفتاح ذا ذاكرة مخبأة بسرعة وموزع وفعال في استخدام الذاكرة ومفتوح المصدر واسع الانتشار.

يقدم مجموعة غنية من الميزات التي تجعله فعالًا لمجموعة واسعة من حالات الاستخدام: كقاعدة بيانات، طبقة تخزين مؤقت، وسيط رسائل، أو طابور، قابل للاستخدام في تطبيقات الويب، وتطبيقات المراسلة والدردشة، والألعاب، وتحليلات البيانات الفورية، والمزيد بكثير.

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

بوصفها قاعدة بيانات غير SQL أو غير علاقوية، تقدم ريديس بعض فوائد الأداء على أنظمة قواعد البيانات التقليدية (مثل MySQL/MariaDB، PostgreSQL، الخ)، لأن جميع بياناتها تقع أو يتم تخزينها في الذاكرة مما يجعلها متاحة بسهولة للتطبيق، في حين أن قواعد البيانات التقليدية يجب أن تكتب كل البيانات إلى القرص أو تقرأ منه أو من مصدر خارجي.

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

في سلسلة دروس ريديس المكونة من ثلاثة أجزاء، سنغطي كيفية إعداد واستخدام بعض الميزات الرئيسية في ريديس والتي هي التكرار والتوافر العالي باستخدام ريديس سنتينيل و تجمع ريديس. المقالات هي:

Part 1: How To Setup Redis Replication(with Cluster-Mode Disabled) in CentOS 8

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

مهم: تحتوي مجموعة العقدة الواحدة (على سبيل المثال، ماستر واحد ونسخة أو نسختان) لريديس كلستر (أي مجموعة تكرار) مع تعطيل وضع التجميع على مجموعة عقدة واحدة، بينما قد يتكون ريديس كلستر مع تمكين وضع التجميع من مجموعتي عقدة أو أكثر (على سبيل المثال، ثلاثة ماسترز لكل واحد منها عبيد أو اثنين).

المتطلبات:

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

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

Redis Master Server: 10.42.0.247
Redis Replica1/Slave1: 10.42.0.21
Redis Replica2/Slave2: 10.42.0.34
Logical Representation of Redis Replication Diagram

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

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

الخطوة 1: تثبيت Redis على CentOS 8

1. للبدء، قم بتسجيل الدخول إلى جميع الوحدات CentOS 8 عبر SSH، ثم قم بتثبيت حزمة Redis على جميع الوحدات (الرئيس والنسخ الاحتياطي) باستخدام مدير الحزم DNF كما هو موضح.

# dnf install @redis

2. عند الانتهاء من تثبيت حزمة Redis، قم ببدء خدمة Redis، قم بتمكينها للبدء تلقائيًا عند كل تشغيل للنظام وتحقق مما إذا كانت تعمل كما يلي.

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

3. يمكنك أيضًا التحقق من أن خادم Redis يعمل عن طريق التحقق من منافذ الاستماع باستخدام أمر ss كما يلي.

# ss -ltpn | grep redis-server
Confirm Redis Server Ports

الخطوة 2: تكوين خادم Redis الرئيسية

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

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

5. بشكل افتراضي، يتم تكوين نسخة ريديس للاستماع وقبول الاتصالات على واجهة الدوران الداخلي، باستخدام التوجيه bind. للتواصل مع النسخ، يجب تكوين الماستر للاستماع على عنوان الدوران الداخلي لـ IPv4 وعنوان IP الخاص به على الشبكة المحلية أي 10.42.0.247.

bind 127.0.0.1 10.42.0.247

6. بعد ذلك، قم بتعيين المعلمة protected-mode إلى no للسماح بالتواصل مع النسخ كما هو موضح.

protected-mode no

أيضًا، يستمع ريديس على منفذ 6379 الذي يتم تعيينه باستخدام التوجيه port. هذا هو منفذ البيانات للتواصل مع واجهات برمجة التطبيقات أو عملاء واجهة سطر الأوامر.

port 6379
Configuring Redis Master Server

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

سنستخدم الخيار التالي لأغراض العرض.

requirepass  Securep@55Here
Set Authentication Password

8. كما يتم تخزين سجلات Redis في ملف /var/log/redis/redis.log، ويتم تعيين ذلك باستخدام التوجيه logfile ومستوى تفاعل الخادم الافتراضي هو notice، المحدد باستخدام المعلمة loglevel.

loglevel  notice
logfile  /var/log/redis/redis.log
Set Redis Log File and Log Level

9. نظرًا لأن systemd هو النظام الافتراضي ومدير الخدمة في CentOS 8، يمكنك تكوين Redis للتفاعل مع شجرة الإشراف systemd عن طريق ضبط المعلمة supervised على systemd.

supervised systemd
Set Redis Supervisor to Systemd

10. بعد إجراء جميع التكوينات اللازمة، احفظ الملف وأغلقه. ثم أعد تشغيل خدمة Redis لتطبيق التغييرات الجديدة.

# systemctl daemon-reload
# systemctl restart redis

11. للوصول إلى خادم Redis، نحتاج إلى استخدام redis-cli (واجهة سطر الأوامر إلى خادم redis). بشكل افتراضي، يتصل بالخادم على localhost (على 127.0.0.1 البورت 6379). لاحظ أنه نظرًا لأن الخادم مؤمن من العملاء باستخدام كلمة مرور، يجب أن يفشل تشغيل أمر قبل المصادقة.

استخدم أمر auth لتقديم كلمة المرور للمصادقة كما هو موضح في اللقطة الشاشة التالية.

# redis-cli
127.0.0.1:6379> client list
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> client list
Access Redis Server via Redis CLI

12. للاتصال بـ نسخة (بعد تكوينها كما هو موضح في القسم التالي)، استخدم الخيارات -h و -p لتحديد عنوان IP/اسم النطاق الخاص بالنسخة والمنفذ على التوالي (لاحظ أن البورت 6379 يجب أن يكون مفتوحًا في جدار النار الخاص بالنسخة).

# redis-cli -h 10.42.0.21 -p 6379

13. بعد ذلك، قم بفتح منفذ بيانات خادم Redis في جدار الحماية للسماح بالاتصالات الواردة إلى الرئيس، ومن ثم أعد تحميل قواعد جدار الحماية باستخدام أمر firewall-cmd كما هو موضح.

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

الخطوة 3: تكوين خوادم Redis النسخة/الرقيقة

14. لضبط سريع لمثيل Redis كنسخة على الطاير، استخدم أداة redis-cli واستدعاء أمر REPLICAOF كما هو موضح.

# redis-cli replicaof 10.42.0.247 6379
OR
# redis-cli
127.0.0.1:6379> REPLICAOF 10.42.0.247 6379
Connect to a Master Redis Instance

15. لجعل اتصال التكرار دائمًا، يجب عليك إجراء التغييرات التالية في ملف التكوين. ابدأ بنسخ الملف الأصلي، ثم افتحه للتحرير.

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

16. للسماح للعملاء بالاتصال بالنسخة الرقيقة لقراءة البيانات، أضف عنوان IP الخاص بالنسخة الرقيقة إلى التوجيه bind.

# replica1
bind 127.0.0.1 10.42.0.21

# replica2
bind 127.0.0.1 10.42.0.34

ضبط مثيل Redis كنسخة

17. لتكوين مثيل Redis كنسخة، استخدم معلمة replicaof واضبط عنوان IP الخاص بالعقدة الرئيسية (أو اسم المضيف) والمنفذ كقيم.

replicaof 10.42.0.247 6379

ضبط النسخة للمصادقة على الرئيس

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

masterauth Securep@55Here

19. بالإضافة إلى ذلك، عندما يفقد النسخة الاحتياطية اتصالها بالرئيس، أو عندما يكون التكرار قيد التنفيذ، يتم تكوين النسخة الاحتياطية للرد على طلبات العميل، ربما بـ “بيانات غير محدثة”. ولكن إذا كانت المزامنة الأولى، فقد يكون مجموع البيانات فارغًا. يتم التحكم في هذا السلوك بواسطة معلمة replica-serve-stale-data.

ونظرًا لأن Redis 2.6 بشكل افتراضي النسخ الاحتياطية للقراءة فقط، يتم التحكم في ذلك بواسطة معلمة replica-read-only. يمكنك إجراء تعديلات أخرى على تكوين النسخ الاحتياطية لتناسب احتياجات تطبيقك.

20. بمجرد أن تقوم بجميع التغييرات اللازمة، أعد تشغيل خدمة Redis على جميع النسخ الاحتياطية.

# systemctl restart redis

21. كما، افتح منفذ 6379 في جدار الحماية للسماح بالاتصالات من الرئيس والعملاء إلى النسخ الاحتياطية، وأعد تحميل قواعد جدار الحماية.

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

الخطوة 4: تحقق من حالة تكرار الرئيس-النسخ الاحتياطية

22. بمجرد أن يكون تكوين تكرار الرئيس-النسخ الاحتياطية كاملاً، يمكننا التحقق مما إذا كانت الإعداد تعمل بشكل جيد على النحو التالي.

على الرئيس، قم بتشغيل الأوامر التالية.

# redis-cli
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> info replication
Check Redis Relocation Info on Master

23. كما، تحقق من حالة التكرار على النسخ الاحتياطية/العبيد على النحو التالي.

# redis-cli
127.0.0.1:6379> info replication
Check Redis Replication Info on Redis Replica 1
Check Redis Replication Info on Redis Replica 2

23. الآن دعونا نختبر التكرار عن طريق ضبط مفتاح-قيمة في مثيل الرئيس وتحقق مما إذا تمت مزامنة البيانات مع النسخ الاحتياطية.

على الرئيس، افعل ذلك:

# redis-cli
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> set domain 'www.tecmint.com'
Set Key Value in Master Instance

24. ثم تحقق مما إذا تمت مزامنة البيانات مع النسخ الاحتياطية كما هو موضح.

# redis-cli
127.0.0.1:6379> get domain
Check Data Sync Status on Replicas

حماية المثيل الرئيسي من مخاطر خسارة بعض الكتابات

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

هذا يعني أن المثيل الرئيسي يمكن أن يتوقف عن قبول الكتابات إذا كان هناك أقل من N نسخة احتياطية متصلة، مع تأخر أقل من أو يساوي M ثانية، كما يتم التحكم فيه بواسطة الخيارات min-replicas-to-write و min-replicas-max-lag على التوالي.

لتعيينهم، قم بتعطيلهم وتعيين القيم وفقًا لمتطلبات الإعداد الخاصة بك في /etc/redis.conf، كما هو موضح في اللقطة التالية. يعني هذا التكوين أنه بعد 10 ثوانٍ من آخر تنبيه للنسخ الاحتياطية، إذا كان هناك أقل من نسختين على الإنترنت، سيتوقف المثيل الرئيسي عن قبول الكتابات.

min-replicas-to-write 2
min-replicas-max-lag 10
Protecting the Redis Master Against Loss of Write

يمكنك العثور على المزيد من الخيارات في بقية ملف التكوين /etc/redis.conf ولمزيد من التفاصيل قراءة حول النسخ الاحتياطي في وثائق Redis.

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

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