آلة Docker افتراضية واحدة مقابل حاوية LXC واحدة لكل تطبيق: أيهما يوفر تحكّمًا أفضل في النسخ الاحتياطي ونطاق التأثير؟

إيفا وونغ هي كاتبة تقنية و ومهندسة هاوية في ZimaSpace. مهووسة بالتكنولوجيا مدى الحياة ولديها شغف بالمختبرات المنزلية والبرمجيات مفتوحة المصدر، تتخصص في تبسيط المفاهيم التقنية المعقدة إلى أدلة عملية وسهلة الفهم. تؤمن إيفا بأن الاستضافة الذاتية يجب أن تكون ممتعة وليست مخيفة. من خلال دروسها، تمكّن المجتمع من تبسيط إعدادات الأجهزة، بدءًا من بناء أول نظام تخزين شبكي NAS وحتى إتقان حاويات Docker.

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

حدّد وحدة الاستعادة قبل مقارنة الحاويات

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

يوضح دليل ZimaSpace لطبقات التخزين على المعدن العاري وDocker وProxmox سبب تغيّر مكان تخزين البيانات المستمرة مع كل طبقة إضافية. تبدأ هذه المقارنة بعد اختيار Proxmox بالفعل، وتتساءل عن الحجم الذي ينبغي أن تكون عليه حدود استعادة كل تطبيق.

إذا كانت التطبيقات لا تستطيع البدء بشكل مستقل لأنها تشترك في قاعدة بيانات واحدة، أو شبكة Compose واحدة، أو موفر هوية واحد، أو إعداد واحد للوكيل العكسي، فقد يؤدي إنشاء حاويات LXC منفصلة إلى إنتاج عدة ملفات نسخ احتياطية من دون إنشاء عزل حقيقي. حدّد التبعيات قبل عدّ الحاويات.

محور اتخاذ القرار آلة افتراضية واحدة لـ Docker حاوية LXC واحدة لكل تطبيق
عنصر النسخ الاحتياطي نسخة احتياطية أكبر واحدة من الآلة الافتراضية، مع حماية للبيانات مدركة للتطبيق نسخة احتياطية أصغر واحدة من Proxmox لكل حاوية تطبيق
نطاق الاستعادة استعادة منصة Docker بأكملها معًا استعادة خدمة واحدة دون استبدال الضيوف الآخرين غير المرتبطين بها
الأدوات المشتركة برنامج Docker خفي واحد، ووكيل وكيل عكسي واحد، ووكيل مراقبة واحد، ودورة تصحيحات واحدة تكرار الحزم الأساسية والوكلاء والمستخدمين وقواعد الشبكة
نطاق تأثير التحديث يمكن أن تؤثر تغييرات النواة أو Docker أو جدار الحماية أو نظام الملفات في جميع التطبيقات تبقى معظم تغييرات الحزم والتطبيقات داخل حاوية LXC واحدة
النفقات العامة للموارد نظام تشغيل ضيف واحد، لكن جميع التطبيقات تتنافس داخله تكلفة منخفضة لكل حاوية، مع تكرار إعدادات الخدمات الأساسية
التواصل بين التطبيقات شبكات Docker بسيطة ومشروعات Compose مشتركة تتطلب شبكات موجّهة وDNS وبيانات اعتماد وسياسة جدار ناري
الأنسب حزمة تطبيقات مترابطة بإحكام مع مشغّل واحد وجدول تعافٍ واحد خدمات مستقلة ذات متطلبات مختلفة من حيث المخاطر ودورة الحياة

تجعل آلة Docker الافتراضية واحدة نسخ المنصة احتياطيًا أبسط

يمكن لآلة افتراضية واحدة أن تتضمن ضيف Linux ومحرك Docker وملفات Compose والأسرار وإعدادات الوكيل وصور الحاويات ووحدات التخزين الدائمة. ويمكن لـ Proxmox نسخ الآلة الافتراضية احتياطيًا ككائن واحد، ما يجعل استبدال المضيف والتراجع الشامل سهلين عندما ينبغي إعادة الحزمة بأكملها إلى النقطة الزمنية نفسها.

يشير دليل حديث حول استعادة الآلات الافتراضية وحاويات LXC في Proxmox إلى أن استعادة حاويات LXC تكون غالبًا أخف، لأنها تؤرشف نظام ملفات الحاوية بدلًا من قرص افتراضي كامل. أما الميزة المقابلة للآلة الافتراضية فهي الاكتمال: إذ يمكن لاستعادة واحدة إعادة نظام تشغيل الضيف وبيئة Docker معًا.

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

تمنحك حاويات LXC منفصلة وحدات أصغر للفشل والاستعادة

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

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

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

-15% OFF

قد تؤدي دقة النسخ الاحتياطي إلى زيادة أعمال الاستعادة

تتيح النسخ الاحتياطية الأصغر للمشغّل الاحتفاظ بالخدمات عالية القيمة واستعادتها واختبارها بشكل منفصل. ويمكن أن يحصل LXC الخاص بـ Home Assistant على نسخ احتياطية متكررة، بينما قد تكون سياسة الاحتفاظ بلوحة معلومات قابلة للاستبدال أقصر. ويمكن لجدول النسخ الاحتياطي أن يتبع معدل التغيير وتبعاته بدلًا من معاملة كل تطبيق على قدم المساواة.

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

يمكن لـ سير عمل Proxmox Backup Server من ZimaSpace حماية كل من الأجهزة الافتراضية والحاويات. ولا يزال قرار تقسيم الحزم بيدك: حدّد الخدمات التي يجب أن تشترك في نقطة استرداد واحدة، وتلك التي ينبغي استعادتها بشكل مستقل.

