الرئيسية
» مسؤول الشبكة
»
كيفية إعداد مجموعة Nextcloud عالية التوفر باستخدام قاعدة بيانات Galera
كيفية إعداد مجموعة Nextcloud عالية التوفر باستخدام قاعدة بيانات Galera
إنّ نشر Nextcloud عالي التوافر باستخدام Galera هو نظام متكامل، وليس مجرد ثلاثة خوادم قواعد بيانات. أنت بحاجة أيضًا إلى عُقد تطبيق Nextcloud احتياطية، وطبقة بيانات ملفات مشتركة ومستدامة، وتخزين مؤقت موزّع، وقفل الملفات، وموازنة الأحمال، والمراقبة، ونسخ احتياطية مُختَبَرة. يستطيع Galera الحفاظ على خدمة قاعدة البيانات متاحة بعد تعطل إحدى عُقد قاعدة البيانات طالما بقي النصاب القانوني، لكنه لا يستطيع ضمان التوافر العالي للمكونات الأخرى.
يستخدم هذا الدليل تصميمًا محايدًا للبائعين لنظام لينكس مع MariaDB Galera وخادم وكيل عكسي أو موازن أحمال. تختلف أسماء الحزم وأسماء الخدمات ومسارات موفر Galera وأوامر التمهيد وتكاملات فحص سلامة الوكيل باختلاف التوزيعة وإصدار MariaDB. تأكد من مطابقتها مع وثائق الإصدار المحدد قبل النشر. يُدرج دليل إدارة Nextcloud المستقر الحالي PostgreSQL وMariaDB كمحركات قواعد بيانات موصى بها، ويحذر من اختلاف الإصدارات المدعومة؛ تحقق من متطلبات نظام Nextcloud للإصدار الذي تنوي تشغيله. تمت مراجعة هذه المقالة مع دليل Nextcloud 35 المستقر بتاريخ 6 أكتوبر 2026.
نظرة عامة مفاهيمية على بنية Nextcloud الكاملة عالية التوافر. كل تبعية ذات حالة تحتاج إلى خطة توافر خاصة بها.
اختر تصميم التوافر المناسب أولاً
Galera هي خدمة نسخ متزامنة متعددة المصادر لخوادم MySQL المتوافقة. يتم التحقق من صحة المعاملة عبر المجموعة، مما يساعد في الحفاظ على اتساق الأعضاء، ولكنه يزيد من عبء التنسيق، وقد تُرفض المعاملات المتعارضة. إضافة عُقد قاعدة البيانات لا تُضاعف إنتاجية Nextcloud تلقائيًا. تشير إرشادات مطوري Nextcloud إلى أن المجموعات تُؤثر سلبًا على الأداء، وأن قاعدة البيانات والتخزين يظلان من الموارد المشتركة الأساسية.
اختيار التصميم
مناسب تمامًا
المقايضة الرئيسية
خادم واحد من MariaDB أو PostgreSQL
عمليات نشر صغيرة تتطلب أبسط العمليات
قد يؤدي إجراء صيانة لقاعدة البيانات أو حدوث عطل فيها إلى انقطاع الخدمة
MariaDB مع Galera
الفرق التي تحتاج إلى تكرار عقدة قاعدة البيانات والتي يمكنها تشغيل النصاب القانوني والشبكة والوكيل وإجراءات الاسترداد
المزيد من العناصر المتحركة، وتنسيق الكتابة، ومعالجة النزاعات، وتعقيد التعافي
عقدتان لقاعدة البيانات بالإضافة إلى مُحكِّم
المواقع التي تحتوي على مضيفين لقواعد البيانات فقط، ولكن بنطاق فشل منفصل للتصويت على النصاب القانوني.
يساعد المحكم في تحقيق النصاب القانوني؛ فهو لا يخزن البيانات ولا يحل محل نسخة ثالثة من قاعدة البيانات.
Galera خلف وكيل مُدرك لقاعدة البيانات
عمليات النشر التي تتطلب نقطة نهاية اتصال مستقرة وتوجيهًا مُتحكمًا به
تُصبح عمليات فحص سلامة الخوادم الوكيلة وقواعد التوجيه خدمة أخرى يجب تشغيلها
في حالة التثبيت الجديد، يُعدّ إنشاء مجموعة Galera بثلاث عقد بيانات موزعة على مضيفات مستقلة نقطة انطلاق شائعة عندما يكون فريق التشغيل قادرًا على دعمها. يتطلب نظام Galera أغلبية، فلا يمكن لمجموعة من عقدتين تجاوز الفشل تلقائيًا وبشكل آمن بعد فقدان أحد أعضائها. يمكن لثلاث عقد تحمّل تعطل أحد أعضائها مع بقاء العضوين الآخرين متصلين. يُنصح بوضع العقد عبر نطاقات الفشل حيثما كان ذلك عمليًا، ولكن تجنّب تمديد النسخ المتزامن عبر روابط ذات زمن استجابة عالٍ دون اختبار. في بيئة أقل تعقيدًا، يُفضّل استخدام قاعدة بيانات واحدة مدعومة بالإضافة إلى خطة نسخ احتياطي واستعادة مُختبرة جيدًا.
قبل التثبيت: حدد معنى "التوافر العالي".
دوّن حالات الفشل التي تنوي تجاوزها: عملية ويب، أو خادم ويب، أو خادم قاعدة بيانات، أو موازن أحمال، أو نقطة تخزين، أو مسار شبكة، أو موقع كامل. حدد أهداف استعادة لكل منها. تصميم بثلاث عقد قاعدة بيانات وموازن أحمال واحد لا يُعدّ فائضًا كاملًا. وكذلك الأمر بالنسبة لمجموعة تطبيقات توجد ملفات مستخدميها على القرص المحلي لخادم ويب واحد فقط.
استخدم إصدارًا موحدًا من Nextcloud، وبيئة تشغيل PHP، ومجموعة تطبيقات، وإعدادات متطابقة على كل عقدة تطبيق. اختر إصدارات MariaDB وGalera متوافقة مع بعضها البعض ومدعومة من قِبل إصدار Nextcloud المُختار. تشمل متطلبات قاعدة بيانات Nextcloud استخدام InnoDB، وعزل المعاملات READ COMMITTED، وتعطيل تسجيل العمليات الثنائية أو استخدام تنسيق ROW؛ لا تنسخ قيم الضبط من إصدار مختلف دون التحقق من المتطلبات الحالية.
خطط لأدوار الويب وقواعد البيانات والتخزين المؤقت والتخزين بشكل منفصل قبل تثبيت الحزم. هذا المخطط ليس شاشة جرد مباشرة.
قم بإعداد المجموعة على 12 مرحلة
1. حجز أسماء المضيفين والعناوين ونقاط نهاية الخدمة
أنشئ أسماء نطاقات خاصة أو عناوين ثابتة لكل عضو في قاعدة البيانات، ولكل عقدة ويب، وخدمة التخزين المؤقت، ووحدة التخزين المشتركة، ونقطة نهاية الويب العامة. خصص نقطة نهاية قاعدة بيانات ثابتة منفصلة لعقد Nextcloud PHP. حافظ على مسارات الشبكة منفصلة بشكل مناسب لحركة مرور التطبيقات والنسخ المتماثل والحركة العامة، حيثما تسمح بنيتك التحتية بذلك. يجب أن يكون اسم العقدة فريدًا، ويجب على كل عضو في المجموعة حل أسماء نظراء Galera بشكل متسق.
2. قم بتثبيت قاعدة بيانات متوافقة وإصدار Galera
قم بتثبيت خادم MariaDB وموفر Galera باستخدام مستودع المورّد الموصى به لنظام التشغيل الخاص بك. حافظ على نفس الخادم الرئيسي ونفس عائلة الموفر على جميع الأجهزة. لا تجمع حزمًا مجتمعية عشوائية مع مكتبة موفر تم تنزيلها بشكل منفصل. قبل المتابعة، تأكد من مسار الترقية المدعوم، وطريقة SST، ووحدة الخدمة، ودليل تضمين التكوين لمجموعة الحزم المحددة.
3. تطبيق متطلبات قاعدة بيانات Nextcloud
اضبط الخادم لاستخدام InnoDB ومستوى عزل المعاملات READ COMMITTED. استخدم تسجيل البيانات الثنائية ROW إذا كان التسجيل الثنائي مُفعّلاً. تحقق من القيم الفعلية بعد إعادة التشغيل بدلاً من افتراض تضمين ملف التكوين. توثّق Nextcloud هذه المتطلبات في دليل تكوين قاعدة البيانات ومتطلبات النظام .
تعامل مع كل تكوين Galera على أنه خاص بالعقدة وتحقق من أسماء الخيارات الخاصة بالحزمة قبل إعادة تشغيل MariaDB.
4. قم بتهيئة Galera بشكل متسق على جميع الأعضاء الثلاثة
استخدم مرجع تكوين المورّد لتعيين اسم المجموعة، وقائمة عناوين النظراء، والاسم والعنوان الفريدين لكل عقدة، ومكتبة المزوّد، وطريقة نقل لقطة الحالة (SST). تُعدّ SST العملية التي تُهيّئ عقدة الانضمام بحالة قاعدة البيانات. يحتوي تكوين مجموعة MariaDB النموذجي على خيارات من هذه المجموعة:
غيّر القيم الخاصة بكل عقدة على كل خادم. تعتمد مسارات الموفر وطرق SST المدعومة على الحزم المثبتة؛ استخدم الطريقة الموثقة وبيانات الاعتماد الخاصة بإصدارك. احمِ بيانات اعتماد SST والشهادات وكلمات مرور قاعدة البيانات كبيانات سرية. لا تستخدم أبدًا عنوان مجموعة فارغًا كإعداد دائم: تشير وثائق MariaDB إلى أن ذلك قد يتسبب في بدء الخادم لمجموعة جديدة بدلًا من إعادة الانضمام إلى المجموعة الحالية.
5. تقييد الوصول إلى الشبكة على النظراء المطلوبين
اسمح لطبقة الويب بالوصول إلى نقطة نهاية خدمة قاعدة البيانات فقط، واسمح لأعضاء قاعدة البيانات بالتواصل فيما بينهم عبر منافذ النسخ المتماثل ونقل الحالة في Galera، وفقًا لمزود الخدمة وطريقة SST المُختارة. تستخدم عمليات نشر Galera الشائعة بروتوكول TCP، وبروتوكول UDP (حسب إعدادات مزود الخدمة) للتواصل الجماعي؛ وتشمل المنافذ الافتراضية ذات الصلة غالبًا المنفذ 4567 للنسخ المتماثل، والمنفذ 4568 لنقل الحالة التزايدي، والمنفذ 4444 لنقل لقطات الحالة. تعامل مع هذه المنافذ كقائمة مرجعية للتحقق من توافقها مع إصدارك وتكوينك، وليس كسبب لفتح جميع المنافذ على نطاق واسع. حافظ على خصوصية منفذ SQL وامنع الوصول العام إليه.
قم بتقييد الوصول من الشرق إلى الغرب للتطبيق المطلوب وحركة مرور Galera؛ لا تعرض منافذ قاعدة البيانات أو النسخ المتماثل بشكل علني.
6. قم بإنشاء العقدة الأولى، ثم قم بضم العقد الأخرى.
قم بتهيئة المجموعة مرة واحدة فقط باستخدام إجراء التمهيد الموثق في حزمة MariaDB الخاصة بتوزيعتك. بعد التأكد من أن العضو الأول يشكل المكون الأساسي، ابدأ تشغيل الأعضاء المتبقين بشكل طبيعي لينضموا إليه ويتلقوا الحالة عبر IST أو SST. ينقل IST مجموعات الكتابة المفقودة عند توفرها، بينما يقوم SST بنقل الحالة بالكامل. لا تقم بتمهيد كل مضيف على حدة، ولا تعتبر إعادة التشغيل إجراء تمهيد.
قم بتشغيل هذا الاستعلام على كل عضو في قاعدة البيانات بعد انضمامه:
SHOW GLOBAL STATUS WHERE Variable_name IN
('wsrep_cluster_status','wsrep_cluster_size','wsrep_ready',
'wsrep_connected','wsrep_local_state_comment');
تأكد من أن كل عقدة متصلة وجاهزة، وأنها تنتمي إلى المكون الأساسي، وأنها تُبلغ عن حجم المجموعة المتوقع، وأنها وصلت إلى حالة التزامن. يشرح MariaDB هذه المؤشرات في دليل مراقبة Galera الخاص به .
يمكن لبنية الشبكة المكونة من ثلاثة مصوتين الاحتفاظ بالأغلبية بعد تعطل أحد الأعضاء، بشرط أن يتمكن الأعضاء المتبقون من التواصل.
7. أنشئ قاعدة بيانات مخصصة في Nextcloud وحسابًا بأقل قدر من الامتيازات
أنشئ قاعدة البيانات باستخدام مجموعة الأحرف والترتيب المطلوبين في دليل تثبيت Nextcloud الحالي. أنشئ مستخدمًا مخصصًا لقاعدة البيانات يقتصر على شبكة التطبيق، وامنحه فقط الصلاحيات اللازمة لإعداد Nextcloud وتشغيله بشكل طبيعي. استخدم بروتوكول TLS للاتصالات التي تعبر المضيفين أو أجزاء الشبكة غير الموثوقة، وتحقق من صحة الشهادات حيثما يدعمها نظامك. لا تُضِف بيانات اعتماد المستخدم الجذر إلى ملف config.php.
8. نشر عقد تطبيق Nextcloud متطابقة
ثبّت نفس إصدار كود Nextcloud، وإضافات PHP، والتطبيقات المُفعّلة، وإعدادات الخادم على كل عقدة ويب. قم بتهيئة نقطة نهاية واحدة لقاعدة البيانات المشتركة، وليس مضيفات قواعد بيانات مختلفة في ملفات خاصة بكل عقدة. يجب أن تستخدم جميع العقد نفس مُعرّف المثيل، والسر، والملح، وسياسة النطاق الموثوق، والإعدادات الأخرى على مستوى المثيل. خزّن الإعدادات في عملية نشر مشتركة مُتحكّم بها أو وزّعها بشكل آمن لضمان تطابق التحديثات.
يجب أن تكون طبقة بيانات ملفات المستخدم مشتركة بين جميع عُقد التطبيق. استخدم نظام ملفات مشتركًا مدعومًا أو تصميم تخزين كائنات أساسيًا مدعومًا يتوافق مع إصدار Nextcloud ومتطلبات التشغيل. تخزين بيانات المستخدم محليًا فقط على خادم ويب واحد يُعيق عملية تجاوز الأعطال: فلن يتمكن الطلب المُوجّه إلى خادم آخر من الوصول إلى الملفات نفسها. حافظ على فصل مسارات كود التطبيق عن مسارات البيانات القابلة للكتابة، وتحقق من صحة دلالات قفل الملفات والتخزين قبل بدء الإنتاج.
يقوم Nextcloud عادةً بإنشاء إعدادات قاعدة البيانات أثناء التثبيت. بمجرد أن تصبح نقطة نهاية قاعدة البيانات ووحدة التخزين المشتركة جاهزة، تأكد من أن كل عقدة تستخدم نفس القيم. يبدو جزء التكوين النموذجي كما يلي؛ احتفظ ببيانات الاعتماد الحقيقية في سير عمل محمي لإدارة الأسرار، ولا تقم بلصق هذا الجزء فوق تكوين إنتاجي موجود.
قم بتكييف نظام التخزين المؤقت واختيار دليل البيانات مع الخيارات المدعومة لإصدار Nextcloud الخاص بك. قم بتثبيت وتكوين ملحقات PHP المطلوبة عند الاقتضاء.
يجب أن تستخدم كل عقدة تطبيق نفس إعدادات مثيل Nextcloud، بما في ذلك السر المشترك وتكوين قاعدة البيانات.
9. أضف خدمة تخزين مؤقت موزعة وخدمة قفل الملفات
استخدم APCu للتخزين المؤقت المحلي لكل مضيف عند الاقتضاء، وخدمة مشتركة متوافقة مع Redis مثل Redis أو Valkey للتخزين المؤقت الموزع وقفل الملفات للمعاملات. يجب أن تشير جميع عقد الويب إلى نفس خدمة التخزين المؤقت أو مجموعة التخزين المؤقت المدعومة، وليس إلى المضيف المحلي. توثق Nextcloud تكوين مجموعة Redis للإعدادات المجمعة، وتشير إلى أن قفل الملفات للمعاملات يعتمد على قاعدة البيانات افتراضيًا. قم بتأمين التخزين المؤقت باستخدام قيود الشبكة والمصادقة وTLS عند الاقتضاء؛ ويتطلب توفر التخزين المؤقت وسلوك تجاوز الفشل تصميمًا خاصًا.
يتطلب نشر Nextcloud المجمع أن تستخدم عقد الويب نفس خدمة التخزين المؤقت الموزع وخدمة قفل الملفات.
10. ضع نقطة نهاية مُدركة لقاعدة البيانات أمام Galera
وجّه Nextcloud إلى نقطة نهاية مستقرة واحدة يوفرها وكيل قاعدة البيانات أو طبقة توجيه أخرى مدعومة. يجب أن يتوقف الوكيل عن إرسال اتصالات جديدة إلى العُقد غير الموجودة في المكون الأساسي، أو غير المتزامنة، أو غير الجاهزة. يُثبت فحص منفذ TCP الأساسي فقط أن المقبس يقبل الاتصالات، ولا يُثبت أن Galera قادرة على خدمة التطبيق بأمان. راجع سلوك فحص السلامة وأنماط الفشل للوكيل المُختار. إذا كنت تستخدم مُوازن تحميل TCP بسيطًا، فقم بإقرانه بفحص جاهزية موثوق لـ Galera وقواعد توجيه مُحكمة.
لا تُضف تقسيم القراءة/الكتابة أو التوجيه بالتناوب بشكل عشوائي. يشرح دليل مطوري Nextcloud دعم الاتصال بين الخادم الرئيسي والنسخة الاحتياطية، ويحذر من أن توجيه عمليات القراءة عبر المجموعة قد يُسبب مشاكل في الاتساق إذا لم تنتشر البيانات أو إذا لم يتمكن الخادم الوكيل من إبقاء عمليات القراءة المُعاملة على العقدة الصحيحة. ابدأ بنقطة نهاية مستقرة قادرة على الكتابة، وقم بقياس أدائها، ثم أضف التوجيه المُخصص فقط عندما تفهم آثار ذلك على الاتساق والدعم.
تخفي نقطة نهاية قاعدة البيانات المستقرة عناوين العقد عن Nextcloud؛ ويجب أن يأخذ منطق سلامة الوكيل في الاعتبار جاهزية Galera.
11. أضف موازنة تحميل الويب الاحتياطية وإعدادات الوكيل الموثوق به
ضع عقدتي ويب على الأقل خلف موازن الأحمال، واستخدم آلية توفر منفصلة لموازن الأحمال نفسه، مثل خدمة مُدارة، أو زوج احتياطي، أو تصميم عنوان IP افتراضي مُختَبَر. اضبط إنهاء TLS، وحجم الطلب، وسلوك مهلة الانتظار، ومتطلبات الجلسة الثابتة وفقًا لبيئة النشر الخاصة بك. راجع وثائق Nextcloud الخاصة بالوكيل العكسي، وعيّن trusted_proxiesعناوين الوكيل الفعلية؛ لأن الاعتماد على نطاقات عملاء عشوائية يُضعف معالجة عناوين IP الخاصة بالعملاء.
يقوم موازن تحميل الويب الاحتياطي بتوجيه حركة المرور فقط إلى عقد التطبيق التي تجتاز فحوصات السلامة المناسبة.
12. قم بالتنفيذ بحذر، ثم اختبر الفشل والتعافي.
اختبر الترقيات على نسخة تجريبية بنفس البنية أولاً. ضع Nextcloud في وضع الصيانة عند الحاجة أثناء عملية الترقية، وطبّق نفس إصدار التطبيق على جميع العُقد، وأعد تشغيلها فقط بعد اجتياز فحوصات السلامة. للصيانة الدورية للخوادم، قم بتفريغ عقدة ويب واحدة في كل مرة وتأكد من كفاية السعة المتبقية. طبّق ترقيات قاعدة البيانات باستخدام عملية الترقية التدريجية المدعومة من MariaDB/Galera للإصدارات المحددة؛ لا تعتمد على ترتيب عشوائي من دليل عام.
تؤدي الصيانة الدورية إلى استنزاف عقدة ويب واحدة بينما تستمر الأخرى في خدمة الطلبات؛ يجب أن تكون السعة كافية للمجموعة المخفضة.
قم بعمل نسخة احتياطية من قاعدة البيانات وطبقة بيانات ملفات المستخدم باستخدام إجراء موثق ومتسق مع التطبيق. احتفظ ببيانات التكوين ومواد التشفير والأسرار متاحة لمشغلي الاستعادة المعتمدين. لا تُعد نسخة Galera المتماثلة نسخة احتياطية: فقد يؤدي الحذف العرضي والتلف المنطقي إلى نسخ البيانات إلى جميع الأعضاء. خزّن النسخ الاحتياطية خارج نطاق فشل المجموعة، وقم بإجراء تدريبات استعادة منتظمة. توثق Galera اعتبارات نقل الحالة والنسخ الاحتياطي في دليل النسخ الاحتياطي للمجموعة ؛ تأكد من أن أي إجراء تعتمده يدعم إصدار MariaDB الخاص بك.
يجب تنسيق النسخ الاحتياطية لقاعدة البيانات والنسخ الاحتياطية لملفات بيانات Nextcloud واختبار استعادتها كمكونات استرداد منفصلة.تحقق من صحة تسجيل الدخول، وعمليات الملفات، ونصاب قاعدة البيانات، وفشل العقدة، واستعادة النسخ الاحتياطية قبل التعامل مع المجموعة على أنها جاهزة للإنتاج.
اختر تصميمًا بناءً على حجم العمل وقدرة الفريق
يُعدّ Galera خيارًا عمليًا عند الحاجة إلى تكرار عقد قاعدة البيانات، ووجود نطاقات أعطال متعددة، وإمكانية مراقبة النصاب القانوني وتطبيق إجراءات استعادة مُتحكّم بها. قد لا يكون مناسبًا في حال كان الهدف الأساسي هو تبسيط العمليات، أو عندما يهيمن على عبء عمل قاعدة البيانات عمليات كتابة متضاربة، أو عندما يتعذر على الفريق الاستجابة بأمان لفقدان النصاب القانوني. في هذه الحالات، قد يُحقق نشر قاعدة بيانات أبسط مدعومة بنسخ احتياطية قوية، أو خدمة قاعدة بيانات مُدارة، موثوقية تشغيلية أفضل.
بالنسبة لخدمة استضافة ذاتية صغيرة، اجعل عقد التطبيق قابلة للتبديل أولاً، وانقل ملفات المستخدمين إلى وحدة تخزين مشتركة دائمة، وقم بتكوين قفل Redis المشترك، واختبر النسخ الاحتياطية. أضف Galera فقط بعد أن تُظهر القياسات أن تعطل عقدة واحدة في قاعدة البيانات أو فترة الصيانة يشكل خطرًا غير مقبول، وأن المؤسسة قادرة على صيانة الطبقة الإضافية. لا يكمن اختبار النجاح الحقيقي في تشغيل جميع خوادم قواعد البيانات الثلاثة، بل في أن يظل عنوان URL الخاص بـ Nextcloud قابلاً للاستخدام أثناء فقدان عقدة مُخطط له، وأن تعمل عمليات التحميل والتنزيل عبر عقد الويب، وأن تحتفظ قاعدة البيانات بالنصاب القانوني، وأن يتمكن الفريق من استعادة بيانات قاعدة البيانات والملفات من النسخ الاحتياطية.
قائمة التحقق السريع للتحقق من الصحة
إصدارات Nextcloud و MariaDB و PHP و Galera متوافقة ومدعومة.
تقوم جميع عقد قاعدة البيانات بالإبلاغ عن العضوية الأساسية، وحجم المجموعة المتوقع، والجاهزية، والحالة المحلية المتزامنة.
تستخدم خوادم التطبيقات نفس نقطة نهاية قاعدة البيانات، والتكوين، وذاكرة التخزين المؤقت، ونظام ملفات البيانات.
تُعد منافذ قاعدة البيانات والنسخ المتماثل والتخزين المؤقت والتخزين خاصة ومقتصرة على النظراء المطلوبين.
تقوم خوادم البروكسي الخاصة بالويب وقواعد البيانات بإزالة الخوادم الخلفية غير الصحية من الخدمة.
تم اختبار فشل عقدة الويب وعقدة قاعدة البيانات المخطط له في نافذة زمنية محددة.
تم استعادة النسخ الاحتياطية لقاعدة البيانات وملفات البيانات بنجاح في بروفة.