„Docker“ būrys, pasiekiantis aukštą prieinamumą

Šiame „Docker Swarm“ tinklaraštyje paaiškinta „Docker“ variklių klasterio sukūrimo galimybė per sukonfigūruotą „Docker Swarm“, kad būtų pasiektas aukštas prieinamumas.

Koks yra svarbiausias bet kurios internetinės programos bruožas? Jų yra daug, bet man didelis prieinamumas yra svarbiausias. Būtent tai „Docker Swarm“ padeda mums pasiekti! Tai padeda labai prieinamai programai.

Mano ankstesnis tinklaraštis , Paaiškinau, kaip veikia „Docker Compose“. Šis „Docker Swarm“ tinklaraštis yra ankstesnio tęsinys. Čia paaiškinti „Docker Swarm“ naudojimo pranašumai, kai konteineriuose pateikiamos bet kurios sudėtinės talpos programos.



Šiame tinklaraštyje tai yra tik „Angular“ programa, kuri bus „Docker Swarm’ed“.
Pastaba : „MEAN Stack“ programos talpinimo būdas yra tas pats.

Taigi, kas yra „Docker Swarm“?

Dockerio spiečius yra klasterio sukūrimo ir palaikymo technika „Docker“ varikliai . „Docker“ varikliai gali būti priglobti į skirtingus mazgus, o šie mazgai, esantys atokiose vietose, sudaro a Klasteris kai prijungtas būrio režimu.



Kodėl naudoti Docker Swarm?

Dėl jau minėtų priežasčių! Pasiekti didelis prieinamumas be prastovų yra kiekvieno ten esančio paslaugų teikėjo prioritetas. Ar didelis pasiekiamumas sužavės jūsų klientus? Na, jie nebus sužavėti, jei susidurs su prastovomis. Tai nėra protas.

Kiti „Docker Swarm“ pranašumai

Kaip ir daugybė kitų paslaugų, „Docker Swarm“ veikia automatiškai apkrovos balansavimas mums. Taigi „DevOps“ inžinieriams nereikia nukreipti apdorojimo užklausų į kitus mazgus, kai vienas nepavyksta. Klasterio valdytojas automatiškai atliks mums apkrovos balansavimą.

Decentralizuota prieiga yra dar viena nauda. Ką tai reiškia? Tai reiškia, kad iš visų mazgų valdytojas gali lengvai pasiekti. Vadybininkas taip pat reguliariai paragins mazgus ir stebės jo būklę / būklę, kad susidorotų su prastovomis. Tačiau mazgai negali pasiekti ar stebėti kitų mazgų / valdytojų teikiamų paslaugų.



Galite patikrinti Nr. konteinerių, einančių mazge, proporcingai didinti Nr. konteinerių arba sumažinti Nr. remiantis mūsų reikalavimu, tiesiog vykdant vieną komandą.

Net po to, kai buvo įdiegta programa, mes galime išduoti atnaujinami atnaujinimai ir įsitikinkite, kad pasiekta KI (nuolatinė integracija). Slenkantys naujinimai išduodami vienam mazgui po kito, taip užtikrinant, kad nebūtų prastovų ir apkrova būtų paskirstyta tarp kitų mazgų mazgų.

Taigi, kas toliau? Norėdami tai padaryti akivaizdu. Pradėkite naudotis „Docker Swarm“, jei jau dirbote su „Docker“ arba jei jūsų organizacija nori pateikti patikimą žiniatinklio paslaugą.

Pastaba : „Docker“ varikliai įdiegti nepriklausomuose pagrindiniuose kompiuteriuose / serveriuose arba keliuose pagrindinio kompiuterio VM.

Darbo pradžia naudojant būrio režimą

„Docker Swarm“ inicijuoja vadybininkas arba leiskite man tai pasakyti taip: egzempliorius, paleidžiantis „Swarm“ grupę, tampa valdytoju. Komanda paleisti grupę yra:

$ docker spiečius init --advertise-addr ip adresas

Čia „–advertise-addr“ vėliava naudojama reklamuojant save kitiems mazgams, norintiems prisijungti prie grupės. Turi būti nurodytas valdytojo IP adresas kartu su vėliava. Žemiau yra ekrano kopijos pavyzdys.

docker init komanda - docker spiečius - edureka

Paleidus „Swarm“ grupę, valdytojo pabaigoje sukuriamas prieigos raktas. Šį prieigos raktą turi naudoti kiti mazgai, norėdami prisijungti prie spiečių grupės.

