docker swarm

داکر SWRM یک کلاستره که توسط داکر در اختیارمون گذاشته شده

(کلاستر کارش اینه اگر یک سرویس داریم از اون چندین جای مختلف راه اندازی می‌کنیم و کلاستر در صورت غیر فعال شدن یکی از سرویس دهنده ها خود بخود درخواست هارو به بقیه سیستم ها منتقل می‌کنه که در واقع باعث میشه سرویسمون هیچوقت غیر فعال نشه)

توی SWARM ما یک سرویس رو روی چندین CONTAINER و چندین سیستم راه اندازی میکنیم تا تحمل خطا خیلی بالاتر بره

بعد از اینکه ماشین های مختلف عضو یک SWARM شدن دیگه همه دستورات مثل حالت معمولی ای میشه که قبلا استفاده می‌کردیم فقط وقتی یک دستور رو اجرا می‌کنیم swarm manager اون دستور رو روی بقیه سیستم هایی که توی swarm عضو هستن هم اجرا می‌کنه. swarm manager همون سیستمیه که swarm روش راه اندازی شده و بقیه سیستم ها بهش join میشن

راه اندازی swarm:

دستور

docker swarm init

همین! swarm راه اندازی شد و سیستمی که روش این دستور رو بزنیم به عنوان swarm manager انتخاب میشه فقط کافیه بقیه سیستم هارو بهش join کنیم.

وقتی docker swarm init رو اجرا می‌کنیم یکسری خروجی بهمون میده شامل ip و port و یک token که برای join شدن بقیه سیستم ها کاربرد داره.

برای join کردن یک سیستم دیگه کافیه روش داکر نصب باشه و دستور (token همونیه که توی عکس بالا بعنوان خروجی تولید شده)

docker swarm join --taken swmtksksdfsdlkfo....sdfjjf 192.168.1.93:2377

خب ما میخواستیم چندین کپی از یه سرویس تو سیستم های مختلف ایجاد کنیم اینجاست که از فایل docker-compose.yml استفاده می‌کنیم و خیلی راحت روی همه سیستم ها deploy میشه(نوشته قبلی)

docker stack deploy -c docker-compose.yml my_services

بصورت خودکار ۵ تا کانتینری که قرار بود توی این فایل ساخته بین سیستم هایی که عضو swarm کردیم پخش میشه و بهمین سادگی یه کلاستر ساخته شد.

نکته خیلی خیلی مهم: هر ایمیجی که توی فایل docker-compose.yml استفاده شده باید توی تک تک سیستم های عضو swarm لود شده باشند و گر نه به خطا بر میخوریم(docker load )


اگر خواستیم اون سرویسی که deploy رو حذف کنیم

docker stack rm my_services

اگر خواستیم swarm رو حذف کنیم :

docker swarm leave --force