Как да управлявате повече контейнери с Docker Swarm

Мащабирането извън един сървър е важна характеристика, за да се разбере за контейнерите. Когато започнете да използвате контейнери, за да улесните мащабирането на приложението си, нещата наистина започват да стават интересни. Представете си, че сте използвали Docker контейнери за разработка и тестване. Сега сте готови да излезете на живо.

Как можете да се уверите, че приложението ви има достатъчно ресурси? Ако сте вирусни, как ще мащабите?

Това е мястото, където трябва да започнете да използвате контейнерен оркестър като Swarm. Същата група, която ви доведе Докер построи рояк. Swarm съществува за управление на контейнери на Docker на клъстер от машини. Docker Swarm улеснява разгръщането, управлението и мащаба на вашите контейнери.

В тази статия ще разгледаме основите на контейнерната оркестрация в клъстер. Ще обсъдим характеристиките на Docker Swarm, включително как да стартирате Swarm, да разгърнете приложение и да го мащабирате. Ако не сте запознати с Докер, разгледайте и другите ми статии.

Какво е Докер?
Започнете първия си контейнер
Създаване на вашия първи Dockerfile
Изграждане на първото ви изображение
Преминавайки покрай един контейнер

Върнете се тук, когато се почувствате готови.

Може би сте ме чували да звънна на Swarm контейнерен оркестър. Какво искам да кажа с това? Swarm поема контрола върху управлението и организирането както на хостове, така и на Docker контейнери, работещи във вашия клъстер.

Мислете за Swarm като приложение, което разбира как да стартирате Docker команди. Казвате му къде са всичките ви хокери на Docker, какви контейнери искате да стартирате, а Swarm се грижи за останалите. Swarm управлява работа в мрежа, достъп, състоянието на вашите контейнери, услуги за мащабиране, балансиране на натоварването и дори преместване на контейнери, ако хостът не реагира.

В тази статия ще стартираме Docker Swarm на вашата местна машина. С нашия местен Swarm ще се запознаем с най-често срещаните команди и ще разположим някои услуги.

Започва рояк

За да започнете, ще трябва да имате инсталиран Docker-CE. За да ви помогнем да инсталирате Docker на вашата машина, моля, разгледайте сайта Docker-CE.

След като успешно инсталирате Docker, стартирането на първия ви Docker Swarm е толкова лесно, колкото да изпълните една команда. Отворете терминала или командния ред и изпълнете командата по-долу.

> докер рояк инит

Вие сте го направили! Пускате първия си рой.

Ако управлявате този хост на облачна платформа като AWS или в сървърна ферма, добавянето на повече възли към вашия клъстер е лесно. Просто следвайте инструкциите в Докерската документация за това как да създадете рояк. Тази документация ще ви покаже как ръчно да инициализирате и добавяте възли към клъстер Docker Swarm.

Друг вариант е да завъртите своя собствен Rancher клъстер. След като настроите Rancher, можете да го оставите да направи тежкото повдигане вместо вас. Rancher е услуга, която използвам, когато изследвам характеристиките на различни контейнерни оркестри. Rancher улеснява въртенето на куп машини и стартирането на контейнерен оркестър по ваш избор. Rancher има приятен и интерактивен уеб таблото за управление, което улеснява завъртането на различни оркестри, включително Swarm, Mesos или Kubernetes.

Можете да намерите информация за Първи стъпки с Rancher и Използване на Rancher за стартиране на рояк в документацията за Rancher.

За целите на тази статия ще се придържаме към единия възел, работещ на вашата локална машина. Това ще направи много по-лесно да се запознаем с Docker Swarm и Swarm CLI.

Разгърнете се към Swarm

Сега, когато вашият рояк работи, нека да започне някои контейнери! Ако сте запознати с Docker, разполагането в Docker Swarm трябва да е парче торта. Командите, използвани за разгръщане на услуги и стекове за Docker-CE, са същите команди, използвани за Docker Swarm.

За да разгърнете докер изображението на pintail-whoami, изпълнете командата по-долу.

> docker service create --name pintail-whoami -p 80:80 pintailai / pintail-whoami: 0.0.1

