Docker Swarm برای ارکستر کانتینر

همه چیز در مورد Docker Swarm و نحوه مدیریت و ارکستر همه ظروف موجود در یک خوشه.


Docker Swarm چیست?

Docker swarm یک شیوه اداره با خوشه ای از موتورهای Docker Engines است ، از این رو نام Swarm نام دارد. خوشه میزبان Docker در حالت swarm متشکل از مدیران و کارگران اجرا می شود. موتورهای docker که در ازدحام شرکت می کنند گره نامیده می شوند.

استقرار ازدحام سطح تولید شامل گره های docker است که در سرورهای مختلف پخش شده اند.

چرا از آن استفاده می کنیم؟ – ارکستر کانتینر

هنگامی که شما در یک محیط تولید کار می کنید ، 100s ظروف docker چندین برنامه کاربردی را در آن اجرا می کنید. مدیریت تمام این ظروف می تواند درد بزرگی برای همه مهندسان DevOps باشد. اینجا جایی است که Docker Swarm به شما کمک می کند. این خوشه را با سهولت چندین کانتینر docker اداره می کند و آنرا کنترل می کند.

در زیر برخی از ویژگی های آن آورده شده است:

  • در دسترس بودن بالا – هدف این است که هیچ خرابی و قطع برق را ارائه ندهد.
  • تعادل بار – در صورت عدم موفقیت گره ها ، منابع و درخواست ها را در سایر گره های خوشه به طور خودکار اختصاص دهید.
  • متمرکز – چندین گره مدیر در یک محیط تولید اجرا می شوند. از این رو ، این خوشه هرگز به گره مدیر واحد وابسته نیست.
  • مقیاس پذیری – با استفاده از یک فرمان swarm docker ، می توانید ظروف را به راحتی در مقیاس بالا یا مقیاس پایین قرار دهید.

کانتینرهای ارکستر داکر

حال که اصول اولیه Docker Swarm را می دانید اجازه دهید نمونه ای از اجرای آن را بررسی کنیم.

در این مثال ، من سه دستگاه دارم که در یک خوشه با جزئیات زیر کار می کنند:

مدیر1: 192.168.56.104

کارگر1: 192.168.56.105

کارگر2: 192.168.56.102

برای شروع اولیه حالت swarm در docker ، دستور زیر را روی گره مدیر اجرا کنید. پرچم – advertise-addr برای تبلیغات خود به گره هایی که می توانند به خوشه بپیوندند ، استفاده می شود.

[ایمیل محافظت شده]: ~ $ docker swarm init –advertise-addr 192.168.56.104

Swarm اولیه: گره فعلی (lssbyfzuiuh3sye1on63eyixf) اکنون یک مدیر است.

برای افزودن کارگر به این ازدحام ، دستور زیر را اجرا کنید:

docker swarm join –token SWMTKN-1-3h3d8qgvdlxi8tl1oqpfho9khx7i1t5nq7562s9gzojbcm9kr6-azy4rffrzou0nem9hxq4ro5am 192.168.56.104:2377

برای افزودن یک مدیر به این swarm ، “مدیر docker swarm join-token” را اجرا کنید و دستورالعمل ها را دنبال کنید.

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

اجرای کد در گره کارگر1.

[ایمیل محافظت شده]: ~ $ docker swarm join –token SWMTKN-1-3h3d8qgvdlxi8tl1oqpfho9khx7i1t5nq7562s9gzojbcm9kr6-azy4rffrzou0nem9hxq4ro5am 192.168.56.104:2377

این گره به عنوان یک کارگر به یک ازدحام پیوست.

اجرای کد در گره کارگر2.

[ایمیل محافظت شده]: ~ $ docker swarm join –token SWMTKN-1-3h3d8qgvdlxi8tl1oqpfho9khx7i1t5nq7562s9gzojbcm9kr6-azy4rffrzou0nem9hxq4ro5am 192.168.56.104:2377

این گره به عنوان یک کارگر به یک ازدحام پیوست.

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

[ایمیل محافظت شده]: ~ $ docker گره ls

VERSION ENGINE STATUS MANUXER MANAGER STATUS MANUXER MANUAIR ISAILABILITY MANAGER دسترسی به وضعیت شخصی ID

lssbyfzuiuh3sye1on63eyixf * مدیر 1 رهبر فعال 18.09.6

utdr3dnngqf1oy1spupy1qlhu working1 Ready Active 18.09.6

xs6jqp95lw4cml1i1npygt3cg working2 Ready Active 18.09.6

بیایید تصویر docker geekflare_mongodb را که در آموزش Dockerfile استفاده کردیم بسازیم.

