العودة إلى المدونة

كيفية تكوين النسخ المتماثل والتبديل التلقائي للفشل في MongoDB

كيفية تكوين النسخ المتماثل والتبديل التلقائي للفشل في MongoDB

تُعرَّف مجموعة النسخ المتطابقة بأنها عنقود قاعدة بيانات يتكون من عدة عقد مع تكوين النسخ المتطابق وتجاوز الفشل التلقائي بينها. للتأكد من انتخاب قاعدة البيانات الأساسية (PRIMARY) بشكل صحيح، من المهم وجود عدد فردي من الأعضاء في المجموعة (بما في ذلك أو باستثناء عقدة Arbiter ). 

قاعدة البيانات المحددة مسؤولة عن جميع المهام الرئيسية. فهي تعالج عمليات الكتابة الواردة وتخزن معلوماتها في سجل العمليات (oplog). يمكن لأعضاء النسخة المتطابقة الثانوية (SECONDARY) الوصول إلى هذه المعلومات ونسخها لتطبيقها على مجموعات البيانات الخاصة بهم. ونتيجة لذلك، ستمثل جميع الخوادم في المجموعة نفس المحتوى وتضمن توفره:

How to Configure MongoDB Replication and Automated Failover 1-Replica set- graphic

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

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

الخطوة 1: إنشاء بيئة جديدة

للبدء، ستحتاج إلى 3 عقد MongoDB على الأقل لبدء تكوين مجموعة نسخ متطابقة. لذا تفضل بإنشاء بيئة جديدة كما يلي:

2-Create an Environment How to Configure MongoDB Replication and Automated Failover

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

الخطوة التالية في العملية ستكون التعامل مع أمان الاتصال بين هذه العقد باستخدام ملف مفتاح المصادقة.

الخطوة 2: إضافة ملف مفتاح المصادقة

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

  1. انقر فوق خيار Web SSH لأحد عقد قاعدة البيانات وقم بتسجيل الدخول:

3- Web SSH How to Configure MongoDB Replication and Automated Failover

    2. بعد ذلك، يمكنك إدخال ملف المفتاح الخاص بك أو إنشاء ملف جديد باستخدام openssl باستخدام الأمر التالي:

في هذا الأمر، 741 يمثل حجم المفتاح بالبايت و my.key هو اسم المفتاح.

    3. حان الوقت لتوزيع ملف المفتاح الجديد عبر جميع مثيلات MongoDB الخاصة بك. إليك كيفية القيام بذلك:

  • افتح مدير الملفات بالنقر فوق زر Config بجوار أي من عقد قاعدة البيانات:

4-Click on the Config

  • حدد موقع ملف my.key في علامة تبويب التكوين تحت المسار: /home/jelastic/my.key. افتحه وانسخ محتويات الملف:

5- configuration tab How to Configure MongoDB Replication and Automated Failover

  • تحت المسار /var/lib/jelastic/keys ستجد دليل keys. قم بإنشاء ملف جديد والذي ستستخدمه مثيلات MongoDB لمصادقة هويات بعضها البعض. في حالتنا، سننشئ ملفًا باسم mongo-set.key:

6-keys directory

  • قم بلصق المحتوى المنسوخ مسبقًا في هذا الملف وقم بتطبيق التغييرات بالنقر فوق Save لجميع المثيلات:

7-Paste the clipboard content

نتيجة لهذه العملية، تم توزيع ملف mongo-set.key عبر جميع عقد MongoDB الخاصة بنا.

الخطوة 3: تكوين نسخ MongoDB المتطابق

الآن بعد أن أمّنا مثيلات قاعدة البيانات، يمكننا الانتقال إلى تكوين مجموعة النسخ المتطابقة فعليًا. لنبدأ:

  1. ابدأ بالانتقال إلى علامة تبويب التكوين لعقد MongoDB وفتح ملف mongo.conf في مجلد etc المجلد. قم بالتمرير لأسفل حتى تجد قسم replication. قم بإلغاء التعليق عليه وأضف السلسلة التالية باسم فريد لمجموعة النسخ المتطابقة الخاصة بك. بالنسبة لمثالنا، سنقوم بتسميتها db-replication:
      2. بعد ذلك، سنضيف معلمة جديدة تسمى keyFile في قسم security. سيخدم هذا لتحديد مسار لملف المفتاح الموجود حاليًا في المسار: /var/lib/jelastic/keys/mongo-set.key:

8-Add parameter keyFile

      3. انقر فوق الزر المناسب لـ حفظ التغييرات لكافة المثيلات في نافذة المحرر. 

      4. الآن يجب عليك إعادة تشغيل جميع عقد DB الخاصة بك لتطبيق معلمات التكوين الجديدة:

9-Restart your DB nodes How to Configure MongoDB Replication and Automated Failover

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

     5. اختر خادم MongoDB الذي تريد استخدامه كخادم أساسي (PRIMARY) والوصول إليه باستخدام بروتوكول SSH:

10-access the MongoDB server How to Configure MongoDB Replication and Automated Failover

تذكر: بمجرد انتخاب قاعدة البيانات الأساسية (PRIMARY)، لن يعود بالإمكان الوصول إلى الأعضاء الآخرين في مجموعة النسخ المتطابقة لعمليات الكتابة المباشرة. هذا يعني أن جميع التغييرات والتكوينات لا يمكن إجراؤها وتطبيقها إلا على العقدة الأساسية (PRIMARY) الحالية فقط. لذلك ما لم تكن قد قمت بترتيب الأولويات، فسيتعين عليك تغيير سلسلة الاتصال في تطبيقك إلى العقدة الأساسية (PRIMARY) الجديدة.

     6. بعد ذلك، قم بالوصول إلى قاعدة البيانات المنسوخة باستخدام بيانات الاعتماد الخاصة بك:

11-Access the database How to Configure MongoDB Replication and Automated Failover

في هذا الأمر:

  • {user} –يشير إلى اسم مستخدم المسؤول الذي سيتم إرساله إلى بريدك الإلكتروني (عادةً ما يكون admin افتراضيًا).
  • {password} –هذه هي كلمة المرور المرسلة إلى بريدك الإلكتروني مع اسم المستخدم المقابل.
  • {DB_name}- يمثل اسم قاعدة البيانات التي ترغب في نسخها في مجموعة النسخ المتطابقة هذه (نحن نستخدم admin الافتراضي في مثالنا).

في حالة إجراء انتخاب جديد، يمكنك استخدام نفس بيانات اعتماد مستخدم admin لتسجيل الدخول إلى قاعدة بيانات أساسية (PRIMARY) جديدة.

     7. الآن بعد أن تم إنشاء الاتصال، ستحتاج إلى تنفيذ الأسطر التالية لتحديد المعلمات لعقدة MongoDB الحالية وبدء مجموعة النسخ المتطابقة:

في الأسطر أعلاه، ستقوم باستبدال القيم الموجودة بين الأقواس ببياناتك المقابلة:

  • {replica_set} – هذا هو اسم مجموعة قاعدة البيانات المنسوخة التي حددتها في بداية هذا القسم. في حالتنا، كان هذا db-replication.
  • {current_db_ip} – يشير إلى عنوان IP لحاوية قاعدة البيانات التي حددتها:

12-initiate your replica set How to Configure MongoDB Replication and Automated Failover

في حالتنا، الأسطر المنفذة هي:

13-config

14-rs.initiate()

        8. بعد ذلك، قم بتنفيذ الأمر التالي لجميع قواعد البيانات المتبقية:

هنا، {db_ip} يشير إلى عنوان IP الخاص بكل قاعدة بيانات:

15-rs.add(

       9. بمجرد إضافة جميع أعضاء النسخ المتطابق، ستحصل على مجموعة نسخ متطابقة تعمل بكامل طاقتها. نوصي بالتأكد من تكوين كل شيء بشكل صحيح في نهاية العملية. للقيام بذلك، قم بتنفيذ الأمر: rs.status(). سيعرض لك هذا معلومات كاملة بخصوص مجموعة النسخ المتطابقة الخاصة بك، على النحو التالي:

16-execute the rs.status()

الخطوة 4: إعداد حكم مجموعة النسخ المتطابقة (ReplicaSet Arbiter)

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

  • لا يقوم Arbiter بتخزين أي بيانات؛ بل يكتفي بالتصويت في الانتخابات في حالة فشل عقدة أخرى.
  • إنه خفيف للغاية ولا يستهلك الكثير من الموارد.
  • يقوم بتبادل بيانات اعتماد المستخدم بين النسخ المتطابقة المشفرة.
  • للحفاظ على أعلى مستوى من الإتاحة، حاول تشغيل Arbiter على عقدة منفصلة.

إليك كيفية إضافة عقدة Arbiter إلى مجموعة النسخ المتطابقة (replica set) الخاصة بك:

  1. أولاً، سنقوم بإجراء بعض التوسيع الأفقي وإضافة عقدة إضافية إلى العنقود (cluster):

17-ReplicaSet Arbiter

18-Scale out database cluster

2. بعد إضافة العقدة، نحتاج إلى ملف مفتاح جديد. انتقل إلى دليل keys وقم بإنشاء ملف مفتاح mongo-set.key. انسخ محتويات المفتاح من أي من عقد قاعدة البيانات التي تم تكوينها مسبقًا والصقها بالكامل هنا كما فعلنا من قبل.

3. انتقل إلى ملف تكوين mongod.conf . قم بإلغاء تعليق قسم التكرار (replication) وأضف repISetName (وهو db-replication في حالتنا). وتوجه أيضًا إلى قسم security وأضف معلمة keyFile ( /var/lib/jelastic/keys/mongo-set.key في حالتنا).

4. أخيرًا، أعد تشغيل العقدة الجديدة لتطبيق معلمات التكوين الجديدة هذه:

19- Restart newly

من المهم أن تتذكر أنك لست بحاجة إلى إعادة تشغيل جميع العقد في العنقود في هذه المرحلة. أعد تشغيل عقدة Arbiter المضافة حديثًا فقط. ستؤدي إعادة تشغيل جميع العقد إلى انتخاب PRIMARY جديد (ما لم تكن قد حددت أولويات لاختيار عقدة قاعدة بيانات معينة كـ PRIMARY).

 5. أخيرًا، يمكن إضافة Arbiter إلى مجموعة النسخ المتطابقة. للقيام بذلك، قم بإصدار الأمر التالي في عقدة PRIMARY:

هنا، {db_ip} هو عنوان IP للعقدة الجديدة:

20-IP address of a newly added node

 6. الآن، يمكنك التحقق للتأكد مما إذا كانت العقدة الجديدة قد أصبحت هي Arbiter أم لا. يمكنك القيام بذلك عن طريق تسجيل الدخول إلى العقدة الجديدة باستخدام SSH والاتصال بمثيل MongoDB باستخدام بيانات الاعتماد التي تلقيتها على بريدك الإلكتروني في وقت إنشاء العقدة:

21-connect MongoDB instance

يوضح هذا أن العقدة الجديدة التي أضفناها للتو إلى العنقود تعمل بمثابة Arbiter لـ db-replication. يضمن هذا وجود نصاب قانوني (quorum) في أي موقف، مما يجعل مجموعة النسخ المتطابقة أكثر موثوقية.

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

بعد ذلك، يمكننا إعداد عنقود MongoDB للاتصال وإجراء العمليات عن بُعد. في المثال التالي، سنتصل وننفذ بعض أوامر الفحص باستخدام تطبيق PHP بسيط.

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

  1. ابدأ بالنقر فوق Change Environment Topology وإضافة الخادم:

22-Press Change Environment Topology

23-Press Change Environment Topology button

    2. افتح علامة تبويب Configuration Manager الخاصة بخادم Apache عن طريق النقر فوق زر Config كما هو موضح أدناه:

3. حدد موقع ملف index.php وافتحه في دليل /var/www/webroot/ROOT والصق الكود التالي بدلاً من المحتوى الافتراضي:

يجب استبدال القيم التالية في الكود أعلاه ببياناتك الخاصة:

  • {replica_set_name} – أدخل اسم مجموعة النسخ المتطابقة الخاصة بك.
  • {db_username} – أضف مستخدم المسؤول لقاعدة البيانات الأساسية المختارة (هو admin افتراضيًا).
  • {db_password} – أدخل كلمة مرور مستخدم المسؤول.
  • {NodeID} – اذكر رقم تعريف العقدة المقابلة. يمكنك العثور على هذا في لوحة تحكم CloudSigma PaaS.
  • {environment_domain} – أضف نطاق البيئة. يمكنك أيضًا العثور على هذا في لوحة تحكم CloudSigma PaaS:

تأكد من تحديد معرفات كل عقدة في مجموعة النسخ المتطابقة الخاصة بك في قسم mongodbConnectionURI المناسب.

سيؤدي إدخال القيم المقابلة وتشغيل الكود إلى إظهار مجموعة من السلاسل النصية المشابهة لهذا:

تأكد من أنك تقوم بـ Save الملف عند هذه النقطة!

4. لكي يتفاعل Apache مع خادم MongoDB، فإنه يتطلب وحدة خاصة. يمكنك إضافة هذه الوحدة داخل configs. توجه إلى مجلد etc وافتح ملف php.ini file. حدد موقع قسم [mongodb] . هنا، كل ما عليك فعله هو إزالة الفاصلة المنقوطة قبل سطر extension=mongodb.so لتمكين هذا الامتداد:

      5. قم بتطبيق التكوينات الجديدة بالنقر فوق Save في نافذة المحرر. كما هو الحال دائمًا، نحتاج إلى إعادة تشغيل العقد لتطبيق التغييرات. انقر فوق زر Restart Nodes الموجود بجوار Application Server للقيام بذلك:

    6. الآن انقر فوق زر Open in Browser لاختباره:

سيؤدي النقر فوق هذه الأيقونة إلى فتح علامة تبويب جديدة في المتصفح تعرض جميع المعلومات حول أعضاء/عقد مجموعة النسخ المتطابقة وإمكانية الوصول إليها مثل هذا:

بما أننا استخدمنا الأمر ping (السطر 6 من ملف index.php )، يعرض السطر الأول نتيجة التحقق من توفر مجموعة النسخ المتطابقة:

هذا يعني أنه تم اختبار مجموعة النسخ المتطابقة بنجاح. 

توضح الكتلة التالية في النتائج معلومات مفصلة حول مضيفي مجموعة النسخ المتطابقة. تم الحصول على هذه البيانات بفضل وظيفة getServers (السطر 11 من ملف index.php). وبالمثل، يمكنك أيضًا التحقق من بعض القيم المعينة أثناء عملية إنشاء مجموعة النسخ المتطابقة هذه:

  • host – عنوان IP لقاعدة بيانات معينة.
  • port – هذا هو منفذ عضو النسخ المتطابق الحالي.
  • [“is_primary”] و [“is_secondary”] – المعلمات التي تشير إلى حالة الخادم. القيم المقابلة لخادم MongoDB الأساسي المختار هي true، false ولخادمي MongoDB الآخرين – false، true على التوالي.

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

تتيح منصة CloudSigma PaaS لمستخدميها الاستفادة من مزايا استخدام مجموعات النسخ المتطابقة دون القلق كثيرًا بشأن التكوين والجانب الخلفي للأمور. يوضح هذا البرنامج التعليمي مدى سهولة إعداد مجموعة MongoDB الخاصة بك ببضع خطوات بسيطة فقط. يمكنك معرفة المزيد حول MongoDB، وكيفية إعدادها لنظام التشغيل Ubuntu أو خوادم السحابة العامة، بالإضافة إلى الميزات المتقدمة الأخرى التي تقدمها CloudSigma PaaS. نرحب بك أيضًا لـ إجراء تجربةللمنصة مجانًا للتعرف على لوحة التحكم و المتجر وما يقدمانه. 

جرب منصة PaaS مجانًا لمدة 7 أيام

author

Preslav Dobrev

المؤلف · CloudSigma

Preslav Dobrev هو مصمم إبداعي في CloudSigma، يركز على هوية أعمال متسقة باستخدام قنوات التسويق التقليدية والمبتكرة. هو بارع في دمج الرؤية الفنية مع التسويق الاستراتيجي لخلق سرد قصصي مؤثر للعلامة التجارية.

التعليقات

لا توجد تعليقات بعد. كن أول من يعلق.