Ja izstrādājat savu izstrādes darbplūsmu konteineros, jūs piekrītat, ka Docker ir viena no labākajām versiju kontroles iespējām. Tomēr Docker Swarm ir viena no Docker funkcijām, ko izmanto sarežģītu lietotņu vadīšanai.
Docker Swarm darba mehānismu sākotnēji var būt grūti uzlauzt. Bet neuztraucieties, mēs to sadalīsim šajā rakstā. Tātad, kas ir Docker Swarm? Kāpēc to izmantot? Un kā tas darbojas?
Kas ir Docker Swarm un kā tas darbojas?
Docker Swarm attiecas uz Docker saimniekdatoru (datoru) grupu, kas savienota tīklā kā kopa, lai veiktu noteiktus uzdevumus. Katrs Docker saimniekdators šajā klasterī ir mezgls, ko sauc arī par darbinieka mezglu.
Lai nodrošinātu efektīvu uzdevumu sadali, ir nepieciešams pārvaldnieka mezgls. Ideālā gadījumā Docker Swarm režīma inicializācija sākas ar pārvaldnieka mezglu, un nākamie mezgli kļūst par darbiniekiem.
Kā operatoram jums ir jāsazinās tikai ar pārvaldnieka mezglu, kas nodod norādījumus darbiniekiem. Vienmēr darbinieka mezgli saņem uzdevumu piešķiršanu no pārvaldnieka mezgla un attiecīgi tos izpilda.
Tomēr pārvaldnieka mezgls var arī piedalīties uzdevuma izpildē (kā darbinieks) vai tīri sejas pārvaldībā. Varat novērst pārvaldnieka uzdevumu plānošanu, pārslēdzot tā stāvokli no aktīvs uz notecēt. Taču jūsu lēmums piešķirt šo dubultfunkciju var būt atkarīgs no vairākiem faktoriem. Būtībā vēlaties būt pārliecināts, ka tai ir pietiekami daudz resursu, lai pirms to darītu vairākas lomas.
Mezgli neizdodas. Tādējādi pārvaldnieka mezgls aktīvi uzrauga katra darbinieka mezgla stāvokli un aktivizē kļūmju tolerantu mehānismu, lai pārplānotu uzdevumu no neveiksmīga mezgla uz citu.
Bet ja arī pārvaldnieka mezgls avarē? Interesanti, ka bars turpina skriet. Vienīgā kļūme ir tāda, ka vairs nevarēsit sazināties ar pārvaldnieka mezglu, lai kontrolētu kopu.
Izplatīta bezatteices pieeja, lai to novērstu, ir pārvaldnieka lomas piešķiršana daudziem mezgliem (Docker iesaka ne vairāk kā septiņus katrā klasterī). Pēc tam no tiem varat atlasīt primāro pārvaldnieka mezglu. Kad primārais pārvaldnieks avarē, lomu uzņemas viens no gaidstāves pārvaldniekiem.
Tomēr jums nav jāuztraucas par lomu maiņu starp mezgliem vai stāvokļa uzturēšanu klasterī. Par to rūpējas plostu vienprātības algoritms (kļūdām izturīga metode), kas iebūvēts Docker SwarmKit.
Kāpēc izmantot Docker Swarm?
Docker Swarm ir parocīgs, lai izvietotu sarežģītas lietotnes ar augstu mērogojamību. Viens no tā primārajiem izmantošanas gadījumiem ir mikropakalpojumu decentralizācija. Katrs mikropakalpojums pēc tam koplieto līdzīgu konteineru ar tiem, kas atrodas citos darbinieku mezglos.
Vēl viens iemesls Docker Swarm izmantošanai ir tas, ka vairāki saimnieki vienlaikus veic uzdevumus klasterī. Tas ir pretstatā Docker Compose, kas ļauj tikai darbināt vairākus konteinerus vienā Docker dzinējā.
Šis Docker Swarm mērogojamais atribūts ļauj lietotnēm būt pastāvīgi pieejamam ar nulles latentumu. Tas ir pat viens no iemesliem, kādēļ vēlaties izvēlieties Docker, nevis citus virtualizācijas rīkus.
Un kas vēl? Atšķirībā no atsevišķiem Docker konteineriem, kur konteiners apstājas, kad tas neizdodas, Docker Swarm automātiski pārdala uzdevumus starp pieejamajiem darbinieku mezgliem ikreiz, kad tas neizdodas.
Docker Swarm arī saglabā katra štata dublējumu. Tātad jūs vienmēr varat atjaunot jaunās spieta konfigurācijas iepriekšējā stāvoklī. Pieņemsim, ka iepriekšējā spieta pārvaldnieka mezgls neizdodas; varat izveidot jaunu klasteru ar vairākiem pārvaldnieka mezgliem un atjaunot to, lai pielāgotu iepriekšējās konfigurāciju.
Ir arī svarīgi pieminēt, ka mijiedarbība starp pārvaldnieka mezglu un darbinieku mezgliem ir droša.
Docker ir daudz alternatīvu, un viena no tuvākajām ir Kubernetes. Tomēr Docker Swarm ir viegli lietojams un vairāk automatizēts. Piemēram, lai gan dažos citos orķestrēšanas rīkos, piemēram, Kubernetes, var būt nepieciešams līdzsvarot slodzi manuāli, Docker Swarm piedāvā automātisku slodzes līdzsvarošanu, kas atvieglo DevOps darbību.
Docker spieta arhitektūra
Docker Swarm arhitektūra griežas ap pakalpojumiem, mezgliem un uzdevumiem. Tomēr katram ir sava loma steka veiksmīgā vadīšanā.
Pakalpojumi
Pakalpojumā Docker Swarm ir detalizēti aprakstīta Docker attēla konfigurācija, kurā tiek darbināti visi konteineri spietā. Tas ietver informāciju par uzdevumiem klasterī. Piemēram, pakalpojums var aprakstīt a Dockerized SQL servera iestatīšana.
Palaižot pakalpojumu, tas liek pārvaldnieka mezglam sinhronizēt ar tā konfigurācijām. Pēc tam pārvaldnieka mezgls palaiž pārējos darbinieka mezglus, pamatojoties uz norādītajiem pakalpojuma iestatījumiem.
Docker Swarm pakalpojumi var būt globāli vai replicēti.
Atšķirība starp tiem ir tāda, ka, lai gan globālie pakalpojumi definē tikai vienu uzdevumu visiem klastera mezgliem, replicētie pakalpojumi norāda uzdevumu skaitu katrā mezglā.
Mezgli
Docker Swarm mezgls ir visa Docker izpildlaika gadījums, kas pazīstams arī kā Docker dzinējs. Swarm mezgli var būt fiziskas vai virtuālas mašīnas. Uztveriet to kā datoru tīklu, kurā darbojas līdzīgi procesi (konteineri).
Tomēr parasti mezgli aptver vairākus datorus un serverus, kuros reālās dzīves lietojumprogrammās darbojas Docker dzinējs. Un, kā minēts iepriekš, mezgls var būt vai nu vadītāja, vai darbinieka mezgls, atkarībā no lomas.
Pārvaldnieka mezgls klausās spieta sirdspukstus un kontrolē darbinieku mezglus, kas izpilda pārvaldnieka mezgla tiem uzticētos uzdevumus. Kā minēts iepriekš, barā var būt vairāk nekā viens pārvaldnieka mezgls. Taču ideālā gadījumā mēģiniet ierobežot skaitu līdz septiņiem, jo pārāk daudz pārvaldnieka mezglu pievienošana var samazināt spieta veiktspēju.
Uzdevumi
Uzdevums definē katram Docker Swarm mezglam piešķirto darbu. Fonā uzdevumu plānošana programmā Docker Swarm sākas, kad orķestrētājs izveido uzdevumus un nodod tos plānotājam, kas katram uzdevumam izveido konteineru.
Pēc tam pārvaldnieka mezgls izmanto plānotāju, lai piešķirtu un atkārtoti piešķirtu uzdevumus mezgliem, kā nepieciešams un norādīts Docker pakalpojumā.
Docker Swarm vs. Docker Compose: kādas ir atšķirības?
Cilvēki bieži izmanto Docker Compose un Docker Swarm aizvietojami. Lai gan abi ietver vairāku konteineru darbināšanu, tie atšķiras.
Kamēr Docker Compose ļauj darbināt vairākus konteinerus vienā resursdatorā, Docker Swarm izplata tos vairākos Docker dzinējos klasterī.
Jūs izmantojat Docker Compose, kad jums ir jāizveido atsevišķi konteineri katram pakalpojumam savā lietotnē. Tādējādi, kad viens komponents avarē, tas netraucē citiem. Tomēr, ja resursdatora mašīna neizdodas, arī visa lietotne avarē.
Tomēr Docker Swarm palīdz palaist daudzus konteinerus grupētos mezglos. Tātad katrs jūsu lietotnes komponents atrodas vairākos mezglos. Un, kad viens mezgls, kas apstrādā lietotnes komponentu, avarē, spiets piešķir savu uzdevumu citam klastera mezglam un pārplāno darbības uzdevumus, novēršot dīkstāves.
Tādējādi, lai gan Docker Compose var būt dīkstāves, Docker Swarm nodrošina, ka jūsu lietotne turpina darboties, izmantojot rezerves serverus (darba mezglus). Tomēr Docker 1.13 atbalsta Docker Compose izvietošanu Swarm režīmā, izmantojot docker steka izvietošana komandu.
Docker Swarm palīdz izvietot sarežģītas lietotnes
Konteineru veidošana ir pārspējusi virtuālās mašīnas nepārtrauktas integrācijas un nepārtrauktas piegādes (CI/CD) programmatūras dizainā. Tāpēc, ja vēlaties kļūt par nenovērtējamu DevOps ekspertu, izpratne par Docker Swarm mehānisma būtību ir papildu prasme.
Jūs droši vien zināt, kā izveidot Docker konteineru vai pat palaist Docker Compose vairākiem konteineriem vienā resursdatorā. Taču Docker Swarm ir ērtāks, lai izvietotu lietotnes ar sarežģītu arhitektūru. Tas sadala procesus vienībās, uzlabo izpildlaika piekļuvi un samazina vai pat novērš dīkstāves iespējas.