Docker Swarm, lai sasniegtu augstu pieejamību



Šis Docker Swarm emuārs izskaidro Docker dzinēju kopas iestatīšanas iespējas, izmantojot konfigurētu Docker Swarm, lai sasniegtu augstu pieejamību.

Kāda ir jebkuras tīmekļa lietojumprogrammas vissvarīgākā iezīme? Ir daudz, bet man augsta pieejamība ir vissvarīgākais. Tas ir tas, ko Docker Swarm mums palīdz sasniegt! Tas palīdz lietojumprogrammai būt ļoti pieejamai.

Manā iepriekšējais emuārs , Es paskaidroju, kā darbojas Docker Compose. Šis Docker Swarm emuārs ir turpinājums pirmajam, un šeit ir izskaidroti ieguvumi, ko rada Docker Swarm izmantošana daudzkonteineru lietojumprogrammu konteineros.





Šajā emuārā Docker Swarm’ed būs tikai Angular lietojumprogramma.
Piezīme : MEAN Stack lietotnes konteinera ievietošanas metode ir vienāda.

Tātad, kas ir Docker Swarm?

Dokera bars ir tehnika, lai izveidotu un uzturētu Dokeru dzinēji . Docker dzinējus var mitināt dažādos mezglos, un šie mezgli, kas atrodas attālās vietās, veido a Kopa kad ir izveidots savienojums Swarm režīmā.



Kāpēc izmantot Docker Swarm?

Jau minēto iemeslu dēļ! Panākt augsta pieejamība bez dīkstāves ir katra pakalpojumu sniedzēja prioritāte. Vai augsta pieejamība atstās iespaidu uz jūsu klientiem? Nu, viņi nebūs pārsteigti, ja viņiem būs dīkstāves laiks. Tas nav nekāds prāts.

Citi Docker Swarm ieguvumi

Tāpat kā daudzi citi pakalpojumi, arī Docker Swarm veic automātisko darbību slodzes līdzsvarošana priekš mums. Tādējādi DevOps inženieriem nav nepieciešams apstrādes pieprasījumus novirzīt uz citiem mezgliem, ja kāds neizdodas. Klastera vadītājs automātiski veiks slodzes līdzsvarošanu mums.

Decentralizēta piekļuve ir vēl viens ieguvums. Ko tas nozīmē? Tas nozīmē, ka visiem mezgliem var viegli piekļūt no pārvaldnieka. Pārvaldnieks arī regulāri mudinās mezglus un sekos līdzi tā veselībai / stāvoklim, lai tiktu galā ar dīkstāvēm. Tomēr mezgli nevar piekļūt vai izsekot pakalpojumiem, kas darbojas citos mezglos / pārvaldniekos.



Jūs varat pārbaudīt nr. konteineros, kas darbojas mezglā, paplašinātu nē. konteineru vai samazināšana nē. pamatojoties uz mūsu prasību, vienkārši izpildot vienu komandu.

Pat pēc lietojumprogrammas izvietošanas mēs varam to izdot ritošie atjauninājumi un pārliecinieties, vai tiek sasniegta nepārtraukta integrācija (CI). Ritošie atjauninājumi tiek izsniegti vienam mezglam pēc otra, tādējādi pārliecinoties, ka nav dīkstāves un slodze tiek sadalīta starp citiem klastera mezgliem.

Tātad, kas tālāk? Lai izdarītu acīmredzamo. Sāciet darbu ar Docker Swarm, ja esat jau strādājis pie Docker vai ja jūsu organizācija vēlas konteineros ievietot uzticamu tīmekļa pakalpojumu.

Piezīme : Dokeru dzinēji ir instalēti neatkarīgos resursdatoros / serveros vai vairākos resursdatora virtuālajos datoros.

Darba sākšana ar spietu režīmu

Docker Swarm ir iniciators vadītājs, vai ļaujiet man to izteikt šādi: instance, kas sāk Swarm kopu, kļūst par pārvaldnieku. Komanda, lai sāktu kopu, ir:

$ docker swarm init - advertise-addr ip-adrese

Šeit karodziņu ‘–advertise-addr’ izmanto, lai reklamētu sevi citiem mezgliem, kuri vēlas pievienoties kopai. Vadītāja IP adrese ir jānorāda kopā ar karodziņu. Zemāk ir ekrānuzņēmuma paraugs.

docker init komanda - docker bars - edureka

Kad tiek uzsākta Swarm kopa, vadītāja beigās tiek ģenerēts marķieris. Šis marķieris jāizmanto citiem mezgliem, lai pievienotos spietu kopai.