docker build -t geekflare_mongodb .

یک ظرف از تصویر Docker MongoDB را با ایجاد یک سرویس swarm اجرا کنید. 27017 شماره درگاهی است که MongoDB در معرض آن قرار دارد.

[ایمیل محافظت شده]: service سرویس docker ایجاد – نام "مونتو کانتینر" -ص 27017: 27017 geekflare_mongodb

image geekflare_mongodb: برای ثبت هضم آن ، به آخرین رجیستری امکان دسترسی نیست. هر گره به geekflare_mongodb دسترسی پیدا می کند: آخرین مورد مستقل ، احتمالاً منجر به گره های مختلف که نسخه های مختلف تصویر را اجرا می کنند.

kok58xa4zi05psh3uy6s5x9e6

پیشرفت کلی: 1 از 1 کار

1/1: در حال اجرا

تأیید: خدمات همگرا

بررسی کنید که آیا سرویس ازدحام docker شروع شده است یا خیر. تکرار MODE به معنای تکرار ظرف در تمام گره های خوشه است و REPLICAS 1/1 بدان معنی است که در حال حاضر فقط یک سرویس swarm در حال اجراست..

[ایمیل محافظت شده]: ~ $ docker service ls

ID NAME MODE REPLICAS PORTS IMAGE

kok58xa4zi05 Mongo Container تکرار 1/1 geekflare_mongodb: آخرین *: 27017->27017 / tcp

بگذارید بررسی کنیم که کدام سرویس گره در این خوشه قرار دارد. این در حال اجرا در گره manager1 است.

[ایمیل محافظت شده]: service سرویس docker ps ps Mongo-Container

شناسه نام تصویر NODE موقعیت های دلخواه ERROR STATE

jgqjo92rbq23 Mongo-Container.1 geekflare_mongodb: آخرین مدیر 1 در حال اجرا حدود یک دقیقه قبل

دستور docker ps را اجرا کنید تا اطلاعات بیشتری در مورد کانتینر این سرویس ازدحام دریافت کنید.

[ایمیل محافظت شده]: ~ $ docker ps

CONTAINER ID IMAGE Command ایجاد نامهای PATAT STATUS

05d77e7b4850 geekflare_mongodb: جدیدترین   "/ bin / sh -c usr / bin /…"   2 دقیقه پیش تا 2 دقیقه 27017 / tcp Mongo-Container.1.jgqjo92rbq23sv01hrufdigtx

می توانید سرویس swarm را در آن اجرا کنید “جهانی” همچنین به جای حالت پیش فرض “تکرار”. حالت جهانی یک وظیفه سرویس swarm را در تمام گره های خوشه اجرا می کند.

قبل از اجرای سرویس در حالت جهانی ، اجازه دهید ظرف در حال اجرا موجود را حذف کنم.

[ایمیل محافظت شده]: service سرویس docker rm Mongo-Container

مونتو کانتینر

با استفاده از پرچم حالت ، سرویس swarm را درون یک ظرف docker در حالت جهانی شروع کنید.

[ایمیل محافظت شده]: service سرویس docker ایجاد – نام "مونتو کانتینر" -ص 27017: 27017 – حالت جهانی geekflare_mongodb

image geekflare_mongodb: برای ثبت هضم آن ، به آخرین رجیستری دسترسی پیدا نمی شود. هر گره به geekflare_mongodb دسترسی پیدا می کند: آخرین مورد مستقل ، احتمالاً منجر به گره های مختلف که نسخه های مختلف تصویر را اجرا می کنند.

mfw8dp0zylffppkllkcjl8391

پیشرفت کلی: 3 از 3 وظیفه

utdr3dnngqf1: در حال اجرا

lssbyfzuiuh3: در حال اجرا

xs6jqp95lw4c: در حال اجرا

تأیید: خدمات همگرا

بررسی کنید که آیا سرویس swarm در حالت جهانی شروع شده است یا خیر. از آنجا که سه گره (1 مدیر ، 2 کارگر) در خوشه کار می کنند ، به همین دلیل تعداد ماکت ها 3 است.

[ایمیل محافظت شده]: ~ $ docker service ls

ID NAME MODE REPLICAS PORTS IMAGE

mfw8dp0zylff Mongo-Container global 3/3 geekflare_mongodb: آخرین *: 27017->27017 / tcp

3 سرویس اکنون در 3 گره در حال اجرا هستند ، آن را با اجرای دستور زیر بررسی کنید.

[ایمیل محافظت شده]: service سرویس docker ps ps Mongo-Container

شناسه نام تصویر NODE موقعیت های دلخواه ERROR STATE

