تنطوي الأعمال التجارية على الكثير من البيانات، مما يجعل مشكلة التعامل معها وإدارتها أكثر صعوبة. تقليديًا، كان قطاع الصناعة يستخدم أنظمة RDBMS على مدى عقود الآن، ولكن مع ظهور Big Data في القرن الحادي والعشرين، ظهرت قواعد بيانات NoSQL (ليس فقط SQL) في الصورة للبيانات غير المهيكلة وشبه المهيكلة واسعة النطاق.
في هذه المقالة، سأقوم بإعداد عنقود MongoDB.
MongoDB هي قاعدة بيانات مستندات NoSQL مجانية ومفتوحة المصدر، وهي مستخدمة على نطاق واسع نظرًا للمستوى العالي من القابلية للتوسع والمرونة التي توفرها.
لنشر MongoDB في بيئة الإنتاج، يُنصح باستخدام Replica Sets. تعد Replica sets مكافئًا في MongoDB لإعداد Master/Slave في العالم العلائقي، ولكن في المقابل، فإن إعدادها سهل للغاية وبدون عناء، حيث أن كل شيء مدمج بها. لمزيد من المعلومات حول Replica Sets، راجع تعريف TutorialsPoint’s لعملية النسخ المتماثل.
التخطيط لعنقود خادم MongoDB السحابي الخاص بك
سأقوم بإنشاء عنقود مكون من 3 عقد. من المهم منحها موارد متساوية لأن أيًا منها يمكن أن يصبح الخادم الأساسي (أي الرئيسي). يمكن لهذه العقد أو الأجهزة أن تعمل على أي نظام تشغيل، ولكن في هذا البرنامج التعليمي، سأستخدم Ubuntu 18.04 LTS. لمعرفة كيفية إرفاق وإعداد الصورة المثبتة مسبقًا من مكتبة CloudSigma’s، يمكنك الرجوع إلى هذا البرنامج التعليمي.
نظرًا لأن الهدف الأساسي من Replica Set هو أن يظل العنقود يعمل حتى في حال تعطل عقدة واحدة، فسيكون من غير المجدي أن تتواجد جميع خوادمك على نفس المضيف الفعلي. لحسن الحظ، تقدم CloudSigma ميزة تسمى مجموعات التوفر. ما يعنيه هذا هو أنه يمكنك توجيه النظام لتجميع خوادمك الثلاثة في مجموعات مختلفة. ومن خلال القيام بذلك، لن تتواجد أبدًا على نفس المضيف الفعلي. يمكن العثور على مزيد من المعلومات حول هذا الأمر وميزات الأمان واستمرارية الأعمال الأخرى هنا.
من المهم أيضًا استخدام إصدار 64 بت من Linux. والسبب ببساطة هو أن MongoDB لا يعمل بشكل جيد على أنظمة 32 بت (المزيد عن ذلك هنا).
تثبيت MongoDB في السحابة
هذا القسم مباشر للغاية. إما أن تستخدم أحد صور Ubuntu 18.04 المعدة مسبقًا أو تقوم بتثبيتها بنفسك.
إن تكوين CPU و RAM والقرص هو أمر فردي للغاية ويعتمد على حجم الضغط لديك. بالنسبة للتثبيت الصغير، يجب أن يكون CPU بتردد 4 GHz و RAM بحجم 4 GB وقرص بحجم 10 GB (للنظام) كافيًا. عند إرفاق محركات الأقراص الخاصة بك، تأكد من أنك تستخدم VirtIO. إذا كنت تستخدم IDE، فسيتأثر الأداء بشكل كبير. أيضًا، نظرًا لأنك تقوم بإنشاء Replica Set، فأنت بحاجة إلى أن تكون جميع العقد (وخوادم التطبيقات) على نفس شبكة VLAN.
على عكس العديد من مزودي الخدمات السحابية الآخرين، ليست هناك حاجة لتكوين وحدة التخزين الخاصة بك باستخدام RAID10 أو ما شابه لتحسين الأداء. كما يفيد العديد من عملائنا، ستحصل على أداء مذهل ومباشر دون أي إعدادات إضافية باستخدام كل من أقراص SSD والأقراص المغناطيسية في CloudSigma.
ما زلت أوصي بالاحتفاظ ببيانات MongoDB على محرك أقراص منفصل. والسبب في ذلك ببساطة هو أنه في مرحلة ما قد تضطر إلى إجراء بعض تحسينات نظام الملفات التي لن ترغب في إجرائها على نظام الملفات بأكمله.
مع وضع هذا في الاعتبار، فإن الأسهل هو مجرد إضافة محرك الأقراص هذا بعد إعداد الخوادم. في الوقت الحالي، فلنركز فقط على تثبيت النظام. إذا كنت تقوم بالتثبيت بنفسك (بدلاً من استخدام الأنظمة المعدة مسبقًا)، فإنني أوصي بالضغط على F4 في قائمة التمهيد واختيار ‘تثبيت جهاز افتراضي بالحد الأدنى’.
أقوم بإنشاء 3 أجهزة، لكل منها المواصفات التالية:
- CPU: 4 GHz
- RAM: 4 GB
- SSD: 10 GB (Ubuntu 18.04 LTS)، و 20 GB (محرك أقراص إضافي)
كما هو موضح في جزء SSD، أقوم بإرفاق محرك أقراص بحجم 10 GB مثبت عليه نظام Ubuntu 18.04 LTS.
علاوة على ذلك، أقوم بإرفاق محرك أقراص فارغ آخر بحجم 20 GB معه لتخزين بيانات MongoDB. يعتمد حجم هذا بشكل كبير على استخدامك، ولكن بالنسبة لنظام صغير، فمن المحتمل أن يكون 20GB كافيًا. ومع ذلك، نظرًا لأنه يصعب أحيانًا التنبؤ بحجم البيانات التي ستخزنها، فسنستخدم LVM. سيتيح لك هذا ببساطة إضافة محرك أقراص آخر لاحقًا وتوسيع وحدة التخزين دون الحاجة إلى البدء من جديد. بدلاً من ذلك، يمكنك استخدام محرك أقراص واحد وتوسيع نطاقه لاحقًا باستخدامresize2fs.
لإضافة القرص، ما عليك سوى الانتقال إلى قسم ‘Drives’، والنقر على أيقونة ‘Create a new drive’ في الأعلى، وتسمية القرص الجديد وتحديد حجمه بـ 20 جيجابايت. بمجرد حفظه، انتقل إلى الجهاز الفردي الذي تريد إرفاقه به، وتحت قسم الأقراص في تفاصيل ذلك الجهاز، يمكنني النقر على ‘Attach a drive’ واختيار القرص.
الآن بعد أن أصبح لديك ثلاثة أجهزة، يمكنك الانتقال إلى تركيب القرص الإضافي الذي أضفته لتخزين بيانات MongoDB الخاصة بك في كل جهاز. أوصي بإضافة هذا القرص كقسم. يتيح استخدام التقسيم لنظام التشغيل إدارة المعلومات في كل منطقة بشكل منفصل. لإضافة القرص كقسم، سأقوم أولاً بفحص جميع الأقراص المتصلة بجهازنا. وللقيام بذلك، سأقوم بتنفيذ الأمر التالي:
|
1 |
fdisk -l |
عندما أقوم بتنفيذ الأمر، أحصل على المخرجات التي توضح الأقراص والأجهزة الموجودة على جهازي.

