Docker Swarm pentru obținerea unei disponibilități ridicate



Acest blog despre Docker Swarm, explică puterea de a configura un grup de motoare Docker prin intermediul Docker Swarm configurat pentru a obține disponibilitate ridicată.

Care este cea mai importantă caracteristică a oricărei aplicații bazate pe web? Sunt multe, dar pentru mine Valabilitate ridicată este cel mai important. Asta ne ajută Docker Swarm să realizăm! Ajută ca aplicația să fie foarte disponibilă.

In al meu blogul anterior , Am explicat cum funcționează Docker Compose. Acest blog pe Docker Swarm este o continuare a primului și aici au fost explicate avantajele utilizării Docker Swarm pentru containerizarea oricărei aplicații multi-container.





În cazul acestui blog, este doar o aplicație angulară care va fi Docker Swarm’ed.
Notă : Metoda de containerizare a aplicației MEAN Stack este aceeași.

Deci, ce este Docker Swarm?

Docker Swarm este o tehnică de creare și menținere a unui grup de Motoare Docker . Motoarele Docker pot fi găzduite pe diferite noduri, iar aceste noduri care se află în locații îndepărtate formează un Cluster când sunteți conectat în modul Swarm.



De ce să folosiți Docker Swarm?

Din motivele menționate deja! Realizarea Valabilitate ridicată fără nicio perioadă de nefuncționare este o prioritate pentru fiecare furnizor de servicii. Disponibilitatea ridicată vă va impresiona clienții? Ei bine, nu vor fi impresionați dacă se confruntă cu perioade de nefuncționare. Asta este o nebunie.

Alte beneficii ale Docker Swarm

La fel ca multe alte servicii, Docker Swarm face auto echilibrarea sarcinii pentru noi. Prin urmare, nu este nevoie ca inginerii DevOps să direcționeze solicitările de procesare către alte noduri atunci când unul eșuează. Managerul clusterului va efectua automat echilibrarea încărcării pentru noi.

Acces descentralizat este un alt beneficiu. Ce inseamna asta? Înseamnă că toate nodurile pot fi accesate cu ușurință de la manager. Managerul va solicita, de asemenea, nodurile în mod regulat și va urmări starea / starea sa pentru a face față perioadelor de nefuncționare. Cu toate acestea, nodurile nu pot accesa sau urmări serviciile care rulează în alte noduri / manageri.



Puteți verifica nr. de containere care rulează într-un nod, intensifice nu-ul. de containere sau scară în jos nu-ul. pe baza cerinței noastre, doar prin executarea unei singure comenzi.

Chiar și după ce a fost implementată o aplicație, putem emite actualizări și asigurați-vă că se realizează CI (Integrare continuă). Actualizările continue se emit către un nod după celălalt, asigurându-se astfel că nu există perioade de nefuncționare și că sarcina este distribuită între alte noduri din cluster.

Deci ce urmează? Pentru a face evident. Începeți cu Docker Swarm dacă ați lucrat deja la Docker sau dacă organizația dvs. dorește să conțină un serviciu web de încredere.

Notă : Motoarele Docker sunt instalate pe gazde / servere independente sau în mai multe VM-uri pe o gazdă.

Noțiuni introductive despre modul Swarm

Docker Swarm este inițiat de manager sau permiteți-mi să spun așa, instanța care pornește clusterul Swarm devine manager. Comanda pentru a porni clusterul este:

iso 9000 vs six sigma
$ docker swarm init --advertise-addr IP address

Aici, steagul „–advertise-addr” este utilizat pentru a se face publicitate către alte noduri care doresc să se alăture clusterului. Adresa IP a managerului trebuie specificată împreună cu semnalizatorul. Mai jos este exemplul de captură de ecran.

docker init command - docker swarm - edureka

Când este inițiat clusterul Swarm, la sfârșitul managerului este generat un simbol. Acest simbol trebuie utilizat de alte noduri pentru a se alătura clusterului de roi.

Cum este exact? Copiați întregul token generat la motorul de andocare al managerului, lipiți-l la motorul de andocare al nodului și executați-l. Porțiunea evidențiată a capturii de ecran de mai sus este un simbol. Când jetonul este executat la un nod lucrător, acesta va arăta ca imaginea de mai jos.

Orice nod care se alătură clusterului poate fi ulterior promovat în manager. În cazul în care doriți ca un motor de andocare să se alăture ca manager, executați comanda de mai jos la sfârșitul managerului:

$ docker swarm join-token manager

Și într-un moment ulterior, dacă doriți ca simbolul pentru un nod să se alăture clusterului, executați comanda de mai jos:

$ docker swarm nod-token nod

Mergeți mai departe și executați simbolul la fiecare nod dorit, pentru a vă alătura clusterului. Când faceți toate acestea, puteți rula o comandă listă de noduri de andocare pentru a verifica câte noduri s-au alăturat clusterului împreună cu starea lor. Comanda este:

$ docker nod ls

Captura de ecran este mai jos:

Crearea unei imagini Docker pentru aplicația angulară