zj2blvptkvj6 Mongo-Container.xs6jqp95lw4cml1i1npygt3cg geekflare_mongodb: آخرین کارگر2 در حال اجرا حدود یک دقیقه قبل

3eaweijbbutf Mongo-Container.utdr3dnngqf1oy1spupy1qlhu geekflare_mongodb: آخرین کارگر1 در حال اجرا حدود یک دقیقه قبل

yejg1o2oyab7 Mongo-Container.lssbyfzuiuh3sye1on63eyixf geekflare_mongodb: آخرین مدیر1 اجرای حدود یک دقیقه قبل

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

[ایمیل محافظت شده]: service سرویس docker rm Mongo-Container

مونتو کانتینر

از پرچم -replicas در دستور استفاده کنید و تعداد ماکت هایی را که از سرویس swarm می خواهید ذکر کنید. به عنوان مثال ، من می خواهم دو نمونه از سرویس swarm داشته باشم:

[ایمیل محافظت شده]: service سرویس docker ایجاد – نام "مونتو کانتینر" -ص 27017: 27017 –replicas = 2 geekflare_mongodb

image geekflare_mongodb: برای ثبت هضم آن ، به آخرین رجیستری امکان دسترسی نیست. هر گره به geekflare_mongodb دسترسی پیدا می کند: آخرین مورد مستقل ، احتمالاً منجر به گره های مختلف که نسخه های مختلف تصویر را اجرا می کنند.

4yfl41n7sfak65p6zqwwjq82c

پیشرفت کلی: 2 از 2 کار

1/2: در حال اجرا

2/2: در حال اجرا

تأیید: خدمات همگرا

سرویس ازدحام را که در حال اجرا است بررسی کنید. مشاهده می کنید که یک ماکت در گره مدیر 1 و دیگری در گره کارگر1 در حال اجرا است.

[ایمیل محافظت شده]: service سرویس docker ps ps Mongo-Container

شناسه نام تصویر NODE موقعیت های دلخواه ERROR STATE

xukodj69h79q Mongo-Container.1 geekflare_mongodb: آخرین کارگر 1 در حال اجرا 9 ثانیه پیش

e66zllm0foc8 Mongo-Container.2 geekflare_mongodb: آخرین مدیر 1 در حال اجرا 9 ثانیه قبل

به گره Working1 بروید و بررسی کنید که آیا ظرف docker سرویس swarm را اجرا می کند یا خیر.

[ایمیل محافظت شده]: ~ $ docker ps

CONTAINER ID IMAGE Command ایجاد نامهای PATAT STATUS

5042b7f161cb geekflare_mongodb: جدیدترین   "/ bin / sh -c usr / bin /…"   حدود یک دقیقه پیش بالا در حدود یک دقیقه 27017 / tcp Mongo-Container.1.xukodj69h79q3xf0pouwm7bwv

برای متوقف کردن این ظرف ، دستور زیر را اجرا کنید.

[ایمیل محافظت شده]: stop docker $ 5042b7f161cb متوقف شود

5042b7f161cb

اکنون از گره مدیر 1 اگر بررسی کنید که تمام گره ها سرویس را اجرا می کنند ، می بینید که آن را در گره مدیر 1 و گره کارگر2 اجرا کنید. حالت فعلی گره Working1 Shutdown است (همانطور که ظرف سرویس را متوقف کردیم). اما از آنجا که باید دو نسخه از این سرویس اجرا شود ، سرویس دیگری نیز برای کارگر 2 آغاز شد.

اینگونه است که با استفاده از ازدحام docker به دسترسی بالایی می رسید.

[ایمیل محافظت شده]: service سرویس docker ps ps Mongo-Container

شناسه نام تصویر NODE موقعیت های دلخواه ERROR STATE

cd2rlv90umej Mongo-Container.1 geekflare_mongodb: آخرین کارگر2 در حال اجرا 30 ثانیه پیش

xukodj69h79q \ _ Mongo-Container.1 geekflare_mongodb: آخرین کارگر خاموش کردن ۳۸ ثانیه پیش انجام نشد    "وظیفه: خروج غیر صفر (137)"

e66zllm0foc8 Mongo-Container.2 geekflare_mongodb: آخرین مدیر 1 اجرای در حال اجرا 3 دقیقه قبل

مقیاس بندی ظروف داکر بالا یا پایین بسیار آسان است. دستور زیر ظرف mongo را به 5 می رساند.

[ایمیل محافظت شده]: scale مقیاس سرویس docker Mongo-Container = 5

Mongo-Container به 5 رسید

پیشرفت کلی: 5 از 5 وظیفه

