Docker-parvi korkean saatavuuden saavuttamiseksi



Tämä Docker Swarm -blogi selittää Docker-moottoriryhmän perustamisen tehon konfiguroidun Docker Swarm -laitteen avulla korkean käytettävyyden saavuttamiseksi.

Mikä on minkä tahansa verkkopohjaisen sovelluksen tärkein ominaisuus? On monia, mutta minulle korkea saatavuus on tärkein. Juuri Docker Swarm auttaa meitä saavuttamaan! Se auttaa sovellusta olemaan erittäin saatavilla.

Minussa edellinen blogi , Selitin kuinka Docker Compose toimii. Tämä Docker Swarm -blogi on jatkoa edelliselle, ja tässä on selitetty Docker Swarmin käytön edut minkä tahansa monisäiliösovelluksen säilyttämiseen.





Tässä blogissa Docker Swarm’ed on vain kulmasovellus.
Huomautus : Menetelmä MEAN-pino-sovelluksen säilyttämiseen on sama.

Joten mikä on Docker-parvi?

Docker-parvi on tekniikka klusterin luomiseksi ja ylläpitämiseksi Docker-moottorit . Docker-moottoreita voidaan isännöidä eri solmuissa, ja nämä syrjäisissä paikoissa olevat solmut muodostavat a Klusteri kun se on kytketty Swarm-tilassa.



Miksi käyttää Docker Swarmia?

Jo mainituista syistä! Saavuttaminen korkea saatavuus ilman seisokkeja on etusija jokaiselle palveluntarjoajalle. Vaikuttaako korkea saatavuus asiakkaisiisi? No, he eivät vaikuta, jos he joutuvat seisokkeihin. Se ei ole järkevää.

Docker-parven muut edut

Kuten monet muut palvelut, Docker Swarm tekee automaattisen kuormituksen tasapainoittaminen meille. Siksi DevOps-insinöörien ei tarvitse reitittää käsittelypyyntöjä muihin solmuihin, kun yksi epäonnistuu. Klusterin johtaja suorittaa kuormituksen tasapainottamisen automaattisesti meille.

Hajautettu käyttöoikeus on toinen etu. Mitä tuo tarkoittaa? Se tarkoittaa, että kaikkiin solmuihin pääsee helposti managerilta. Johtaja kehottaa myös solmuja säännöllisesti ja pitämään kirjaa sen kunnosta / tilasta selviytyäkseen seisokkeista. Solmut eivät kuitenkaan voi käyttää tai seurata muissa solmuissa / ylläpitäjissä suoritettavia palveluita.



Voit tarkistaa ei. solmuissa kulkevista säiliöistä, skaalata ei. astioista tai pienentää ei. vaatimuksemme perusteella suorittamalla vain yksi komento.

Jopa sovelluksen käyttöönoton jälkeen voimme antaa päivitetyt päivitykset ja varmista, että CI (Continuous Integration) saavutetaan. Liikkuvat päivitykset annetaan yhdelle solmulle toisensa jälkeen varmistaen, ettei seisokkeja ole ja kuorma jakautuu klusterin muiden solmujen välillä.

Joten, mitä seuraavaksi? Tehdä ilmeinen. Aloita Docker Swarmin käyttö, jos olet jo työskennellyt Dockerilla tai jos organisaatiosi haluaa säilyttää luotettavan verkkopalvelun.

Huomautus : Docker-moottorit asennetaan itsenäisiin isäntiin / palvelimiin tai isännän useisiin virtuaalikoneisiin.

Swarm-tilan käytön aloittaminen

Docker Swarm -aloitteen on aloittanut johtaja, tai anna minun sanoa sanoni tällä tavalla, ilmentymästä, joka käynnistää Swarm-klusterin, tulee manager. Komento klusterin käynnistämiseksi on:

$ docker parvi init --advertise-addr ip-osoite

Tässä ’–advertise-addr’ -lippua käytetään mainostamaan itseään muille solmuille, jotka haluavat liittyä klusteriin. Johtajan IP-osoite on määritettävä yhdessä lipun kanssa. Alla on näytekuva.

docker init -komento - docker-parvi - edureka

