ابزار Docker Swarm به عنوان یک راه حل هماهنگ کننده بین هاست های داکر و ایجاد یک کلاستر پایدار از چندین هاست داکری مورد استفاده قرار می گیرد. از آن به عنوان یک ابزار کلاسترینگ بومی که توسط خود داکر ارائه شده است نام برده می شود و امکانات متعددی از قبیل تامین پایداری بالا (High availability)، عملکرد بالا (High-performance) و حتی متعادل کننده بار (Load balancing) را فراهم می کند. شاید آنرا بتوان به نوعی به سرویس vCenter در زیرساخت های مجازی که تامین کننده کلاسترینگ و قابلیت های پیشرفته جهت تامین پایداری سرویس های مجازی می باشد شبیه سازی کرد هرچند که کارکرد این دو با هم متفاوت هست. (صرفا جهت ایجاد یک تصویر ذهنی)

هدف اولیه Docker swarm ایجاد یک کلاستر از گروهی هاست های داکر می باشد که این هاست ها می توانند سرورهای فیزیکی یا ماشین های مجازی باشند، که قرار است فرآیند تامین پایداری بالا روی سرویس های مقیم بر روی آنها تامین شود. براحتی می توان با استفاده از این سرویس، چندین هاست داکر را در قالب یک کلاستر دسته بندی کرده، بصورتیکه یکی از آنها نقش manager و سایر هاست ها نقش worker را ایفا کنند. 

پس از ایجاد کلاستری از هاست های داکر، می توان از اجرای صحیح کانتینرها و قابلیت های مقیاس پذیری در سطح کانتینرها اطمینان حاصل کرد. چنانچه یکی از هاستهای worker که کانتینرهای مختلف را در حال اجرا دارد، دچار مشکل شده و به هر دلیلی down شود، سرویس Docker Swarm، کانتینرهای مقیم روی آن هاست را در سایر هاست های سطح کلاستر خود اجرا می نماید. این قابلیت، که همان HA در زیرساخت های مجازی به شمار می رود، امروز در سطح کانتینرها و با سرویس های مختلفی از قبیل Docker Swarm، Kubernetes یا Mesos تامین و ارائه می شود.

البته آشنایی با واژه هایی از قبیل Service، Task و … وجود دارد که در مقالات دیگری به آنها خواهم پرداخت.

پیکربندی اولیه کلاستر Docker Swarm

برای آشنایی بیشتر و انجام آزمایشی این سناریو، سه هاست داکر را به ترتیب با نام های manager/worker1/worker2 نام گذاری کنید و تنظیمات مربوط به آدرسهای IP و نام های DNS را بصورت صحیح پیکربندی کنید (امیدواریم با تنظیمات ذکر شده اشنایی کافی داشته باشید!)

برای شروع روی هاست داکر که نقش manager را ایفا می کند دستور زیر را اجرا کنید. آدرس ip ذکر شده، همان ادرس manager می باشد.

docker swarm init --advertise-addr 10.39.242.70

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

docker swarm join --token SWMTKN-1-44hgz0i1r79ht02rknie1idom2hvogsjklpkoagr0movdisitc-79rqoej5fcew2avxr6nwdrgju 10.39.242.70:2377

پس از متصل کردن کلیه هاست های worker، می توانید از ایجاد کلاستر و نودهایی که در آن اضافه شده است با دستور زیر اطمینان حاصل کنید.

docker node ls

گاهی اوقات ممکن است رشته توکن ایجاد شده که جهت اتصال به سرور manager یا worker هست را فراموش کنید. براحتی با اجرای دو دستور زیر می توانید رشته ایجاد شده توسط سریس swarm را بدست آورید.

docker swarm join-token manager -q

docker swarm join-token worker -q

اجرای یک سرویس جدید در کلاستر Swarm

تا این مرحله، یک کلاستر swarm ایجاد شده و حال می توانید یک سرویس بر روی کلاستر اجرا کنید. بایستی در نظر داشته باشید اجرای یک کانتینر روی کلاستر swarm از طریق ایجاد یک مفهوم جدید به نام سرویس امکانپذیر هست که با دستور زیر انجام می شود. برای مثال، وب سرویس httpd را بر روی پورت 80 و در قالب یک کانتینر اجرا خواهم کرد. (دستور را روی سرور مدیریتی اجرا کنید)

docker service create -d --name web1 -p 80:80 httpd

در ادامه میتوان با دستورات زیر صحت اجرای سرویس و تعداد کانتینرهای اجرا شده و اطلاعات آنها را مشاهده کرد

docker service ls

docker service ps web1  

اگر قصد داشته باشید از سرویس اجرا شده به تعداد بیشتری اضافه کنید، می توانید با سوییچ scale تعداد سرویس های اجرا شده را افزایش دهید.

docker service scale web1=8


 

فرستادن دیدگاه


حامیان