Kaip yra tiksliai? Nukopijuokite visą žetoną, sugeneruotą valdytojo dokavimo variklyje, įklijuokite jį mazgo doko variklyje ir vykdykite. Paryškinta aukščiau esančio ekrano kopijos dalis yra žetonas. Kai atpažinimo ženklas bus įvykdytas darbuotojo mazge, jis bus panašus į žemiau pateiktą ekrano kopiją.

Bet kurį mazgą, prisijungusį prie grupės, vėliau galima pakelti į valdytoją. Jei norite, kad doko variklis prisijungtų kaip valdytojas, vadovo pabaigoje vykdykite toliau nurodytą komandą:

$ docker būrio prisijungimo prieigos raktų tvarkyklė

Ir vėliau, jei norite, kad mazgo prieigos raktas prisijungtų prie grupės, vykdykite šią komandą:

$ docker spiečiaus prisijungimo žetono mazgas

Eikite į priekį ir vykdykite prieigos raktą prie kiekvieno norimo mazgo, kad prisijungtumėte prie grupės. Kai viskas bus padaryta, galite paleisti „Docker“ mazgų sąrašo komandą, kad patikrintumėte, kiek mazgų prisijungė prie grupės kartu su jų būsena. Komanda yra:

$ docker mazgas ls

Ekrano kopija yra žemiau:

„Docker“ vaizdo kūrimas kampinei programai

Jei viskas gerai, galime pradėti naudotis „Swarm“ paslauga, jei bus sukurtas „Docker Image“. „Docker“ vaizdą galima sukurti iš „Dockerfile“. Programų kūrimui naudojamas „Dockerfile“ yra žemiau:

FROM mazgas: 6 Vykdyti mkdir -p / usr / src / app WORKDIR / usr / src / app COPY package.json / usr / src / app RUN npm talpykla švari RUN npm install COPY. / usr / src / app EXPOSE 4200 CMD ['npm', 'start']

„Dockerfile“ naudojama komandų rinkiniui vykdyti, kad būtų galima sukurti pasirinktinį „Docker“ vaizdą iš pagrindinio vaizdo. Kaip matote, pagrindinis mano naudojamas vaizdas yra „Mazgas: 6“. „NodeJS“ yra vaizdas I iš „Docker Hub“, pažymėto 6 versija.

Tada kuriu naują „Docker“ katalogą konteinerio viduje ir paverčiu jį darbiniu katalogu savo konteinerio viduje.

Kopijuoju failą „package.json“ iš savo vietinės mašinos į konteinerio darbo katalogą. Tada nurodau komandas „RUN npm cache clean“ ir „RUN npm install“. npm įdiegti komanda atsisiunčia priklausomybių, paminėtų faile package.json, versiją.

Tada nukopijuoju visus projekto kodus iš vietinės mašinos į konteinerį, atidengdamas prievado numerį 4200, kad naršyklėje būtų galima pasiekti „Angular“ programą, ir galiausiai nurodau komandą „npm start“, kuri talpina programą.

Dabar, norėdami sukurti „Docker“ vaizdą pagal šią „Dockerfile“, vykdykite žemiau esančią komandą:

$ docker build -t kampinis vaizdas.

Pastaba: „Docker Images“ turi būti pastatyti visuose sankaupos mazguose. Be jo konteineriai negali būti sukami kituose „Docker“ varikliuose.

„Docker Swarm Service“ paleidimas

Atsižvelgiant į tai, kad mūsų „Docker Image“ yra sukurtas, iš šio vaizdo galime išsukti konteinerį. Bet mes padarysime kai ką geriau: sukursime „Docker Swarm“ paslaugą. Komanda sukurti būrio paslaugą yra:

$ docker service create --name „Angular-App-Container“ -p 4200: 4200 kampinis vaizdas

jei sąlyga SQL užklausoje

Čia „vardas“ vėliava naudojama pavadinti mano tarnybą, o „p“ vėliava naudojama konteinerio uostui atskleisti priimančiajam uostui. Faile „package.json“ nurodžiau talpyklos prievadą, kuriame turėtų būti priglobta „Angular“ programa. Šios komandos 4200 padeda atvaizduoti konteinerio 4200 prievadą pagrindinio kompiuterio 4200 prievadui. „Kampinis vaizdas“ yra mano anksčiau sukurto vaizdo pavadinimas.

Prisiminti : Kai sukuriame paslaugą, ją galima priglobti bet kuriame klasterio doko variklyje. Spiečiaus vadybininkas nuspręs, kur jis bus priimtas. Nepaisant to, kuriame mazge ji yra priglobta, programą galima pasiekti naudojant vietinį kompiuterį „localhost: 4200“ iš bet kurio iš mazgų, prijungtų prie klasterio.