Kā ir tieši? Nokopējiet visu marķieri, kas ģenerēts vadītāja docker motorā, ielīmējiet to mezgla docker motorā un izpildiet to. Iepriekš iezīmētā ekrānuzņēmuma daļa ir marķieris. Kad marķieris tiek izpildīts darba ņēmēja mezglā, tas izskatās kā zemāk redzamais ekrānuzņēmums.

ko vārda telpa nozīmē c ++

Jebkuru mezglu, kas pievienojas kopai, vēlāk var paaugstināt par pārvaldnieku. Ja vēlaties, lai docker motors pievienotos kā pārvaldnieks, izpildītāja beigās izpildiet šo komandu:

$ docker bara pievienošanās marķiera pārvaldnieks

Un vēlāk, ja vēlaties, lai mezgla marķieris pievienotos kopai, palaidiet šādu komandu:

$ docker bara pievienošanās marķiera mezgls

Iet uz priekšu un izpildiet marķieri visos vēlamos mezglos, lai pievienotos kopai. Kad viss ir izdarīts, varat palaist komandu Docker mezglu saraksta, lai pārbaudītu, cik daudz mezglu ir pievienojušies kopai kopā ar to statusu. Komanda ir:

$ dokera mezgls ls

Ekrānuzņēmums ir zemāk:

Docker attēla izveidošana leņķiskajai lietotnei

Ja viss ir kārtībā, tad mēs varam sākt savu pakalpojumu Swarm, ja vien ir izveidots Docker Image. Docker attēlu var izveidot no Dockerfile. Lietojumprogrammu izveidošanai izmantotais Dockerfile ir zemāk:

FROM mezgls: 6 RUN mkdir -p / usr / src / app WORKDIR / usr / src / app COPY package.json / usr / src / app RUN npm kešatmiņa tīra RUN npm install COPY. / usr / src / app EXPOSE 4200 CMD ['npm', 'start']

Dockerfile tiek izmantots, lai kopā izpildītu komandu kopu, lai izveidotu pielāgotu Docker attēlu no bāzes attēla. Kā redzat, manis izmantotais bāzes attēls ir ‘Node: 6’. NodeJS ir attēls I no Docker Hub, kas ir atzīmēts ar 6. versiju.

Pēc tam es konteinerā izveidoju jaunu Docker direktoriju un padarīju to par darba direktoriju manā konteinerā.

Es kopēju failu “package.json” no savas vietējās mašīnas uz konteinera darba direktoriju. Pēc tam es precizēju komandas “RUN npm cache clean” un “RUN npm install”. npm instalēt komanda lejupielādē failā package.json minēto atkarību versiju.

Pēc tam es kopēju visus projekta kodus no vietējās mašīnas uz konteineru, pakļaujot porta numuru 4200, lai pārlūkprogrammā piekļūtu lietojumprogrammai Angular, un, visbeidzot, es norādu komandu npm start, kas konteinerā ievieto lietojumprogrammu.

Tagad, lai izveidotu Docker attēlu, pamatojoties uz šo Dockerfile, palaidiet šādu komandu:

$ docker build -t leņķa attēls.

Piezīme: Docker Images jāveido visos klastera mezglos. Bez tā konteinerus nevar vērpt citos Docker dzinējos.

html tags rindas pārtraukuma ievietošanai

Docker Swarm Service palaišana

Ņemot vērā to, ka mūsu Docker Image ir veidots, mēs varam izgriezt konteineru no šī attēla. Bet mēs darīsim kaut ko labāku: izveidosim no tā Docker Swarm pakalpojumu. Komanda, lai izveidotu spietu pakalpojumu, ir:

$ docker service create --name 'Angular-App-Container' -p 4200: 4200 leņķa attēls

Šeit karogu ‘name’ izmanto, lai piešķirtu nosaukumam manam dienestam, un ‘p’ karodziņu izmanto, lai pakļautu konteinera portu resursdatora ostai. Failā package.json esmu norādījis konteinera portu, kurā vajadzētu mitināt lietotni Angular. Šīs komandas 4200 palīdz kartēt konteinera 4200 portu ar resursdatora 4200 portu. ‘Leņķiskais attēls’ ir tā attēla nosaukums, kuru es iepriekš izveidoju.

Atcerieties : Kad mēs izveidojam pakalpojumu, to var mitināt jebkurā klastera dokstacijā. Bāra vadītājs izlems, kur tas tiks uzņemts. Bet neatkarīgi no tā, kurā mezglā tas tiek mitināts, lietojumprogrammai var piekļūt vietnē localhost: 4200 no jebkura mezgla, kas savienots klasterī.