تكشف التحديثات نطاق التأثير الفعلي

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

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

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

قد تحدد قواعد البيانات والوكلاء المشتركون تجميعًا أفضل من «تطبيق واحد»

غالبًا ما تصل التطبيقات في صورة عدة مكوّنات: خدمة ويب، وقاعدة بيانات، وذاكرة تخزين مؤقت، وعامل، ومجدول، ومسار وكيل. وقد يجعل تقسيم كل مكوّن إلى حاوية LXC مختلفة عملية الاسترداد العادية أصعب، لأن حالة التطبيق المتسقة تمتد عبر عدة ضيوف.

قد تكون الوحدة الأفضل حاوية LXC واحدة لكل مكدس تطبيقات، مع تشغيل Docker Compose داخل حاوية LXC هذه للمكوّنات المترابطة بشدة. وهناك خيار آخر يتمثل في آلة Docker افتراضية واحدة للخدمات المرتبطة منخفضة المخاطر، وحاويات LXC منفصلة لقواعد البيانات، أو التطبيقات العامة، أو أحمال العمل المعتمدة على العتاد.

يعكس نقاش مجتمع Proxmox حول عدد التطبيقات التي تنتمي إلى كل ضيف الواقع العملي: ينبغي أن يتبع الفصل احتياجات التبعية والأمان والاسترداد، لا عددًا موحّدًا للتطبيقات.

التخزين الدائم يحدّد ما إذا كانت النسخة الاحتياطية مكتملة

قد تلتقط نسخة الآلة الافتراضية الأقراص الافتراضية، لكنها قد تستثني نقاط ربط NAS، أو مشاركات NFS الخارجية، أو وحدات التخزين الممرَّرة، أو نسخ التطبيقات الاحتياطية المخزنة في مكان آخر. وقد تلتقط نسخة حاوية LXC نظام ملفاتها الجذرية، بينما تبقى مجموعات البيانات المرتبطة بنقاط ربط خارج الأرشيف. ولا تضمن أيٌّ من البنيتين استردادًا كاملًا لمجرد أن مهمة Proxmox أبلغت عن نجاحها.

أجرِ جردًا لملفات Compose، والأسرار، وقواعد البيانات، والمحتوى المرفوع، والشهادات، ونقاط التحميل الخارجية، ووجهات النسخ الاحتياطي. حدّد ما إذا كان كل مسار داخل نسخة الآلة الافتراضية أو حاوية LXC الاحتياطية، أو محميًا بلقطة منفصلة، أو يُعاد إنشاؤه من الإعدادات.

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

أجرِ تمرين فشل للتصميمين

  1. أدرج كل تطبيق، وكل تبعية مشتركة، وكل مسار دائم، وكل نقطة تحميل خارجية.
  2. حدّد أقصى مدة انقطاع وفقدان بيانات مقبولَين لكل خدمة.
  3. استعد آلة Docker الافتراضية بالكامل إلى معرّف ضيف جديد، وتحقّق من عمل المكدس بأكمله.
  4. استعد حاوية LXC واحدة تمثّل الحالة، من دون تغيير التطبيقات غير ذات الصلة.
  5. اختبر ترتيب بدء التشغيل، ونظام أسماء النطاقات، والشهادات، والوصول إلى قاعدة البيانات، وتوفّر نقاط التحميل.
  6. عطّل تحديثًا واحدًا لضيف عمدًا، وراقب الخدمات التي تتوقف.
  7. كرّر عملية الاستعادة باستخدام الوثائق المكتوبة فقط.

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

ما تخطيط الضيف المناسب لمكدس التطبيقات؟

متى تختار جهاز Docker افتراضيًا واحدًا؟

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

متى تختار حاوية LXC واحدة لكل تطبيق أو مكدس تطبيقات؟

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

متى تستخدم تصميمًا هجينًا؟

ضع خدمات Docker منخفضة المخاطر والمترابطة في جهاز افتراضي واحد، مع عزل التطبيقات العامة، وقواعد البيانات، وHome Assistant، أو أحمال العمل المعتمدة على الأجهزة في حاويات LXC أو أجهزة افتراضية مخصصة. ويوفر هذا عادةً حدودًا أكثر فائدة من تطبيق بنية واحدة على كل خدمة.

الأسئلة الشائعة

هل يلغي استخدام حاوية LXC واحدة لكل تطبيق الحاجة إلى Docker؟

لا. يمكن لحاوية LXC تشغيل حزمة أصلية أو استضافة مكدس Docker Compose صغير. وتحدد LXC حدود ضيف Proxmox، بينما يحدد Docker حزم التطبيقات داخل تلك الحدود. وهما يعالجان مشكلتين مختلفتين تتعلقان بالعزل والنشر.

هل يسهل نسخ جهاز افتراضي كبير واحد احتياطيًا؟

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

هل يمكن ترحيل حاويات LXC بين عُقد Proxmox؟

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

الحكم النهائي

استخدم جهازًا افتراضيًا واحدًا لـ Docker عندما تشكّل التطبيقات منصة واحدة فعلًا، وينبغي نسخها احتياطيًا وتحديثها واستعادتها معًا. واستخدم حاويات LXC منفصلة عندما تحتاج الخدمات إلى نقاط استعادة مستقلة ونطاقات فشل أصغر على مستوى الضيف. ويجمع التصميم الأقوى الخدمات وفقًا لحالتها المشتركة ومسؤولية استعادتها، بدلًا من اختيار ضيف واحد لكل أيقونة بشكل أعمى.

مقارنات المنتجات

المزيد للقراءة

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.