Kaip tai įmanoma? Kadangi „Swarm“ viduje uosto numeriai yra prieinami kiekvienam kitam klasterio mazgui. Tai reiškia, kad uostas Nr. 4200 ant bet kurio klasterio mazgo / tvarkyklės atkurtų „Angular“ programą.

Kas dabar? Ar sudėtinis rodinys yra aktyvus?

Galite patikrinti, ar paslauga yra sudėtinė, vykdydami „Docker“ paslaugų sąrašo komandą. Tačiau konteinerio panaudojimas gali užtrukti minutę. Žemiau yra komanda:

$ dokininko paslauga ls

Ši komanda išvardins visas „Swarm“ sankaupos valdomas paslaugas. Mūsų atveju jame turėtų būti rodomas vienas aktyvus konteineris. Peržiūrėkite toliau pateiktą ekrano kopiją.

Čia „REPLICAS = 1/1“ rodo, kad klasteryje yra viena vienintelė to konteinerio „paslauga“. „MODE = replikuota“ rodo, kad paslauga yra replikuojama visuose klasterio mazguose.

Dabar, norėdami nustatyti, kuriame mazge / valdytuve, programoje yra priglobta programa, galime paleisti komandą „Docker service ps“ ir konteinerio pavadinimą. Komanda yra:

$ docker service ps „Angular-App-Container“

Toliau pateikiama to paties ekrano kopija.

Čia paminėta išsami informacija apie mazgą, kuriame priglobta programa, kartu su komanda, naudojama paleisti paslaugą.

„Docker ps“ komanda išaiškina išsamią informaciją apie aktyvųjį konteinerį. Komanda yra:

$ dokeris ps

Peržiūrėkite toliau pateiktą ekrano kopiją.

Bet ši komanda veiks tik klasterio tvarkytuve ir mazge, kuriame faktiškai priglobta paslauga.

Norėdami patikrinti, kiek mazgų veikia, vykdykite mazgų sąrašo komandą. Komanda yra:

$ docker mazgas ls

Norėdami patikrinti tam tikrame pagrindiniame kompiuteryje veikiančius konteinerius, paleiskite komandą „node ps“. Komanda yra:

$ dokininko mazgas ps

Jei pamenate, anksčiau minėjau, kad paslauga šiuo metu veikia pakartotiniu režimu. Tai reiškia, kad paslauga yra pakartojama visuose grupių mazguose. Ar manote, kad yra alternatyva?

Visiškai! Yra kažkas, vadinama „Global MODE“. Šiame režime yra kiekvieno konteinerio paslauga, vykdoma kiekviename klasterio valdytoju. Nepamirškite sustabdyti dabartinės paslaugos / konteinerio prieš sukdami kitą konteinerių rinkinį.

Tam skirta komanda yra:

$ docker service rm „Angular-App-Container“

Komanda sukti konteinerį globaliuoju režimu yra tokia:

„$ docker“ paslaugos sukūrimas - pavadinimas „Angular-App-Container“ -p 4200: 4200 - mode global kampinis vaizdas

Tai sukurtų 3 paslaugas 3 mūsų grupės mazguose. Tai galite patikrinti vykdydami „Docker“ paslaugų sąrašo komandą. Šio ekrano kopija yra žemiau.

Kai bus vykdoma doko tarnybos ps komanda, pamatysite maždaug taip:

Kaip matote, sakoma, kad režimas yra pakartotas, o šio konteinerio kopijos yra 3. Dabar yra geriausia šio tinklaraščio dalis.

Norėdami, kad tarp trijų konteinerių veiktų 2 paslaugų kopijos, galime naudoti kopijų vėliavą. Pažvelkite į žemiau esančią komandą:

„$ docker“ paslaugos sukūrimas - pavadinimas „Angular-App-Container“ -p 4200: 4200 - replikos = 2 kampinis vaizdas

Pastebėsite, kad šios 2 paslaugos yra apkrovos subalansuotos tarp trijų mazgų mazgų. Paleiskite „Docker“ tarnybos proceso komandą, kad patikrintumėte, kuriuose mazguose konteineriai yra aktyvūs. Peržiūrėkite toliau pateiktą ekrano kopiją. Konteineriai yra aktyvūs viename valdytojo mazge ir viename darbuotojo mazge.

Iš „Worker“ mazgo galite patikrinti, ar sudėtinis rodinys veikia, vykdydami komandą „docker ps“.

„Docker“ spiečius už aukštą prieinamumą

