خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

Docker Swarm Mode چیست و چگونه کار می کند؟

درک مکانیسم کار Docker Swarm می تواند چالش برانگیز باشد. با این حال، ما در این مقاله موارد را برای شما تفکیک کرده ایم.

اگر گردش کار توسعه خود را کانتینرینگ کرده اید، موافقت خواهید کرد که Docker یکی از بهترین گزینه ها برای کنترل نسخه است. با این حال، Docker Swarm یکی از ویژگی های Docker است که برای هماهنگ کردن برنامه های پیچیده استفاده می شود.

شکستن مکانیسم کار Docker Swarm در ابتدا ممکن است سخت باشد. اما نگران نباشید، در این مقاله آن را بررسی می کنیم. بنابراین Docker Swarm چیست؟ چرا از آن استفاده کنید؟ و این چطوری کار می کند؟

Docker Swarm چیست و چگونه کار می کند؟

Docker Swarm به گروهی از هاست‌های Docker (رایانه‌ها) اشاره دارد که به صورت یک خوشه شبکه‌ای شده‌اند تا وظایف مشخص‌شده را ارائه دهند. هر میزبان Docker در این خوشه یک گره است که گره کارگر نیز نامیده می شود.

برای اطمینان از توزیع کارآمد وظایف، به یک گره مدیر نیاز دارید. در حالت ایده آل، مقداردهی اولیه حالت Docker Swarm با گره مدیر شروع می شود و گره های بعدی کارگر می شوند.

به عنوان اپراتور، فقط باید با گره مدیر تعامل داشته باشید، که دستورالعمل ها را به کارگران ارسال می کند. همواره گره های کارگر تخصیص وظیفه را از گره مدیر دریافت می کنند و بر این اساس آنها را اجرا می کنند.

با این حال، گره مدیر همچنین می تواند در اجرای وظایف (به عنوان یک کارگر) شرکت کند یا به صورت مستقیم با مدیریت مواجه شود. می‌توانید با تغییر وضعیت مدیر از حالت فعال به تخلیه، از زمان‌بندی کار در مدیر جلوگیری کنید. اما تصمیم شما برای اختصاص این عملکرد دوگانه ممکن است به عوامل مختلفی بستگی داشته باشد. اساساً، می‌خواهید قبل از انجام این کار مطمئن شوید که منابع کافی برای انجام چندین نقش را دارد.

گره ها شکست می خورند. بنابراین گره مدیر به طور فعال وضعیت هر گره کارگر را نظارت می کند و مکانیزم تحمل شکست را فعال می کند تا کار را از یک گره شکست خورده به گره دیگر برنامه ریزی کند.

اما اگر گره مدیر نیز از کار بیفتد چه؟ جالب اینجاست که این ازدحام به دویدن ادامه می دهد. تنها مشکل این است که دیگر نمی توانید با گره مدیر برای کنترل خوشه ارتباط برقرار کنید.

روش متداول بدون خطر برای جلوگیری از این امر، اختصاص نقش مدیر به بسیاری از گره‌ها است (داکر حداکثر هفت مورد را در هر خوشه توصیه می‌کند). سپس می توانید گره مدیر اصلی را از بین آنها انتخاب کنید. هنگامی که مدیر اصلی از کار می افتد، یکی از مدیران آماده به کار نقش را بر عهده می گیرد.

مطلب مرتبط:   چگونه یک مهندس یادگیری ماشین شویم: راهنمای مبتدی

با این حال، لازم نیست نگران تغییر نقش در میان گره ها یا نگهداری حالت در یک خوشه باشید. الگوریتم اجماع raft (روشی مقاوم در برابر خطا) که در 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 را آسان می کند.

مطلب مرتبط:   نحوه Dockerize کردن یک Node.js REST API

معماری ازدحام Docker

طرح های سه بعدی چرخ در پس زمینه ای درخشان

معماری Docker Swarm حول محور خدمات، گره ها و وظایف می چرخد. با این حال، هر کدام نقشی در اجرای موفقیت آمیز پشته دارند.

خدمات

سرویس Docker Swarm پیکربندی تصویر Docker را که همه کانتینرها را در یک گروه اجرا می کند، جزئیات می دهد. این شامل اطلاعات مربوط به وظایف در یک خوشه است. به عنوان مثال، یک سرویس ممکن است تنظیمات سرور SQL Dockerized را توصیف کند.

هنگامی که یک سرویس را اجرا می کنید، گره مدیر را وادار می کند تا با تنظیمات آن همگام شود. سپس گره مدیر بقیه گره های کارگر را بر اساس تنظیمات مشخص شده در سرویس اجرا می کند.

خدمات در Docker Swarm می تواند جهانی یا تکراری باشد.