Dacă totul este bine, atunci putem începe serviciul nostru Swarm, cu condiția să fie construită imaginea Docker. Imaginea Docker poate fi construită din fișierul Docker. Fișierul Docker folosit pentru a construi aplicațiile este mai jos:

FROM nod: 6 RUN mkdir -p / usr / src / app WORKDIR / usr / src / app COPY package.json / usr / src / app RUN npm cache clean RUN npm install COPY. / usr / src / app EXPOSE 4200 CMD ['npm', 'start']

Fișierul Docker este utilizat pentru a executa împreună un set de comenzi pentru a construi o imagine Docker personalizată dintr-o imagine de bază. După cum puteți vedea, imaginea de bază pe care am folosit-o este „Nod: 6”. NodeJS este imaginea I din Docker Hub care este etichetată cu versiunea 6.

Apoi creez un nou director Docker în interiorul containerului și îl transform în directorul de lucru din container.

Copiez fișierul „package.json” de pe mașina mea locală în directorul de lucru al containerului. Specific apoi comenzile „RUN npm cache clean” și „RUN npm install”. instalare npm comanda descarcă versiunea de dependențe menționată în fișierul package.json.

Copiez apoi toate codurile de proiect de la mașina locală la container, expunând numărul de port 4200 pentru accesarea aplicației Angular din browser și, în cele din urmă, specific comanda npm start care conține aplicația.

Acum, pentru a crea imaginea Docker pe baza acestui fișier Docker, rulați comanda de mai jos:

$ docker build -t angular-image.

Notă: Imaginile Docker trebuie să fie construite în toate nodurile din cluster. Fără acesta, containerele nu pot fi rotite în alte motoare Docker.

Pornirea serviciului Docker Swarm

Având în vedere că imaginea noastră Docker este construită, putem învârti un container din această imagine. Dar vom face ceva mai bun: să creăm un serviciu Docker Swarm din acesta. Comanda pentru a crea un serviciu de roi este:

$ docker service create --name 'Angular-App-Container' -p 4200: 4200 angular-image

Aici, semnalizatorul „nume” este utilizat pentru a da un nume serviciului meu, iar semnalizatorul „p” este utilizat pentru a expune portul containerului la portul gazdă. În fișierul package.json, am specificat portul containerului pe care ar trebui găzduită aplicația Angular. Iar 4200 din această comandă ajută la maparea portului containerului 4200 la portul gazdei 4200. „angular-image” este numele imaginii pe care am construit-o anterior.

Tine minte : Când creăm un serviciu, acesta poate fi găzduit pe orice motor de andocare din cluster. Managerul roiului va decide unde va fi găzduit. Dar, indiferent în ce nod este găzduit, aplicația poate fi accesată pe localhost: 4200 din oricare dintre nodurile conectate în cluster.

Cum este posibil? Deoarece Swarm expune intern numerele de port pentru a fi accesibile de către orice alt nod din cluster. Asta înseamnă, portul nr. 4200 pe orice nod / manager din cluster ar reda aplicația Angular.

Acum ce? Containerul este activ?

Puteți verifica dacă serviciul este containerizat executând comanda listă servicii docker. Dar, poate dura un minut până când containerul va fi implementat. Mai jos este comanda:

$ docker service ls

Această comandă va lista toate serviciile administrate de clusterul Swarm. În cazul nostru, ar trebui să afișeze un container activ. Uitați-vă la captura de ecran de mai jos pentru referință.

Aici, „REPLICAS = 1/1” indică faptul că există un singur „serviciu” al acelui container, în cluster. Și „MODE = replicat” indică faptul că serviciul este replicat pe toate nodurile din cluster.

Acum, pentru a identifica pe care nod / manager este găzduită aplicația, putem rula comanda docker service ps comandă urmată de numele containerului. Comanda este:

$ docker service ps Angular-App-Container

Captura de ecran pentru același lucru este mai jos.

Aceasta menționează detalii despre nodul pe care este găzduită aplicația împreună cu comanda utilizată pentru a porni serviciul.

Comanda „docker ps” aruncă lumină asupra detaliilor despre containerul activ. Comanda este:

$ docker ps

Uitați-vă la captura de ecran de mai jos pentru referință.

Dar, această comandă va funcționa doar pe managerul de cluster și nodul în care este găzduit serviciul.

Pentru a verifica câte noduri rulează, executați comanda listă noduri. Comanda este:

$ docker nod ls

Pentru a verifica containerele care rulează într-o anumită gazdă, rulați comanda nodului ps. Comanda este:

$ docker nod ps

Dacă vă amintiți, am menționat mai devreme că serviciul rulează în prezent în MOD REPLICAT. Aceasta înseamnă că serviciul este replicat pe toate nodurile din clustere. Crezi că există o alternativă?

Absolut! Există ceva numit Global MODE. În acest mod, există un serviciu al acestui container care rulează la fiecare manager / manager din cluster. Nu uitați să opriți serviciul / containerul curent înainte de a fila un alt set de containere.

Comanda pentru aceasta este:

$ docker service rm Angular-App-Container

Comanda de rotire a containerului în modul Global este:

$ docker service create --name 'Angular-App-Container' -p 4200: 4200 --mode global angular-image

Acest lucru ar crea 3 servicii pe cele 3 noduri din clusterul nostru. O puteți verifica executând comanda listă de servicii docker. Captura de ecran a acesteia este mai jos.

Când se execută comanda ps a serviciului de andocare, veți vedea ceva de genul acesta:

După cum puteți vedea, se spune că modul este reprodus, iar replicile acestui container sunt 3. Acum vine cea mai bună parte a acestui blog.

Pentru a avea 2 replici ale serviciilor care rulează între cele trei containere, putem utiliza semnalizatorul de replici. Uită-te la comanda de mai jos:

$ docker service create --name 'Angular-App-Container' -p 4200: 4200 --replicas = 2 angular-image

Veți observa că aceste 2 servicii sunt echilibrate în sarcină între cele trei noduri din cluster. Rulați comanda de procesare a serviciului de andocare pentru a verifica, în ce noduri sunt active containerele. Uitați-vă la captura de ecran de mai jos pentru referință. Containerele sunt active într-un nod manager și un nod lucrător.

Din nodul Worker, puteți verifica dacă rulează containerul executând comanda „docker ps”.

Docker Swarm pentru o disponibilitate ridicată

Acum, pentru a verifica de fapt dacă există o disponibilitate ridicată în clusterul nostru, trebuie să experimentăm un scenariu în care unul dintre noduri coboară și alte noduri din cluster îl compun. Putem realiza acest scenariu oprind manual containerul de la unul dintre noduri folosind această comandă:

$ docker stop Angular-App-Container

Rulați comanda de mai sus pe nodul: Worker-1 pe care rulează containerul.Din manager, executați comanda:

$ docker service ps Angular-App-Container

Veți observa acum că containerul rulează acum în nodul: Worker-2 și Manager. Cu toate acestea, a fost închis de la nodul: Worker-1. Același lucru este vizibil din captura de ecran de mai jos.

Așa se face Docker Disponibilitate ridicată este dus la bun sfârșit. Eun în ciuda faptului că containerul este inactiv în Worker-1, aplicația poate fi redată la numărul de port 4200 pe acel nod de lucrător. Acest lucru se datorează faptului că este conectat intern la alte noduri din cluster și poate reda aplicația în browser.

Disponibilitate ridicată după extinderea serviciilor

Fie că este în modul replicat sau în modul global, putem extinde numărul de servicii care rulează în clusterul nostru. Și chiar și după extindere, vom putea păstra o disponibilitate ridicată. Minunat, nu-i așa?

Dar revenind la punctul nostru, să vedem cât de ușor este să creștem numărul de servicii din clusterul nostru. Presupunând că avem fie 2, fie 3 replici în clusterul nostru, permiteți-ne să extindem serviciile la 5, doar executând o singură comandă. Comanda este:

$ docker service scale Angular-App-Container = 5

Captura de ecran a acesteia este mai jos.

Executând comanda listă servicii docker, puteți observa că numărul de replici este acum 5. Și executând comanda docker service ps împreună cu numele serviciului, puteți vedea cum cele 5 servicii sunt încărcate echilibrate și distribuite pe cele 3 noduri . Comenzile sunt:

$ docker service ls $ docker service ps Angular-App-Container

Și, în cele din urmă, într-o configurație Docker Swarm, dacă nu doriți ca managerul dvs. să participe la proceduri și să îl mențină ocupat doar pentru gestionarea proceselor, atunci îl putem elimina pe manager de la găzduirea oricărei aplicații. Pentru că așa funcționează în lume, nu-i așa? Managerii sunt doar pentru gestionarea altor lucrători. Oricum, comanda pentru a face acest lucru este:

$ docker nod update - disponibilitate drain Manager-1

Puteți verifica dacă managerul participă acum la cluster executând comanda docker node list și comanda ps a serviciului docker:

$ docker nod ls $ docker service ps Angular-App-Container

Acum puteți observa că serviciile de containere au fost împărțite între nodurile Worker, iar nodul Manager a fost de fapt scurs de la containerizarea oricărui serviciu. Captura de ecran este mai jos.

Deci, asta pune capăt acestui blog pe Docker Swarm. Sper că acest blog a explicat cât de important este să implementați modul Swarm pentru a obține o disponibilitate ridicată. Rămâneți la curent pentru mai multe bloguri în această serie de tutoriale Docker.

Puteți urmări alternativ videoclipul de mai jos pentru a înțelege cum funcționează Docker Swarm. Toate conceptele explicate mai sus au fost tratate în videoclip.

Docker Swarm pentru o disponibilitate ridicată | Tutorial Docker | Tutorial DevOps

Acum că ați aflat despre Docker, consultați de Edureka, o companie de învățare online de încredere, cu o rețea de peste 250.000 de elevi mulțumiți răspândiți pe tot globul. Acest curs de formare pentru certificare Edureka Docker îi ajută pe cursanți să câștige expertiză în implementarea și stăpânirea acestuia.

Ai o întrebare pentru noi? Vă rugăm să o menționați în secțiunea de comentarii și vă vom răspunde.