Docker Swarm لتحقيق إتاحة عالية



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

ما هي أهم ميزة في أي تطبيق ويب؟ هناك الكثير ، لكن بالنسبة لي توافر عالية الأكثر أهمية. هذا ما يساعدنا Docker Swarm في تحقيقه! يساعد في أن يكون التطبيق متاحًا للغاية.

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





في حالة هذه المدونة ، سيكون تطبيق Angular فقط هو Docker Swarm’ed.
ملحوظة : طريقة تعبئة تطبيق MEAN Stack هي نفسها.

إذن ، ما هو Docker Swarm؟

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



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

للأسباب المذكورة بالفعل! تحقيق توافر عالية دون أي توقف هو أولوية لكل مقدم خدمة هناك. هل التوافر العالي يثير إعجاب عملائك؟ حسنًا ، لن يتأثروا إذا واجهوا فترة توقف. وهذا هو عدم التفكير.

فوائد أخرى ل Docker Swarm

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

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



يمكنك التحقق من لا. من الحاويات التي تعمل في عقدة ، زيادة لا. من الحاويات أو خفض لا. بناءً على متطلباتنا ، بمجرد تنفيذ أمر واحد.

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

ماذا بعد؟ للقيام بما هو واضح. ابدأ مع Docker Swarm إذا كنت قد عملت بالفعل على Docker أو إذا كانت مؤسستك ترغب في توفير خدمة ويب موثوقة.

ملحوظة : يتم تثبيت محركات Docker على مضيفين / خوادم مستقلة أو في أجهزة افتراضية متعددة في مضيف.

الشروع في العمل مع وضع Swarm

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

$ docker swarm init - عنوان بروتوكول الإنترنت الخاص بالعنوان

هنا ، تُستخدم علامة '–advertise-addr' للإعلان عن نفسها للعقد الأخرى التي ترغب في الانضمام إلى المجموعة. يجب تحديد عنوان IP للمدير جنبًا إلى جنب مع العلامة. أدناه هو نموذج لقطة الشاشة.

أمر Docker init - سرب عامل الميناء - edureka

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

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

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

$ docker swarm مدير الانضمام إلى الرمز المميز

وفي وقت لاحق ، إذا كنت تريد أن ينضم الرمز المميز لعقدة إلى الكتلة ، فقم بتشغيل الأمر التالي:

عقدة الانضمام إلى رمز $ docker swarm

انطلق ، وقم بتنفيذ الرمز المميز في كل عقدة تريدها ، للانضمام إلى الكتلة. عند القيام بكل ذلك ، يمكنك تشغيل أمر docker node list للتحقق من عدد العقد التي انضمت إلى المجموعة بالإضافة إلى حالتها. الأمر هو:

عقدة عامل ميناء ls

لقطة الشاشة أدناه:

إنشاء صورة Docker لتطبيق Angular

إذا كان كل شيء على ما يرام ، فيمكننا بدء خدمة Swarm ، بشرط أن تكون صورة Docker مبنية. يمكن إنشاء صورة Docker من Dockerfile. فيما يلي ملف Dockerfile المستخدم لإنشاء التطبيقات:

من العقدة: 6 RUN mkdir -p / usr / src / app WORKDIR / usr / src / app COPY package.json / usr / src / app RUN npm cache clean RUN npm install COPY. / usr / src / app EXPOSE 4200 CMD ['npm'، 'start']

يتم استخدام Dockerfile لتنفيذ مجموعة من الأوامر معًا لبناء صورة Docker مخصصة من صورة أساسية. كما ترى ، الصورة الأساسية التي استخدمتها هي 'Node: 6'. NodeJS هي الصورة I من Docker Hub والتي تم تمييزها بالإصدار 6.

أقوم بعد ذلك بإنشاء دليل Docker جديد داخل الحاوية وجعله دليل العمل داخل الحاوية الخاصة بي.

أنا أقوم بنسخ ملف 'package.json' من جهازي المحلي إلى دليل عمل الحاوية. ثم أقوم بتحديد الأمرين 'RUN npm cache clean' و 'RUN npm install'. تثبيت npm يقوم الأمر بتنزيل إصدار التبعيات المذكورة في ملف package.json.

دالة فيبوناتشي c ++

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

الآن ، لإنشاء صورة Docker بناءً على Dockerfile هذا ، قم بتشغيل الأمر التالي:

بناء عامل ميناء الصورة الزاوية.

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

بدء خدمة Docker Swarm

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

إنشاء خدمة docker $ - اسم 'Angular-App-Container' -p 4200: 4200 زاوية صورة

هنا ، يتم استخدام علامة 'الاسم' لإعطاء اسم للخدمة الخاصة بي ويتم استخدام العلامة 'p' لفضح منفذ الحاوية إلى منفذ المضيف. في ملف package.json ، قمت بتحديد منفذ الحاوية الذي يجب استضافة تطبيق Angular عليه. ويساعد الرقم 4200 في هذا الأمر على تعيين منفذ الحاوية 4200 إلى منفذ المضيف 4200. 'الصورة الزاوية' هو اسم الصورة التي قمت بإنشائها سابقًا.

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

كيف يعقل ذلك؟ لأن Swarm يكشف داخليًا عن أرقام المنافذ التي يمكن الوصول إليها من قبل كل عقدة أخرى في المجموعة. هذا يعني ، رقم المنفذ. 4200 على أي عقدة / مدير في المجموعة سيعرض التطبيق Angular.