Kā tas ir iespējams? Tā kā Swarm iekšēji atklāj, ka ostas numuriem var piekļūt visi citi mezgli kopā. Tas nozīmē, ka osta Nr. 4200 jebkurā mezglā / pārvaldniekā klasterī padarītu lietojumprogrammu Leņķa.

Ko tagad? Vai konteiners ir aktīvs?

Pārbaudiet, vai pakalpojums ir konteinerā, palaižot komandu dokstacijas pakalpojumu saraksta. Bet konteinera izvietošana var aizņemt minūti. Zemāk ir komanda:

$ dokstacijas pakalpojums ls

Šajā komandā tiks uzskaitīti visi Swarm kopas pārvaldītie pakalpojumi. Mūsu gadījumā tajā vajadzētu parādīt vienu aktīvo konteineru. Skatiet zemāk redzamo ekrānuzņēmumu.

Šeit “REPLICAS = 1/1” norāda, ka šajā konteinerā ir viens vienīgs “pakalpojums”. Un “MODE = replicēts” norāda, ka pakalpojums tiek kopēts visos klastera mezglos.

Tagad, lai identificētu mezglu / pārvaldnieku, lietotni, mēs varam palaist komandu docker service ps komandu, kam seko konteinera nosaukums. Komanda ir:

$ docker service ps Angular-App-Container

Tālāk ir redzams tā paša ekrānuzņēmums.

Šajā tiek pieminēta informācija par mezglu, kurā tiek mitināta lietojumprogramma, kā arī komanda, kas izmantota pakalpojuma sākšanai.

Komanda ‘docker ps’ izgaismo informāciju par aktīvo konteineru. Komanda ir:

$ dokers ps

Skatiet zemāk redzamo ekrānuzņēmumu.

Bet šī komanda darbosies tikai klastera pārvaldniekā un mezglā, kurā faktiski tiek mitināts pakalpojums.

Lai pārbaudītu, cik daudz mezglu darbojas, palaidiet komandu mezglu saraksts. Komanda ir:

$ dokera mezgls ls

Lai pārbaudītu konteinerus, kas darbojas noteiktā resursdatorā, palaidiet komandu mezgls ps. Komanda ir:

$ dokstacijas mezgls ps

Ja atceraties, es iepriekš minēju, ka pakalpojums pašlaik darbojas atkārtotā režīmā. Tas nozīmē, ka pakalpojums tiek atkārtots visos mezglos kopās. Vai jūs domājat, ka pastāv alternatīva?

Pilnīgi! Ir kaut kas, ko sauc par Globālo MODE. Šajā režīmā šī konteinera pakalpojums darbojas pie katra klastera / pārvaldnieka. Neaizmirstiet pārtraukt pašreizējo pakalpojumu / konteineru, pirms vērpjat citu konteineru komplektu.

Komanda tam ir:

$ docker service rm Angular-App-Container

Komanda konteineram griezties globālajā režīmā ir šāda:

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

Tas izveidotu 3 pakalpojumus 3 mūsu klastera mezglos. To var pārbaudīt, palaižot komandu Docker service list. Šī ekrānuzņēmums ir zemāk.

Kad tiek izpildīta docker service ps komanda, jūs redzēsiet kaut ko līdzīgu:

Kā redzat, tajā teikts, ka režīms tiek atkārtots, un šī konteinera kopijas ir 3. Tagad nāk šī emuāra labākā daļa.

Lai starp trim konteineriem darbotos 2 pakalpojumu kopijas, mēs varam izmantot kopiju karodziņu. Apskatiet komandu zemāk:

$ docker service create --name 'Angular-App-Container' -p 4200: 4200 - replikas = 2 leņķa attēls

Jūs ievērosiet, ka šie 2 pakalpojumi ir līdzsvaroti starp trim klastera mezgliem. Palaidiet dokstacijas servisa procesa komandu, lai pārbaudītu, kuros mezglos konteineri ir aktīvi. Skatiet zemāk redzamo ekrānuzņēmumu. Konteineri ir aktīvi vienā pārvaldnieka mezglā un vienā darba ņēmēja mezglā.

Darbinieka mezglā varat pārbaudīt, vai konteiners darbojas, izpildot komandu ‘docker ps’.

Docker spiets par augstu pieejamību