1/5: در حال اجرا

2/5: در حال اجرا

3/5: در حال اجرا

4/5: در حال اجرا

5/5: در حال اجرا

تأیید: خدمات همگرا

بررسی کنید چه تعداد ماکت از ظرف mongo در حال اجرا است ، باید 5 باشد.

[ایمیل محافظت شده]: ~ $ docker service ls

ID NAME MODE REPLICAS PORTS IMAGE

4yfl41n7sfak Mongo-Container تکرار 5/5 geekflare_mongodb: آخرین *: 27017->27017 / tcp

بررسی کنید که این 5 تکرار در خوشه در حال اجرا هستند. هر ماکت در هر گره کارگر 1 گره و 2 ماکت در حال اجرا است.

[ایمیل محافظت شده]: service سرویس docker ps ps Mongo-Container

شناسه نام تصویر NODE موقعیت های دلخواه ERROR STATE

cd2rlv90umej Mongo-Container.1 geekflare_mongodb: آخرین کارگر 2 در حال اجرا 2 دقیقه پیش

xukodj69h79q \ _ Mongo-Container.1 geekflare_mongodb: آخرین کارگر 1 خاموش کردن 2 دقیقه پیش انجام نشد     "وظیفه: خروج غیر صفر (137)"

e66zllm0foc8 Mongo-Container.2 geekflare_mongodb: آخرین مدیر 1 اجرای 5 دقیقه قبل

qmp0gqr6ilxi Mongo-Container.3 geekflare_mongodb: آخرین کارگر2 در حال اجرا 47 ثانیه پیش

9ddrf4tsvnu2 Mongo-Container.4 geekflare_mongodb: آخرین کارگر1 در حال اجرا در حال اجرا 46 ثانیه پیش

e9dhoud30nlk Mongo-Container.5 geekflare_mongodb: آخرین کارگر 1 در حال اجرا 44 ثانیه قبل

در خوشه خود ، اگر نمی خواهید سرویس های شما بر روی گره (های) مدیر اجرا شود و می خواهید آن را فقط برای مدیریت گره ها نگه دارید ، می توانید گره مدیر را بیرون بکشید.

[ایمیل محافظت شده]: update بروزرسانی گره docker $ – مدیر تخلیه در دسترس بودن1

مدیر 1

در دسترس بودن گره مدیر را بررسی کنید.

[ایمیل محافظت شده]: ~ $ docker گره ls

VERSION ENGINE STATUS MANUXER MANAGER STATUS MANUXER MANUAIR ISAILABILITY MANAGER دسترسی به وضعیت شخصی ID

lssbyfzuiuh3sye1on63eyixf * manager1 Leader Drain Leader 18.09.6

utdr3dnngqf1oy1spupy1qlhu working1 Ready Active 18.09.6

xs6jqp95lw4cml1i1npygt3cg working2 Ready Active 18.09.6

خواهید دید که خدمات دیگر روی گره مدیر اجرا نمی شوند. آنها در گره های کارگر در خوشه پخش می شوند.

[ایمیل محافظت شده]: service سرویس docker ps ps Mongo-Container

شناسه نام تصویر NODE موقعیت های دلخواه ERROR STATE

cd2rlv90umej Mongo-Container.1 geekflare_mongodb: آخرین کارگر 2 در حال اجرا 5 دقیقه پیش

xukodj69h79q \ _ Mongo-Container.1 geekflare_mongodb: آخرین کارگر 1 خاموش کردن 5 دقیقه پیش انجام نشد      "وظیفه: خروج غیر صفر (137)"

qo405dheuutj Mongo-Container.2 geekflare_mongodb: آخرین کارگر1 در حال اجرا 41 ثانیه پیش

e66zllm0foc8 \ _ Mongo-Container.2 geekflare_mongodb: آخرین مدیر 1 خاموش شدن خاموش 44 ثانیه پیش

qmp0gqr6ilxi Mongo-Container.3 geekflare_mongodb: آخرین کارگر 2 در حال اجرا 3 دقیقه پیش

9ddrf4tsvnu2 Mongo-Container.4 geekflare_mongodb: آخرین کارگر 1 در حال اجرا 3 دقیقه پیش

e9dhoud30nlk Mongo-Container.5 geekflare_mongodb: آخرین کارگر 1 در حال اجرا 3 دقیقه قبل

این همه در مورد Docker Swarm و نحوه چیدمان ظروف در حالت docker swarm بود. این موارد را در مورد محیط غیر تولیدی خود امتحان کنید تا در مورد چگونگی عملکرد آن ایده بگیرید.

برچسب ها:

  • داکر

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map