Dabar, norėdami iš tikrųjų patikrinti, ar mūsų klasteris yra labai prieinamas, turime patirti scenarijų, kai vienas iš mazgų nusileidžia, o kiti mazgai jį kompensuoja. Tą scenarijų galime pasiekti rankiniu būdu sustabdydami konteinerį iš vieno iš mazgų naudodami šią komandą:

„$ docker stop“ „Angular-App-Container“

Vykdykite aukščiau nurodytą komandą mazge: Worker-1, kur veikia sudėtinis rodinys.Iš valdytojo vykdykite komandą:

$ docker service ps „Angular-App-Container“

Dabar pastebėsite, kad sudėtinis rodinys dabar veikia mazge: „Worker-2“ ir „Manager“. Tačiau jis buvo išjungtas iš mazgo: Worker-1. Tas pats matoma žemiau esančioje ekrano kopijoje.

Štai taip „Docker“ didelis prieinamumas pasiektas. AšNepaisant to, kad sudėtinis rodinys neaktyvus „Worker-1“, programą galima pateikti šio darbuotojo mazgo prievado numeriu 4200. Taip yra todėl, kad jis yra viduje sujungtas su kitais klasterio mazgais ir gali pateikti programą naršyklėje.

Didelis prieinamumas padidinus paslaugas

Nesvarbu, ar tai būtų pakartotinis, ar visuotinis, mes galime padidinti mūsų klasteryje veikiančių paslaugų skaičių. Ir net padidinę mes galėsime išlaikyti aukštą prieinamumą. Nuostabu, ar ne?

kaip konvertuoti skaičių į dvejetainį

Bet grįžtant prie savo taško, pažiūrėkime, kaip lengva padidinti mūsų klasterio paslaugų skaičių. Darant prielaidą, kad mūsų grupėje yra 2 arba 3 kopijos, padidinkime paslaugas iki 5, tiesiog paleisdami vieną komandą. Komanda yra:

„$ docker“ paslaugų skalė „Angular-App-Container“ = 5

Šio ekrano kopija yra žemiau.

Paleisdami „Docker“ paslaugų sąrašo komandą, galite pastebėti, kad kopijų skaičius dabar yra 5. Ir paleidę „Docker service ps“ komandą kartu su paslaugos pavadinimu, galite pamatyti, kaip 5 paslaugos yra subalansuotos ir paskirstytos 3 mazguose. . Komandos yra:

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

Galiausiai, nustatydami „Docker Swarm“ sąranką, jei nenorite, kad jūsų vadovas dalyvautų procese ir būtų užimtas tik procesų valdymui, vadybininką galime nutraukti nuo bet kokios programos talpinimo. Nes taip veikia pasaulyje, ar ne? Vadovai yra skirti tik kitiems darbuotojams valdyti. Bet kokiu atveju, komanda tai padaryti yra:

$ docker mazgo atnaujinimas - prieinamumo nutekėjimo tvarkyklė-1

Galite patikrinti, ar valdytojas dabar dalyvauja grupėje, vykdydami „Docker“ mazgų sąrašo komandą ir „Docker service ps“ komandą:

$ docker mazgas ls $ docker tarnyba ps Angular-App-Container

Dabar galite pastebėti, kad konteinerio paslaugos buvo padalytos tarp „Worker“ mazgų, o „Manager“ mazgas iš tikrųjų buvo atimtas iš konteinerių bet kurios paslaugos talpinimo srityje. Ekrano kopija yra žemiau.

Taigi, tai užbaigia šį „Docker Swarm“ tinklaraštį. Tikiuosi, kad šiame tinklaraštyje paaiškinta, kaip svarbu įdiegti „Swarm“ režimą, norint pasiekti aukštą prieinamumą. Stebėkite daugiau šios „Docker“ mokymo programos serijos tinklaraščių.

Arba galite žiūrėti toliau pateiktą vaizdo įrašą, kad suprastumėte, kaip veikia „Docker Swarm“. Visos aukščiau paaiškintos sąvokos buvo aptartos vaizdo įraše.

Docker spiečius už aukštą prieinamumą „Docker“ pamoka | „DevOps“ mokymo programa

Dabar, kai sužinojote apie „Docker“, patikrinkite sukūrė „Edureka“ - patikima internetinė mokymosi įmonė, turinti daugiau nei 250 000 patenkintų besimokančiųjų tinklą. Šis „Edureka Docker“ sertifikavimo mokymo kursas padeda besimokantiesiems įgyti patirties diegiant „Docker“ ir ją įvaldant.

Turite mums klausimą? Prašau paminėti tai komentarų skiltyje ir mes su jumis susisieksime.