تفاوت بین آنها در این است که در حالی که سرویس های جهانی تنها یک وظیفه را برای همه گره های یک خوشه تعریف می کنند، سرویس های تکراری تعداد وظایف هر گره را مشخص می کنند.

گره ها

یک گره در Docker Swarm نمونه ای از کل زمان اجرای Docker است که به عنوان موتور داکر نیز شناخته می شود. گره های Swarm می توانند ماشین های فیزیکی یا مجازی باشند. به این به عنوان شبکه ای از رایانه ها فکر کنید که فرآیندهای مشابه (کانتینرها) را اجرا می کنند.

گرچه معمولاً، گره‌ها بر روی چندین رایانه و سروری که موتور داکر را در برنامه‌های کاربردی واقعی اجرا می‌کنند، قرار دارند. و همانطور که قبلا ذکر شد، یک گره بسته به نقش می تواند یک گره مدیر یا کارگر باشد.

گره مدیر به ضربان قلب ازدحام گوش می دهد و گره های کارگر را کنترل می کند، که وظایف محول شده توسط گره مدیر را به آنها انجام می دهند. همانطور که قبلا گفته شد، می توانید بیش از یک گره مدیر در یک گروه داشته باشید. اما در حالت ایده آل، سعی کنید تعداد را به کمتر از هفت محدود کنید، زیرا اضافه کردن تعداد زیادی گره مدیر ممکن است عملکرد ازدحام را کاهش دهد.

وظایف

یک وظیفه، کار اختصاص داده شده به هر گره در Docker Swarm را تعریف می کند. در پس‌زمینه، زمان‌بندی کار در Docker Swarm زمانی شروع می‌شود که یک ارکستر، وظایفی را ایجاد می‌کند و آن‌ها را به یک زمان‌بندی ارسال می‌کند، که یک ظرف برای هر کار نمونه‌سازی می‌کند.

سپس گره مدیر از زمانبندی برای تخصیص و تخصیص مجدد وظایف به گره ها در صورت نیاز و مشخص شده در سرویس Docker استفاده می کند.

مطلب مرتبط:   چگونه نمودارها را به برنامه React خود اضافه کنید

Docker Swarm در مقابل Docker Compose: تفاوت‌ها چیست؟

مردم اغلب از Docker Compose و Docker Swarm به جای یکدیگر استفاده می کنند. اگرچه هر دو شامل اجرای چندین کانتینر هستند، اما متفاوت هستند.

در حالی که Docker Compose به شما امکان می دهد چندین کانتینر را روی یک میزبان واحد اجرا کنید، Docker Swarm آنها را در چندین موتور داکر در یک کلاستر توزیع می کند.

زمانی از Docker Compose استفاده می‌کنید که نیاز به چرخش کانتینرهای جداگانه برای هر سرویس در برنامه خود دارید. بنابراین، وقتی یک جزء خراب می شود، با بقیه تداخلی ایجاد نمی کند. با این حال، هنگامی که دستگاه میزبان از کار می افتد، کل برنامه نیز از کار می افتد.

با این حال، Docker Swarm به شما کمک می کند تا کانتینرهای زیادی را روی گره های خوشه ای اجرا کنید. بنابراین، هر جزء از برنامه شما روی چندین گره قرار می گیرد. و هنگامی که یک گره که یک جزء برنامه را مدیریت می کند خراب می شود، ازدحام وظیفه خود را به گره دیگری در خوشه اختصاص می دهد و وظایف در حال اجرا را مجدداً برنامه ریزی می کند و از خرابی جلوگیری می کند.

از این رو، در حالی که ممکن است در Docker Compose زمان خرابی داشته باشید، Docker Swarm تضمین می‌کند که برنامه شما با کمک سرورهای پشتیبان (گره‌های کارگر) در حال اجرا است. با این حال، Docker 1.13 از استقرار Docker Compose در حالت Swarm با استفاده از دستور استقرار docker stack پشتیبانی می‌کند.

Docker Swarm به شما کمک می کند تا برنامه های پیچیده را استقرار دهید

Containerization ماشین های مجازی را در طراحی نرم افزار یکپارچه سازی پیوسته و تحویل پیوسته (CI/CD) غلبه کرده است. بنابراین، اگر به دنبال تبدیل شدن به یک متخصص ارزشمند DevOps هستید، درک دقیق مکانیزم Docker Swarm یک مهارت مثبت است.

احتمالاً می دانید که چگونه یک ظرف Docker را بچرخانید یا حتی یک Docker Compose را برای چندین کانتینر در یک میزبان اجرا کنید. اما Docker Swarm برای استقرار برنامه‌هایی با معماری پیچیده راحت‌تر است. فرآیندها را به واحدها تقسیم می کند، دسترسی به زمان اجرا را بهبود می بخشد و احتمال خرابی را کاهش می دهد یا حتی از بین می برد.