إذا كنت تقوم بتعبئة سير عمل التطوير الخاص بك ، فستوافق على أن Docker هو أحد أفضل الخيارات للتحكم في الإصدار. ومع ذلك ، فإن Docker Swarm هي إحدى ميزات Docker المستخدمة لتنظيم التطبيقات المعقدة.

قد يكون من الصعب كسر آلية عمل Docker Swarm في البداية. لكن لا تقلق ، سنقوم بتفصيلها في هذه المقالة. إذن ما هو Docker Swarm؟ لماذا نستخدمه؟ وكيف يعمل؟

ما هو Docker Swarm وكيف يعمل؟

يشير Docker Swarm إلى مجموعة من مضيفي Docker (أجهزة الكمبيوتر) المتصلين بالشبكة كمجموعة لتقديم مهام محددة. كل مضيف Docker في هذه المجموعة هو عقدة ، تسمى أيضًا عقدة عاملة.

لضمان التوزيع الفعال للمهام ، تحتاج إلى عقدة مدير. من الناحية المثالية ، تبدأ تهيئة وضع Docker Swarm مع عقدة المدير ، وتصبح العقد اللاحقة عمال.

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

ومع ذلك ، يمكن لعقدة المدير أيضًا المشاركة في تنفيذ المهمة (كعامل) أو مواجهة الإدارة بشكل مباشر. يمكنك منع جدولة المهام على المدير عن طريق تبديل حالتها من

instagram viewer
نشيط إلى بالُوعَة. لكن قرارك بتعيين هذه الوظيفة المزدوجة قد يعتمد على عدة عوامل. بشكل أساسي ، تريد التأكد من أن لديه موارد كافية للتعامل مع العديد من الأدوار قبل القيام بذلك.

العقد تفشل. لذا فإن عقدة المدير تراقب بنشاط حالة كل عقدة عاملة وتنشط آلية تحمل الفشل لإعادة جدولة المهمة من عقدة فاشلة إلى أخرى.

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

يتمثل الأسلوب الآمن من الفشل لمنع ذلك في تعيين دور المدير للعديد من العقد (يوصي Docker بحد أقصى سبعة لكل مجموعة). يمكنك بعد ذلك تحديد عقدة المدير الأساسي منها. عندما يتعطل المدير الأساسي ، يتولى أحد المديرين الاحتياطيين الدور.

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

لماذا تستخدم Docker Swarm؟

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

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

تتيح هذه السمة القابلة للتطوير لـ Docker Swarm أن تكون التطبيقات متاحة باستمرار بدون أي تأخير. إنه حتى أحد الأسباب التي تريدها اختر Docker بدلاً من أدوات المحاكاة الافتراضية الأخرى.

وما هو أكثر؟ على عكس حاويات Docker الفردية ، حيث تتوقف الحاوية عند فشلها ، يقوم Docker Swarm تلقائيًا بإعادة توزيع المهام بين عقد العمال المتاحة عند فشل أحدها.

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

من المهم أيضًا الإشارة إلى أن التفاعل بين عقدة المدير وعقد العامل آمن.

يوجد في Docker العديد من البدائل، وأحد أقربها هو Kubernetes. ومع ذلك ، فإن Docker Swarm سهل الاستخدام وأكثر آلية. على سبيل المثال ، بينما قد تحتاج إلى موازنة التحميل يدويًا في بعض أدوات التنسيق الأخرى مثل Kubernetes ، يتميز Docker Swarm بموازنة تحميل تلقائية ، مما يجعل الحياة سهلة لـ DevOps.

العمارة Docker Swarm

تدور بنية Docker Swarm حول الخدمات والعقد والمهام. ومع ذلك ، لكل منها دور يلعبه في تشغيل المكدس بنجاح.

خدمات

تفاصيل خدمة Docker Swarm تكوين صورة Docker التي تدير جميع الحاويات في سرب. يتضمن معلومات حول المهام في الكتلة. على سبيل المثال ، قد تصف الخدمة أ إعداد خادم SQL المرسى.

عندما تقوم بتشغيل خدمة ، فإنها تجبر عقدة المدير على المزامنة مع تكويناتها. ثم تقوم عقدة المدير بتشغيل بقية العقد العاملة بناءً على الإعدادات المحددة في الخدمة.

يمكن أن تكون الخدمات في Docker Swarm عامة أو مكررة.

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

العقد

العقدة في Docker Swarm هي مثيل لوقت تشغيل Docker بالكامل ، والمعروف أيضًا باسم محرك Docker. يمكن أن تكون عُقد السرب آلات مادية أو افتراضية. فكر في هذا على أنه شبكة من أجهزة الكمبيوتر التي تقوم بتشغيل عمليات مماثلة (حاويات).

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

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

مهام

تحدد المهمة العمل المعين لكل عقدة في Docker Swarm. في الخلفية ، تبدأ جدولة المهام في Docker Swarm عندما ينشئ المنسق المهام ويمررها إلى المجدول ، الذي ينشئ حاوية لكل مهمة.

ثم تستخدم عقدة المدير المجدول لتعيين وإعادة تعيين المهام إلى العقد كما هو مطلوب ومحدّد في خدمة Docker.

Docker Swarm vs. Docker Compose: ما هي الاختلافات؟

غالبًا ما يستخدم الأشخاص Docker Compose و Docker Swarm بالتبادل. على الرغم من أن كلاهما يتضمن تشغيل عدة حاويات ، إلا أنهما مختلفان.

بينما يتيح لك Docker Compose تشغيل عدة حاويات على مضيف واحد ، يقوم Docker Swarm بتوزيعها على عدة محركات Docker في مجموعة.

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

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

وبالتالي ، بينما قد يكون لديك وقت تعطل في Docker Compose ، يضمن Docker Swarm استمرار تشغيل تطبيقك بمساعدة خوادم النسخ الاحتياطي (العقد العاملة). ومع ذلك ، يدعم Docker 1.13 نشر Docker Compose في وضع Swarm باستخدام ملف نشر كومة عامل ميناء يأمر.

يساعدك Docker Swarm على نشر التطبيقات المعقدة

تفوقت الحاويات على الأجهزة الافتراضية في تصميم برامج التكامل المستمر والتسليم المستمر (CI / CD). لذلك ، فإن فهم التفاصيل الدقيقة لآلية Docker Swarm يعد مهارة إضافية إذا كنت تتطلع إلى أن تصبح خبيرًا لا يقدر بثمن في DevOps.

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