داکر سوآرم چیست؟ مقایسه Docker Swarm و کوبرنتیز
داکر سوآرم ابزاری برای مدیریت گروهی از کانتینرها در قالب یک مجموعهی هماهنگ است. این ابزار به توسعهدهندگان اجازه میدهد تا چندین سرور را بهصورت یک سیستم واحد کنترل کنند و اجرای برنامههای کانتینری را در مقیاس بزرگ آسانتر سازند. هدف اصلی داکر سوارم این است که بتوانید چندین کانتینر را روی چند میزبان بهصورت خودکار و پایدار اجرا کنید، بدون اینکه نگران پیچیدگی تنظیمات دستی باشید. در این نوشته از مجله ویپیاس مارکت به زبان ساده توضیح میدهیم که داکر سوآرم چیست، چه کاربردهایی دارد و چگونه میتوان با استفاده از آن یک سرویس وب را راهاندازی کرد.
داکر سوارم چیست؟
داکر سوارم (Docker Swarm) یکی از ابزارهای رسمی شرکت Docker برای ارکستراسیون کانتینرها است. این ابزار امکان میدهد چند ماشین فیزیکی یا مجازی را به هم متصل کرده و بهعنوان یک خوشه (Cluster) واحد مدیریت کنید. در این خوشه، هر ماشین بهعنوان یک «گره» (Node) شناخته میشود و با سایر گرهها در ارتباط است. در نتیجه، چندین سرور یا ماشین میتوانند با همکاری هم، بار پردازش را میان خود تقسیم کنند تا کارایی و در دسترس بودن سرویسها افزایش یابد.
در حالت کلی، داکر سوآرم از دو نوع گره تشکیل میشود:
- گره مدیر (Manager Node) که مسئول هماهنگی، زمانبندی وظایف و کنترل کل خوشه است.
- گره کارگر (Worker Node) که وظیفهی اجرای کانتینرها را بر عهده دارد و دستورات را از گره مدیر دریافت میکند.
داکر سوارم بخشی از خود داکر انجین (Docker Engine) است و از نسخهی 1.12 به بعد بهصورت داخلی در آن وجود دارد. این یعنی برای استفاده از قابلیت Swarm نیازی به نصب نرمافزار جداگانه نیست و تنها با اجرای فرمان سادهی docker swarm init میتوان خوشه را راهاندازی کرد.
داکر سوارم همچنین از مفهوم «سرویس» (Service) برای مدیریت کانتینرها استفاده میکند. هر سرویس میتواند شامل چند «تسک» (Task) باشد که در واقع همان نمونههای فعال از کانتینر هستند. این معماری کمک میکند تا اگر یکی از گرهها از دسترس خارج شود، سرویسها بهصورت خودکار در گرههای دیگر اجرا شوند و سیستم دچار اختلال نشود.
ویژگیهای داکر سوآرم
داکر سوآرم مجموعهای از قابلیتها را در خود دارد که هدف آن سادهسازی اجرای برنامههای کانتینری در مقیاس بزرگ است. در واقع این ابزار، هماهنگی بین گرهها و تقسیم درست بار کاری را ممکن میسازد تا کارایی سیستم حفظ شود و خطاهای احتمالی کاهش یابد. مهمترین ویژگیهای Docker Swarm در ادامه آمده است.
۱ـ مدیریت خوشه به صورت ساده
داکر سوارم به طور مستقیم در Docker Engine ادغام شده است. بنابراین برای ایجاد خوشه یا مدیریت آن نیازی به نرمافزار جانبی نیست و همهچیز از طریق همان رابط خط فرمان Docker انجام میشود.
۲ـ مقیاسپذیری سریع
میتوان تعداد کانتینرهای هر سرویس را تنها با یک دستور افزایش یا کاهش داد. این ویژگی در زمانهایی که ترافیک بالا یا پایین میرود اهمیت زیادی دارد.
۳ـ شبکهسازی چندمیزبانی
داکر سوارم از شبکههای Overlay پشتیبانی میکند. این یعنی کانتینرها در گرههای مختلف میتوانند مثل کانتینرهای یک میزبان با هم ارتباط داشته باشند.
۴ـ توازن بار خودکار
این ابزار بهصورت خودکار درخواستهای ورودی را بین کانتینرهای فعال پخش میکند تا هیچ گرهای بیش از حد تحت فشار قرار نگیرد.
۵ـ بازیابی خودکار
اگر یکی از گرهها از کار بیفتد، داکر سوارم بهصورت خودکار کانتینرهای از دسترفته را در گرههای دیگر ایجاد میکند.
۶ـ امنیت بالا
ارتباط بین گرهها در Docker Swarm از طریق رمزنگاری TLS انجام میشود و هر گره پیش از پیوستن به خوشه باید احراز هویت شود.
۷ـ بروزرسانی و بازگشت آسان
هنگام تغییر در پیکربندی، داکر سوارم بهصورت خودکار سرویسهای قدیمی را متوقف و نسخهی جدید را اجرا میکند. در صورت بروز مشکل هم میتوان با یک دستور به حالت قبل بازگشت.
این ویژگیها باعث شدهاند که Docker Swarm به گزینهای مناسب برای سازمانهایی تبدیل شود که به دنبال راهکاری ساده و در عین حال پایدار برای مدیریت چندین کانتینر هستند.
کاربردهای داکر سوارم
داکر سوآرم در پروژههای مختلف کاربرد دارد، بهویژه در محیطهایی که نیاز به اجرای پایدار و خودکار چندین سرویس وجود دارد. به طور خلاصه، این ابزار برای هماهنگسازی و مقیاسدهی سیستمهای کانتینری بهکار میرود. برخی از مهمترین کاربردهای آن در ادامه بحث شده است.
۱ـ استقرار و مدیریت برنامههای چندلایه
با داکر سوارم میتوان بخشهای مختلف یک برنامه مانند پایگاه داده، API و رابط کاربری را در گرههای جداگانه اجرا کرد و همه را از یک نقطه کنترل نمود.
۲ـ راهاندازی محیطهای آزمایشی و توسعه
تیمهای توسعه میتوانند با استفاده از داکر سوارم، نسخههای مختلفی از برنامه را در محیطهای مجزا و قابلحذف سریع اجرا کنند.
۳ـ تضمین دسترسی بالا (High Availability)
در صورت بروز خطا در یک سرور، سایر گرهها بلافاصله وظایف آن را بر عهده میگیرند تا سرویس بدون توقف در دسترس بماند.
۴- توزیع بار ترافیکی
داکر سوارم بهصورت خودکار ترافیک را بین چندین کانتینر پخش میکند تا فشار بر روی یک سرور متمرکز نشود.
۵ـ اجرای برنامهها در زیرساختهای ابری
بسیاری از شرکتها از Docker Swarm برای مدیریت سرویسهای ابری استفاده میکنند، چون میتواند بدون نیاز به تنظیمات پیچیده در سرورهای مجازی هم اجرا شود.
آموزش ایجاد یک سرویس وب با Docker Swarm (راهنمای ساده و سریع)
برای درک بهتر نحوهی عملکرد داکر سوارم، در این بخش مراحل ایجاد یک سرویس وب واقعی را گامبهگام مرور میکنیم. در این آموزش از یک سرور مجازی یا محیط ابری مثل AWS استفاده میشود؛ اما مراحل در تمام پلتفرمها مشابه است.
برای استفاده از داکر سوآرم، باید ابتدا با اصول اولیه داکر آشنا باشید. در مطلب داکر چیست بهطور کامل درباره این فناوری توضیح دادهایم.
گام ۱: آمادهسازی سرورها و نصب Docker
ابتدا لازم است سه ماشین لینوکسی (مثلاً Ubuntu) در اختیار داشته باشید: یکی برای گره مدیر (Manager Node) و دو تا برای گرههای کارگر (Worker Nodes). در هر ماشین، داکر را نصب کنید. میتوانید با استفاده از کد زیر، نصب را بهصورت خودکار انجام دهید:
#!/bin/bash sudo apt-get update -y && sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository -y "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt-get update -y sudo apt-get install -y docker-ce sudo systemctl start docker sudo systemctl enable docker sudo usermod -aG docker "${USER}"
پس از اجرا، سرویس Docker فعال میشود و آمادهی ورود به حالت سوارم است.
گام ۲: راهاندازی حالت Swarm در گره مدیر
در سرور اصلی یا همان گره مدیر، فرمان زیر را اجرا کنید تا حالت سوارم فعال شود:
docker swarm init
با اجرای این دستور، گره فعلی بهعنوان مدیر خوشه شناخته میشود و یک توکن (Token) برای اضافه کردن سایر گرهها تولید خواهد شد.
گام ۳: اضافه کردن گرههای کارگر به خوشه
در دو سرور دیگر که قرار است گره کارگر باشند، از همان توکنی که مرحله قبل دریافت کردید استفاده کنید و فرمان زیر را اجرا نمایید:
docker swarm join --token [your-token] [manager-ip]:2377
با این کار، هر دو گره به خوشه متصل میشوند و از این پس تمام فرمانها از طریق گرهی مدیر کنترل خواهند شد.
گام ۴: ایجاد سرویس وب در خوشه
اکنون وقت آن است که یک برنامهی واقعی را در خوشه اجرا کنید. فرض کنیم میخواهید یک وبسرور جاوا یا Nginx را راهاندازی کنید. کافی است دستور زیر را در گره مدیر بنویسید:
docker service create --name mywebapp -p 8080:8080 bnvschaitanya/java-web-app
با این فرمان، یک سرویس جدید با نام mywebapp ایجاد میشود و روی پورت 8080 در حال اجرا خواهد بود. این سرویس بهصورت خودکار بین گرههای کارگر تقسیم میشود.
گام ۵: افزایش تعداد نمونههای سرویس (Scaling)
برای افزایش تعداد کانتینرهای فعال این سرویس، از دستور زیر استفاده کنید:
docker service scale mywebapp=4
این دستور باعث میشود تعداد نمونههای فعال به ۴ عدد برسد و داکر سوارم بهصورت خودکار آنها را بین گرهها توزیع کند.
گام ۶: بررسی وضعیت خوشه و سرویسها
برای اطمینان از عملکرد صحیح، وضعیت سرویسها و گرهها را بررسی کنید:
docker service ls docker node ls
گام ۷: دسترسی به سرویس از مرورگر
اکنون میتوانید با وارد کردن آدرس IP یکی از سرورهای خوشه در مرورگر و پورت 8080، به برنامهی خود دسترسی پیدا کنید. برای نمونه:
http://54.163.46.161:8080
اگر یکی از گرهها از کار بیفتد، داکر سوارم بهصورت خودکار نمونههای جدیدی از سرویس را روی گرههای فعال اجرا میکند تا برنامه بدون وقفه در دسترس بماند.
اگر قصد دارید داکر سوآرم را در محیطی ابری پیادهسازی کنید، پیشنهاد میشود از سرور مجازی آمریکا با منابع اختصاصی و IP ثابت استفاده کنید.
مزایا و معایب داکر سوارم
Docker Swarm همانطور که دیدیم ابزاری قدرتمند برای مدیریت کانتینرهاست؛ اما مانند هر فناوری دیگری نقاط قوت و محدودیتهای خود را دارد. آشنایی با این موارد کمک میکند تا بتوان تصمیم درستی درباره انتخاب آن برای پروژههای مختلف گرفت.
مزایا Docker Swarm شامل موارد زیر است:
- نصب و راهاندازی سریع و آسان بدون نیاز به نرمافزار جانبی.
- ادغام کامل با Docker Engine و سازگاری با تمام ابزارهای Docker.
- پشتیبانی از مقیاسپذیری افقی برای افزایش یا کاهش تعداد کانتینرها تنها با یک دستور.
- قابلیت بازیابی خودکار سرویسها در صورت خرابی گرهها برای حفظ دسترسی بالا.
- پشتیبانی از شبکههای چندمیزبانی و توازن بار داخلی برای توزیع ترافیک.
- بهروزرسانی و بازگشت نسخهها بدون نیاز به توقف سرویسها.
همچنین معایب Docker Swarm شامل موارد زیر است:
- در پروژههای بسیار بزرگ نسبت به کوبرنتیز امکانات محدودتری دارد.
- فاقد برخی قابلیتهای پیشرفته مانند مانیتورینگ داخلی و خودکارسازی پیچیده.
- جامعه کاربری و پشتیبانی رسمی کمتر از کوبرنتیز است.
- در محیطهای ابری با مقیاس بسیار بالا ممکن است نیاز به تنظیمات دستی بیشتری داشته باشد.
مقایسه داکر سوارم با کوبرنتیز
هر دو ابزار داکر سوارم و کوبرنتیز برای مدیریت و هماهنگی کانتینرها طراحی شدهاند، اما رویکرد آنها متفاوت است. داکر سوارم بر سادگی و سرعت تمرکز دارد، در حالی که کوبرنتیز برای کنترل دقیقتر و مقیاسپذیری بسیار بزرگ ساخته شده است.
در جدول زیر تفاوتهای اصلی این دو ابزار نشان داده شده است:
| ویژگی | Kubernetes | Docker Swarm |
| ماهیت و هدف | کوبرنتیز یک پلتفرم متنباز برای مدیریت و استقرار گروهی از کانتینرهاست. | داکر سوارم ابزاری سبک و ساده برای هماهنگی و اجرای کانتینرهاست. |
| نحوهی استفاده | معمولاً در کنار Docker برای کنترل بهتر و اجرای دقیقتر برنامههای کانتینری استفاده میشود. | در داکر سوارم، چندین کانتینر میتوانند روی یک سختافزار واحد با بهرهوری بالا اجرا شوند. |
| الگوی استقرار | برنامهها در قالب پاد (Pod)، دیپلویمنت (Deployment) و سرویسها اجرا میشوند. | برنامهها بهصورت سرویس (Service) مستقر میشوند. |
| مقیاسپذیری خودکار | از مقیاسپذیری خودکار پیشرفته پشتیبانی میکند. | از مقیاسپذیری پشتیبانی دارد اما به اندازه کوبرنتیز کارآمد نیست. |
| بررسی سلامت سیستم | شامل دو نوع بررسی سلامت است: Liveness و Readiness. | بررسی سلامت در سطح سرویس انجام میشود. |
| نصب و پیکربندی | راهاندازی آن دشوارتر است و نیاز به تنظیمات دقیق دارد. | نصب و راهاندازی بسیار سادهتر است و تنها با چند دستور انجام میشود. |
| مستندات و راهنما | مستندات رسمی دارد اما گستردگی آن کمتر از داکر سوارم است. | مستندات داکر سوارم کاملتر، کاربردیتر و شامل آموزشهای گامبهگام است. |
| دسترسی و اجرای دستورات | نصب و کار با آن پیچیدهتر و نیازمند دانش فنی بالاتر است. | با دستورات کمتر و سادهتر روی ماشین مجازی یا فضای ابری اجرا میشود. |
| نمونه شرکتهای استفادهکننده | Azure، Buffer، Intel، Evernote و Shopify از کوبرنتیز استفاده میکنند. | Citizens Bank و MetLife از داکر سوارم بهره میبرند. |
جمعبندی
در مطلب فوق از مجله ویپیاس مارکت یاد گرفتیم که Docker Swarm چیست. داکر سوآرم ابزاری یکپارچه برای مدیریت، هماهنگی و مقیاسدهی به کانتینرهاست که در خود Docker Engine تعبیه شده است. این ابزار با فراهمکردن امکاناتی مانند توازن بار خودکار، بازیابی سریع پس از خرابی، و مقیاسپذیری پویا، به توسعهدهندگان کمک میکند تا سرویسهای خود را بهصورت پایدار و قابلاعتماد اجرا کنند.
سادگی در نصب و اجرا باعث شده داکر سوارم انتخاب محبوبی برای تیمهایی باشد که بهدنبال راهحلی سریعتر از کوبرنتیز هستند. با این حال، برای پروژههای سازمانی با مقیاس بزرگ و نیازهای پیچیده، کوبرنتیز همچنان گزینهی کاملتری است. در نهایت انتخاب بین این دو ابزار بستگی به اندازه پروژه، منابع در دسترس و میزان تخصص تیم فنی دارد.
سوالات متداول
داکر سوآرم چیست؟
داکر سوآرم یک ابزار هماهنگکننده کانتینر است که چندین سرور را بهصورت یک مجموعه واحد مدیریت میکند و امکان اجرای همزمان چندین کانتینر را فراهم میسازد.
تفاوت بین داکر سوآرم و کوبرنتیز در چیست؟
داکر سوآرم سادهتر و سریعتر راهاندازی میشود و برای پروژههای متوسط مناسب است، در حالی که کوبرنتیز امکانات پیشرفتهتری برای مدیریت در مقیاس بزرگ دارد.
چگونه داکر سوآرم را نصب کنم؟
برای فعالسازی کافی است Docker Engine را نصب کرده و در خط فرمان دستور docker swarm init را اجرا کنید. سپس گرههای دیگر را با توکن تولیدشده به خوشه اضافه کنید.
آیا Docker Swarm برای پروژههای بزرگ مناسب است؟
برای پروژههای متوسط و کوچک بسیار مناسب است. اما در پروژههای سازمانی بزرگ با نیازهای مقیاس بالا، کوبرنتیز گزینهی بهتری محسوب میشود.