ماذا الآن؟ هل الحاوية نشطة؟

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

خدمة عامل ميناء $ ls

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

هنا ، تشير 'REPLICAS = 1/1' إلى أن هناك 'خدمة' واحدة لتلك الحاوية ، في المجموعة. ويشير 'MODE = تكرار' إلى أن الخدمة مكررة على جميع العقد في الكتلة.

الآن ، لتحديد العقدة / المدير ، يتم استضافة التطبيق ، يمكننا تشغيل الأمر docker service ps متبوعًا باسم الحاوية. الأمر هو:

$ docker service ps Angular-App-Container

لقطة الشاشة لنفسه أدناه.

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

يلقي الأمر 'docker ps' الضوء على تفاصيل الحاوية النشطة. الأمر هو:

$ عامل ميناء ملاحظة

انظر إلى لقطة الشاشة أدناه للرجوع إليها.

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

للتحقق من عدد العقد قيد التشغيل ، قم بتشغيل أمر قائمة العقد. الأمر هو:

عقدة عامل ميناء ls

للتحقق من الحاويات التي تعمل في مضيف معين ، قم بتشغيل الأمر node ps. الأمر هو:

$ عقدة عامل ميناء ps

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

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

الأمر لذلك هو:

$ docker service rm Angular-App-Container

أمر تدوير الحاوية في الوضع العام هو:

إنشاء خدمة docker $ - اسم 'Angular-App-Container' -p 4200: 4200 - وضع صورة زاوية عالمية

سيؤدي هذا إلى إنشاء 3 خدمات على العقد الثلاثة في مجموعتنا. يمكنك التحقق من ذلك عن طريق تشغيل أمر docker service list. لقطة الشاشة أدناه.

عند تنفيذ أمر docker service ps ، سترى شيئًا كالتالي:

كما ترى ، تقول أن الوضع مكرر وأن النسخ المتماثلة لهذه الحاوية هي 3. الآن يأتي أفضل جزء من هذه المدونة.

للحصول على نسختين متماثلتين من الخدمات تعملان بين الحاويات الثلاثة ، يمكننا استخدام علامة النسخ المتماثلة. انظر إلى الأمر أدناه:

إنشاء خدمة docker $ - اسم 'Angular-App-Container' -p 4200: 4200 - النسخ المتماثلة = 2 صورة الزاوية

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

من عقدة العامل ، يمكنك التحقق من تشغيل الحاوية عن طريق تنفيذ الأمر 'docker ps'.

Docker Swarm من أجل التوفر العالي

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

$ docker stop Angular-App-Container

قم بتشغيل الأمر أعلاه على العقدة: Worker-1 حيث يتم تشغيل الحاوية.من المدير ، قم بتشغيل الأمر:

$ docker service ps Angular-App-Container

ستلاحظ الآن أن الحاوية تعمل الآن في العقدة: Worker-2 و Manager. ومع ذلك ، فقد تم إيقاف تشغيله من العقدة: Worker-1. نفس الشيء مرئي من لقطة الشاشة أدناه.

هذه هي الطريقة توافر عامل ميناء عالي يتحقق. أناn على الرغم من كون الحاوية غير نشطة في Worker-1 ، يمكن تقديم التطبيق في المنفذ رقم 4200 على تلك العقدة العاملة. هذا لأنه متصل داخليًا بالعقد الأخرى في المجموعة وهو قادر على عرض التطبيق في المتصفح.

توافر عالي بعد توسيع نطاق الخدمات

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

نوع بيانات SQL للتاريخ

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

مقياس خدمة docker $ Angular-App-Container = 5

لقطة الشاشة أدناه.

من خلال تشغيل أمر قائمة خدمة docker ، يمكنك ملاحظة أن عدد النسخ المتماثلة هو الآن 5. ومن خلال تشغيل أمر docker service ps مع اسم الخدمة ، يمكنك رؤية كيفية موازنة تحميل الخدمات الخمس وتوزيعها على العقد الثلاثة . الأوامر هي:

خدمة docker $ ls $ docker service ps Angular-App-Container

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

تحديث عقدة docker $ - مدير استنزاف التوفر -1

يمكنك التحقق مما إذا كان المدير يشارك الآن في الكتلة عن طريق تشغيل أمر docker node list وأمر docker service ps:

عقدة docker $ ls $ docker service ps Angular-App-Container

يمكنك الآن ملاحظة أن خدمات الحاوية قد تم تقسيمها بين عقد العامل وأن عقدة المدير قد تم استنزافها بالفعل من حاوية أي خدمة. لقطة الشاشة أدناه.

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

يمكنك بدلاً من ذلك مشاهدة الفيديو أدناه لفهم كيفية عمل Docker Swarm. تم تغطية جميع المفاهيم الموضحة أعلاه في الفيديو.

Docker Swarm من أجل التوفر العالي | برنامج Docker التعليمي | برنامج DevOps التعليمي

الآن بعد أن تعرفت على Docker ، تحقق من ملف من Edureka ، شركة تعليمية موثوقة عبر الإنترنت مع شبكة تضم أكثر من 250.000 متعلم راضٍ منتشرين في جميع أنحاء العالم تساعد الدورة التدريبية لشهادة Edureka Docker المتعلمين على اكتساب الخبرة في تنفيذ Docker وإتقانه.

لديك سؤال لنا؟ يرجى ذكر ذلك في قسم التعليقات وسنعاود الاتصال بك.