في الصورة، قمت بتحديد قرص بحجم 10 جيجابايت كقرص تم تثبيت نظام التشغيل الخاص بنا عليه. ثم هناك قرص آخر بحجم 20 جيجابايت تم إرفاقه الآن. موقع القرص هو /dev/vdb. يمكنك إنشاء قسم على هذا القرص باستخدام الأوامر التالية:
|
1 |
sudo fdisk /dev/vdb |
سيؤدي ذلك إلى فتح أداة fdisk، وهي أداة سطر أوامر توفر وظائف تقسيم القرص، حيث يمكنك إنشاء أقسام على قرصنا. ستظهر لك رسالة مطالبة “Command (m for help):” حيث يتعين عليك إدخال n لإنشاء قسم جديد، ثم استمر في الضغط على enter لقبول القيم الافتراضية. وبعد إنشاء القسم، أدخل w لكتابة التغييرات. سيبدو الأمر كالتالي:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
الأمر (m لـ المساعدة): <strong>n</strong> القسم نوع p رئيسي (0 رئيسي, 0 ممتد, 4 خالٍ) e ممتد (حاوية لـ منطقي أقسام) تحديد (الافتراضي p): استخدام الافتراضي الاستجابة p. القسم رقم (1-4, الافتراضي 1): الأول قطاع (2048-41943039, الافتراضي 2048): الأخير قطاع, +قطاعات أو +حجم{K,M,G,T,P} (2048-41943039, الافتراضي 41943039): تم إنشاء واحد جديد قسم 1 من نوع 'Linux' و بـ حجم 20 GiB. الأمر (m لـ المساعدة): <strong>w</strong> الـ قسم جدول قد تم تعديله. استدعاء ioctl() لـ إعادة-قراءة قسم جدول. مزامنة الأقراص. |
لقد تم إنشاء قسم جديد 1 من نوع ‘Linux’ وبحجم 20 جيجابايت ثنائية (GiB). الآن بعد أن تم إنشاء القسم، فلنقم بإنشاء تجمع LVM:
|
1 2 3 |
sudo pvcreate /dev/vdb1 sudo vgcreate mongodb /dev/vdb1 sudo lvcreate -n db -L 19.5g mongodb |
لقد قمت بإدخال ‘19.5g’ لأن حجم القسم الخاص بي هو 20g. بعد ذلك، قم بتنفيذ الأمر التالي لمعرفة اسم القرص:
|
1 |
fdisk -l | grep mongo | awk '{print $2'} |
بعد ذلك، قم بتهيئة القرص باستخدام طريقة ext4 بالأمر التالي:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
sudo mkfs.ext4 /dev/mapper/mongodb-db المخرجات: root@m4:/home/cloudsigma# sudo mkfs.ext4 /dev/mapper/mongodb-db mke2fs 1.44.1 (24-مارس-2018) إنشاء نظام ملفات باستخدام 5217280 4k كتل و 1305600 inodes نظام الملفات UUID: 695a62e6-021d-4fc0-945c-cc51a92d86da Superblock نسخ احتياطية مخزنة على كتل: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 تخصيص مجموعة جداول: تم كتابة inode جداول: تم إنشاء journal (32768 كتل): تم كتابة superblocks و نظام الملفات حسابات المعلومات: تم |
بعد ذلك، دعنا ننشئ موقعًا لتركيب القرص ومجلدًا للاحتفاظ ببيانات MongoDB الخاصة بك.
|
1 |
sudo mkdir -p /mongodb/data |
من أجل إضافة إدخال إلى fstab حول قرصك الجديد المراد تركيبه، يمكنك استخدام الأمر أدناه مباشرة:
|
1 |
echo -e "` blkid | grep mongodb | awk {'print $2'}`\t/mongodb\text4 auto,noexec,rw,sync,nouser\t0\t0" >> /etc/fstab |
في الأمر، blkid يعطيك UUID – المعرف الفريد العالمي لكل قرص. هنا أقوم باستخراج المعرف الخاص بقرص MongoDB ودمج هذا الـ UUID مع موقع مجلد التركيب ونوع نظام الملفات والخيارات الأخرى للقرص على التوالي. أقوم بإضافة هذا السطر إلى /etc/fstab. إذا لم تفعل ذلك، فستتلقى خطأ أثناء تركيب القرص. يبدو الإدخال كالتالي:
UUID=”695a62e6-021d-4fc0-945c-cc51a92d86da” /mongodb ext4 auto,noexec,rw,sync,nouser 0 0
الآن، يمكنك تركيب القرص على موقع /mongodb:
|
1 |
sudo mount /mongodb |
تثبيت MongoDB
مع إعداد النظام، دعنا ننتقل إلى تثبيت MongoDB. على الرغم من أن Ubuntu توفر إصدارًا من MongoDB في مستودعها الخاص، إلا أنني أوصي باستخدام إصدار MongoDB الرسمي بدلاً من ذلك. والسبب في ذلك هو أن مستودع Ubuntu متأخر جدًا في الإصدارات، لذا إذا كنت ترغب في تحقيق أقصى استفادة من MongoDB، فسيتعين عليك اللجوء إلى الإصدارات الرسمية.
بما أن MongoDB توفر مستودعها الخاص، يمكنك ببساطة إضافة هذا إلى نظامك ثم تثبيت MongoDB كالمعتاد. إليك الخطوات التي يجب اتباعها:
أولاً، قم باستيراد المفتاح العام المستخدم بواسطة نظام إدارة الحزم:
|
1 |
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 |
بعد ذلك، أقوم بإنشاء ملف قائمة. سيحتوي هذا على المستودع الذي توجد به MongoDB، حتى يتمكن نظامك من تنزيلها من هناك:
|
1 |
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list |
الآن، أقوم بتحديث قاعدة بيانات الحزم المحلية الخاصة بي حتى أتمكن من أخذ التغييرات في الاعتبار.
|
1 |
sudo apt-get update |
الآن، يمكنني فقط تثبيت الحزمة باستخدام الأمر التالي:
|
1 |
sudo apt-get install -y mongodb-org |
لقد قمت بتثبيت MongoDB على كل جهاز من الأجهزة.
|
1 |
sudo service mongod start |
الآن أصبحت MongoDB قيد التشغيل، مع إنشاء البيانات على القرص. إذا كان من المتوقع وجود حمل ثقيل و/أو الكثير من الاتصالات، فقد تحتاج إلى زيادة قيم ulimit .
إذا كنت ترغب في الحصول على مزيد من الرؤى حول بياناتك، فقد ترغب أيضًا في التسجيل في MMS، وهي خدمة مراقبة مجانية قائمة على السحابة لـ MongoDB.
إنشاء مجموعة النسخ المتماثلة (Replica Set) لسحابة MongoDB الخاصة بك
الآن، دعنا ننشئ مجموعة نسخ متماثلة. قبل ذلك، تحتاج إلى التأكد من أن كل جهاز من الأجهزة يمكنه الاتصال بالآخر. لهذا الغرض، اذهب وأضف هذه الإدخالات في /etc/hosts
|
1 2 3 |
IP-1 m1.mongo.cluster m1 IP-2 m2.mongo.cluster m2 IP-3 m3.mongo.cluster m3 |
للتحقق، يمكنك محاولة إرسال أمر ping إلى الأجهزة باستخدام اسم المضيف. لذا، إذا كان عنوان IP للجهاز 1 الخاص بي هو IP-1، لنقل، 213.189.123.12، فبدلاً من كتابة
|
1 |
ping 123.189.123.12 |
سأكتب،
|
1 2 3 |
ping m1.mongo.cluster أو ping m1. |
إذا قمت بتنشيط جدار الحماية (وهو ما يجب عليك فعله حقًا)، فتأكد من أن العقد يمكنها إرسال واستقبال حركة مرور TCP على المنفذين 28017 و 27017 على الواجهة الداخلية.
الآن، على كل جهاز، ابدأ خدمة mongod باستخدام الأوامر التالية.
على الجهاز m1،
|
1 |
mongod --dbpath /mongodb/data --replSet rs0 --bind_ip localhost,m1.mongo.cluster |
بعد ذلك، على الجهاز m2،
|
1 |
mongod --dbpath /mongodb/data --replSet rs0 --bind_ip localhost,m2.mongo.cluster |
على الجهاز m3،
|
1 |
mongod --dbpath /mongodb/data --replSet rs0 --bind_ip localhost,m3.mongo.cluster |
هنا،
mongod هو اسم الخدمة
dbpath هو موقع دليل قاعدة البيانات الخاصة بنا
replSet هو اسم مجموعة النسخ المتماثل الخاصة بنا. يجب أن يكون هو نفسه لكل جهاز من الأجهزة في نفس مجموعة النسخ المتماثل
bind_ip هو اسم المضيف لذلك الجهاز الذي تقوم بتشغيله عليه.
بمجرد بدء خدمة mongod، انتقل إلى الخادم الأساسي (في حالتي، اخترت m1)، وقم بتشغيل mongo.
|
1 |
mongo |
سيؤدي هذا إلى بدء تشغيل طرفية MongoDB. في الطرفية، انتقل وابدأ تشغيل replicaSet باستخدام الأمر أدناه. سيؤدي ذلك إلى إنشاء replicaSet بالتكوينات الافتراضية:
|
1 |
rs.initiate() |
الآن، دعنا نضيف الجهازين الآخرين كنسخ متماثلة باستخدام الأوامر التالية:
|
1 2 |
rs.add("m2.mongo.cluster") rs.add("m3.mongo.cluster") |
يمكنك مراقبة الحالة باستخدام الأمر:
|
1 |
rs.status() |
هذا كل شيء حقًا. يجب أن تكون الآن جاهزًا وتعمل مع مجموعة MongoDB الخاصة بك على سحابة CloudSigma’s فائقة السرعة.
التعليقات
لا توجد تعليقات بعد. كن أول من يعلق.