Kun Swarm-klusteri käynnistetään, päällikön loppuun luodaan tunnus. Muiden solmujen on käytettävä tätä tunnusta liittyäkseen parviklusteriin.

Kuinka se on tarkalleen? Kopioi koko päällikön telakointimoottorissa luotu tunnus, liitä se solmun telakointimoottoriin ja suorita se. Yllä olevan kuvakaappauksen korostettu osa on merkki. Kun tunniste suoritetaan työntekijäsolmussa, se näyttää alla olevalta kuvakaappaukselta.

Mikä tahansa solmu, joka liittyy klusteriin, voidaan myöhemmin ylentää johtajaksi. Jos haluat telakointimoottorin liittyvän manageriksi, suorita alla oleva komento managerin lopussa:

$ docker parvi liittymiskoodin hallinta

Ja myöhemmin, jos haluat solmun tunnuksen liittyvän klusteriin, suorita seuraava komento:

$ docker -parvi liittymiskoodisolmu

Mene eteenpäin ja suorita tunnus jokaisessa haluamassasi solmussa liittyäksesi klusteriin. Kun kaikki tämä on valmis, voit suorittaa telakointisolmujen luettelokomennon tarkistaaksesi, kuinka monta solmua on liittynyt klusteriin niiden tilan kanssa. Komento on:

$ telakointisolmu ls

Kuvakaappaus on alla:

Docker-kuvan luominen kulmasovellukselle

Jos kaikki on hyvin, voimme aloittaa Swarm-palvelumme edellyttäen, että Docker Image on rakennettu. Docker-kuva voidaan rakentaa Docker-tiedostosta. Sovellusten rakentamiseen käytetty Dockerfile on alla:

FROM solmusta: 6 RUN mkdir -p / usr / src / app WORKDIR / usr / src / app COPY package.json / usr / src / app RUN npm välimuisti puhdas RUN npm install COPY. / usr / src / app EXPOSE 4200 CMD ['npm', 'start']

Docker-tiedostoa käytetään komentosarjan toteuttamiseen mukautetun Docker-kuvan rakentamiseksi peruskuvasta. Kuten näette, käyttämäni peruskuva on ”Solmu: 6”. NodeJS on Docker Hubin kuva I, joka on merkitty versiolla 6.

Sitten luon uuden Docker-hakemiston kontin sisälle ja teen siitä kontin sisällä olevan työhakemiston.

Kopioin ”package.json” -tiedoston paikallisesta koneestani kontin työhakemistoon. Määritän sitten 'RUN npm cache clean' ja 'RUN npm install' -komennot. npm asentaa komento lataa version package.json mainituista riippuvuuksista.

Kopioin sitten kaikki projektikoodit paikallisesta koneesta konttiin, paljastaen porttinumeron 4200 Angular-sovelluksen käyttämistä varten selaimessa ja lopuksi määrittelen npm start -komennon, joka säilyttää sovelluksen.

Luo nyt Docker-kuva tämän Docker-tiedoston perusteella suorittamalla seuraava komento:

$ docker build -t -kulmakuva.

Huomautus: Docker Images on rakennettava klusterin kaikkiin solmuihin. Ilman sitä kontteja ei voida kehrätä muissa Docker-moottoreissa.

Docker Swarm -palvelun käynnistäminen

Ottaen huomioon, että Docker-kuvamme on rakennettu, voimme kääntää säiliön tästä kuvasta. Mutta teemme jotain parempaa: luomme siitä Docker Swarm -palvelun. Parvi-palvelun luomisen komento on:

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

Tässä ”nimi” -lippua käytetään nimeä palvelukselleni ja ”p” -lippua käytetään paljastamaan konttiportti isäntäportille. Olen määrittänyt pack.json-tiedostossa säilöportin, jolla Angular-sovellusta isännöidään. Ja tämän komennon 4200 auttaa kartoittamaan kontin portin 4200 isännän porttiin 4200. 'kulmakuva' on aiemmin rakentamani kuvan nimi.

Muistaa : Kun luot palvelun, sitä voidaan isännöidä missä tahansa klusterin telakointimoottorissa. Parven johtaja päättää, missä sitä isännöidään. Mutta riippumatta siitä, missä solmussa sitä isännöidään, sovellusta voidaan käyttää localhost: 4200: lla mistä tahansa klusteriin liitetystä solmusta.