Tagad, lai faktiski pārbaudītu, vai mūsu klasterī ir augsta pieejamība, mums ir jāpiedzīvo scenārijs, kad viens no mezgliem iet uz leju un citi klastera mezgli to kompensē. Mēs varam panākt šo scenāriju, manuāli apturot konteineru no viena no mezgliem, izmantojot šo komandu:

$ docker stop Angular-App-Container

Palaidiet iepriekš minēto komandu mezglā: Worker-1, kur darbojas konteiners.No pārvaldnieka palaidiet komandu:

pārveidojot dubultu par int
$ docker service ps Angular-App-Container

Jūs tagad pamanīsit, ka konteiners tagad darbojas mezglā: Worker-2 un Manager. Tomēr tas ir izslēgts no mezgla Worker-1. Tas pats ir redzams no zemāk redzamā ekrānuzņēmuma.

Tas ir kā Docker augsta pieejamība ir sasniegts. Esn neskatoties uz to, ka konteiners ir neaktīvs Worker-1, lietojumprogrammu var atveidot ar šī darba mezgla porta numuru 4200 Tas ir tāpēc, ka tas ir iekšēji savienots ar citiem klastera mezgliem un tas spēj renderēt lietojumprogrammu pārlūkprogrammā.

Augsta pieejamība pēc pakalpojumu palielināšanas

Vai tas būtu replicētajā vai globālajā režīmā, mēs varam palielināt mūsu klasterī darbojošos pakalpojumu skaitu. Pat pēc palielināšanas mēs spēsim saglabāt augstu pieejamību. Lieliski, vai ne?

Bet atgriežoties pie sava viedokļa, ļaujiet mums uzzināt, cik viegli ir palielināt pakalpojumu skaitu mūsu klasterī. Pieņemot, ka mūsu klasterī ir vai nu 2, vai 3 kopijas, palielināsim pakalpojumus līdz 5, vienkārši izpildot vienu komandu. Komanda ir:

$ docker servisa skala Angular-App-Container = 5

Šī ekrānuzņēmums ir zemāk.

Palaidot komandu Docker service list, jūs varat pamanīt, ka kopiju skaits tagad ir 5. Un, palaižot komandu Docker service ps kopā ar pakalpojuma nosaukumu, jūs varat redzēt, kā 5 pakalpojumi ir līdzsvaroti un sadalīti 3 mezglos. . Komandas ir:

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

Un, visbeidzot, Docker Swarm iestatījumos, ja nevēlaties, lai jūsu menedžeris piedalītos procesā un to aizņemtu tikai procesu pārvaldībai, mēs varam vadītāju iztukšot no jebkuras lietojumprogrammas mitināšanas. Jo tā tas darbojas pasaulē, vai ne? Vadītāji ir paredzēti tikai citu darbinieku vadīšanai. Jebkurā gadījumā komanda to darīt ir:

$ docker mezgla atjauninājums - pieejamības aizplūšana Manager-1

Varat pārbaudīt, vai pārvaldnieks tagad piedalās klasterī, palaižot komandu Docker mezglu saraksts un komandu Docker service ps:

$ docker mezgls ls $ docker pakalpojums ps Angular-App-Container

Tagad varat pamanīt, ka konteinera pakalpojumi ir sadalīti starp Worker mezgliem un Manager mezgls ir faktiski iztukšots no jebkura pakalpojuma konteinerizēšanas. Ekrānuzņēmums ir zemāk.

Tātad, tas izbeidz šo emuāru vietnē Docker Swarm. Es ceru, ka šajā emuārā tika paskaidrots, cik svarīgi ir ieviest Swarm režīmu, lai sasniegtu augstu pieejamību. Sekojiet līdzi citiem emuāriem šajā Docker apmācību sērijā.

Varat arī noskatīties tālāk redzamo videoklipu, lai saprastu, kā darbojas Docker Swarm. Visi iepriekš izskaidrotie jēdzieni ir apskatīti videoklipā.

Docker spiets par augstu pieejamību Dokera apmācība | DevOps apmācība

Tagad, kad esat uzzinājis par Docker, pārbaudiet Autors: Edureka, uzticams tiešsaistes mācību uzņēmums ar vairāk nekā 250 000 apmierinātu izglītojamo tīklu visā pasaulē. Šis Edureka Docker sertifikācijas apmācības kurss palīdz izglītojamajiem iegūt zināšanas Docker ieviešanā un apguvē.

Vai mums ir jautājums? Lūdzu, pieminējiet to komentāru sadaļā, un mēs ar jums sazināsimies.