Отворете браузърите си и отидете на http: // localhost и трябва да видите страницата по-долу.

Командата, използвана за стартиране на тази услуга, може да е точно същата като Docker-CE, но нещата работят малко по-различно, когато са свързани с Swarm.

Когато стартирате услуги в Swarm, най-голямата разлика е физическото местоположение на вашите работещи контейнери. Docker Swarm ще стартира контейнер на всеки хост, където са налични ресурси. Така че това, че стартирате контейнер от един хост, не означава, че контейнерът ще работи.

И така, как да получите достъп до услуга, която може да бъде стартирана навсякъде във вашия клъстер?

Docker Swarm има много полезен инструмент за решаване на този проблем, наречен маршрутизационна мрежа Swarm. Мрежата за маршрутизиране управлява навлизането във вашите работещи контейнери. По подразбиране, Swarm прави достъп до всички услуги чрез публикувания им порт на всеки хокер на Docker.

Да речем, че имате рояк, съдържащ три Докер хостове. Ако разгърнете услуга на вашия Swarm, публикувана на порт 80, няма значение от кой хост имате достъп до този порт - ще бъдете пренасочени към вашата услуга.

В реалния свят, ако имате уеб приложение и API за почивка, бихте могли да разгърнете уеб приложението на порт 80 и вашия API на 8080. С тази конфигурация можете да мащабите броя на контейнерите, изпълняващи различни части на приложението ви. Но винаги можете да сте сигурни, че порт 80 на всеки възел в клъстера Swarm ще ви отведе до уебсайта, а порт 8080 към API за почивка.

Мрежата за маршрутизиране на Swarm има своите плюсове и минуси. Тази конфигурация по подразбиране има своите ограничения, но е предназначена да направи възможно най-лесна работа. Тъй като вашите приложения стават по-сложни, маршрутизиращата мрежа може да бъде конфигурирана така, че да се държи по различен начин и може да се разгърнат различни услуги, за да се използват различни конфигурации за маршрутизиране. За повече информация, моля, разгледайте документацията за мрежата за маршрутизация на режим Swarm.

Мащабиране на вашата услуга

Сега, когато имаме работеща услуга, нека разширим нещо малко!

Представете си, че управлявате уебсайта си в Docker Swarm в производство и вашият сайт започва да се движи в Hacker News. Трафикът ви се утроява и трябва да се справите с допълнителния товар. За да утроите броя на контейнерите, които стартирате, просто изпълнете командата по-долу:

> скала за обслужване на docker pintail-whoami_pintail-whoami = 3

Presto! Docker Swarm мащабира броя на репликите, които стартирате и маршрутизира трафика към контейнерите. След като командата по-горе приключи, върнете се към вас „Pintail.ai Docker Example“ в браузъра си и щракнете върху опресняване няколко пъти. Трябва да видите промяната на номера, докато мрежата за маршрутизиране ви насочва към различни контейнери.

Swarm прави услугите за мащабиране лесно, за да можете да се притеснявате за по-големи проблеми.

Почисти

Сега нека да почистим контейнерите си и да се ровим.

За да премахнете стека от максимуми, стартирайте

> docker stack rm pintail-whoami

Внимавайте с тази следваща команда. Ако изпълнявате нещо друго в рояка, то ще бъде изтрито.

За да изтриете своя клъстер Swarm, стартирайте

> докер рояк отпуск - сила

Така че в тази статия стартирахме хост на рояка, обсъдихме добавяне на възли към нашия клъстер, стартирахме и мащабирахме услуга и говорихме за маршрутизиращата мрежа на рояка. Надяваме се, че това въведение ще ви помогне да обгърнете по-добре мозъка си около контейнерната оркестрация и Docker Swarm.

Тази статия едва надраска повърхността на възможното с контейнери и Swarm, но се надявам да ви даде някакъв контекст, който да ви помогне да продължите да научавате.

Моля, уведомете ме ако имате коментари, въпроси или притеснения в коментарите. Винаги съм отворен за обратна връзка и ще се радвам да чуя вашите предложения. Ако ви е харесала статията, моля, оставете ми много хлопки, за да ме уведомите.