__itsessään)

Kuinka se on mahdollista? Koska Swarm paljastaa sisäisesti porttinumerot kaikkien klusterin muiden solmujen saataville. Tämä tarkoittaa, satama nro. 4200 millä tahansa klusterin solmulla / hallinnalla tekisi kulmasovelluksen.

Mitä nyt? Onko säiliö aktiivinen?

Voit tarkistaa, onko palvelu kontistoitu suorittamalla telakointipalvelulista-komento. Mutta kontin käyttöönotto voi kestää hetken. Alla on komento:

$ telakointipalvelu ls

Tämä komento luetteloi kaikki Swarm-klusterin hallinnoimat palvelut. Meidän tapauksessamme sen pitäisi näyttää yksi aktiivinen säiliö. Katso alla olevaa kuvakaappausta.

Tässä ”REPLICAS = 1/1” osoittaa, että kyseisessä säilössä on yksi ainoa ”palvelu” klusterissa. Ja ”MODE = replikoitu” osoittaa, että palvelu replikoidaan klusterin kaikkiin solmuihin.

Nyt, jotta voimme tunnistaa, missä solmussa / ylläpitäjässä, sovellusta isännöidään, voimme suorittaa komennon Docker service ps -komennon, jota seuraa säilön nimi. Komento on:

$ docker-palvelu ps Angular-App-Container

Kuvakaappaus samasta on alla.

Tässä mainitaan yksityiskohdat solmusta, jolla sovellusta isännöidään, sekä palvelun aloittamiseen käytetyn komennon.

Docker ps -komento valaisee aktiivisen säilön yksityiskohtia. Komento on:

$ telakka ps

Katso alla olevaa kuvakaappausta.

Mutta tämä komento toimii vain klusterinhallinnassa ja solmussa, jossa palvelua todella isännöidään.

Voit tarkistaa solmujen määrän suorittamalla solmujen luettelokomennon. Komento on:

$ telakointisolmu ls

Voit tarkistaa tietyssä isännässä käynnissä olevat säilöt suorittamalla solmu ps -komennon. Komento on:

$ telakointisolmu ps

Jos muistat, mainitsin aiemmin, että palvelu on tällä hetkellä käynnissä toistetussa tilassa. Tämä tarkoittaa, että palvelu replikoidaan klusterien kaikissa solmuissa. Luuletko, että on olemassa vaihtoehto?

Ehdottomasti! On jotain, jota kutsutaan globaaliksi moodiksi. Tässä tilassa tämän säilön palvelu on käynnissä klusterin jokaisella / ylläpitäjällä. Muista pysäyttää nykyinen palvelu / kontti ennen kuin pyörität toista säiliöryhmää.

Komento sitä varten on:

$ docker service rm Angular-App-Container

Komento konttia pyöritettäväksi globaalissa tilassa on:

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

Tämä loisi 3 palvelua klusterin 3 solmuun. Voit vahvistaa sen suorittamalla telakointipalveluluettelokomennon. Kuvakaappaus tästä on alla.

Kun telakointiaseman ps-komento suoritetaan, näet jotain tällaista:

Kuten näette, siinä sanotaan, että tila toistetaan ja tämän säiliön kopiot ovat 3. Nyt tulee tämän blogin paras osa.

Jos haluat, että kolmen kopion välillä on 2 kopiota palveluista, voimme käyttää kopioiden lippua. Katso alla olevaa komentoa:

$ docker -palvelu create --name 'Angular-App-Container' -p 4200: 4200 --replicas = 2 kulmakuva

Huomaat, että nämä 2 palvelua ovat tasapainossa klusterin kolmen solmun välillä. Suorita telakointipalvelun prosessikomento varmistaaksesi, missä solmuissa säilöt ovat aktiivisia. Katso alla olevaa kuvakaappausta. Säilöt ovat aktiivisia yhdessä managerisolmussa ja yhdessä työntekijäsolmussa.

Työntekijäsolmusta voit tarkistaa, että säilö on käynnissä suorittamalla komento ‘docker ps’.

Docker-parvi korkeaan saatavuuteen

Nyt varmistaaksemme, että klusterissamme on paljon käytettävyyttä, meidän on koettava skenaario, jossa yksi solmuista menee alas ja muut klusterin solmut korvaavat sen. Voimme saada aikaan kyseisen skenaarion pysäyttämällä säilön manuaalisesti yhdestä solmusta tämän komennon avulla:

$ docker stop Angular-App-Container

Suorita yllä oleva komento solmussa: Worker-1, jossa säilö on käynnissä.Suorita johtajalta komento:

$ docker-palvelu ps Angular-App-Container

Huomaat nyt, että säilö on nyt käynnissä solmussa: Worker-2 ja Manager. Se on kuitenkin suljettu solmusta: Worker-1. Sama näkyy alla olevasta kuvakaappauksesta.

Näin Dockerin korkea saatavuus on saavutettu. Minän huolimatta siitä, että kontti ei ole aktiivinen työntekijä 1: ssä, sovellus voidaan hahmottaa kyseisen työntekijäsolmun portin numerolla 4200. Tämä johtuu siitä, että se on sisäisesti yhdistetty klusterin muihin solmuihin ja se pystyy renderöimään sovelluksen selaimessa.

Korkea saatavuus palvelujen laajentamisen jälkeen

Olipa kyse replikoidussa tilassa tai globaalissa tilassa, voimme lisätä klusterissamme toimivien palvelujen määrää. Ja jopa suurentamisen jälkeen pystymme säilyttämään korkean käytettävyyden. Mahtava, eikö olekin?

luoda satunnainen merkkijono java

Mutta palataksemme asiaan, katsotaanpa, kuinka helppoa on kasvattaa klusterissamme olevien palvelujen määrää. Olettaen, että klusterissamme on joko 2 tai 3 kopiota, laajennetaan palvelut 5: een suorittamalla vain yksi komento. Komento on:

$ docker -huippuasteikko Angular-App-Container = 5

Kuvakaappaus tästä on alla.

Suorittamalla telakointipalveluluettelokomento, huomaat, että kopioiden lukumäärä on nyt 5. Ja suorittamalla telakointipalvelun ps -komento palvelun nimen kanssa näet, kuinka 5 palvelua ovat tasapainossa ja jakautuneet 3 solmuun . Komennot ovat:

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

Ja lopuksi Docker Swarm -asennuksessa, jos et halua, että esimiehesi osallistuu prosessiin ja pitää sen varattuina vain prosessien hallintaan, voimme tyhjentää johtajan isännöimästä mitään sovelluksia. Koska se toimii näin maailmassa, eikö olekin? Johtajat ovat vain muiden työntekijöiden johtamiseen. Joka tapauksessa komento tehdä se on:

$ docker-solmun päivitys - käytettävyyden tyhjennys Manager-1

Voit tarkistaa, osallistuuko päällikkö nyt klusteriin suorittamalla telakointisolmujen luettelokomennon ja telakointipalvelun ps-komennon:

$ docker-solmu ls $ docker-palvelu ps Angular-App-Container

Nyt voit huomata, että säilöpalvelut on jaettu Työntekijän solmujen välillä ja Manager-solmu on todella tyhjennetty minkään palvelun säilöimisestä. Kuvakaappaus on alla.

Joten tämä lopettaa tämän blogin Docker Swarmissa. Toivon, että tämä blogi selitti kuinka tärkeää on toteuttaa Swarm-tila korkean käytettävyyden saavuttamiseksi. Pysy kuulolla lisää blogeja tässä Docker-opetusohjelmassa.

Voit vaihtoehtoisesti katsoa alla olevan videon ymmärtääksesi kuinka Docker Swarm toimii. Kaikki edellä selitetyt käsitteet on käsitelty videossa.

Docker-parvi korkeaa saatavuutta varten Docker-opetusohjelma DevOps-opetusohjelma

Nyt kun olet oppinut Dockerista, tutustu Edureka, luotettava verkko-oppimisyritys, jolla on yli 250 000 tyytyväisen oppijan verkosto, joka levisi ympäri maailmaa. Tämä Edureka Docker -sertifiointikoulutus auttaa oppijoita saamaan asiantuntemusta Dockerin käyttöönotossa ja hallitsemisessa.

Onko sinulla kysymys meille? Mainitse se kommenttiosassa ja palaamme sinuun.