- Docker Swarm võimaldab teil luua sõlmede klastreid, et korraldada konteinerdatud teenuseid kõrge käideldavuse ja integreeritud koormuse tasakaalustamisega.
- Sõlme, halduri, töötaja, teenuse, ülesande ja ülekattevõrgu mõisted on aluseks Swarmi konteinerite haldamise ja levitamise mõistmisele.
- Käsklused nagu „docker swarm init”, „docker service create” või „docker service scale” muudavad rakenduste juurutamise, skaleerimise ja värskendamise lihtsaks.
- Swarm sobib väga hästi väikestesse ja keskmise suurusega projektidesse, integreerudes pilveteenuste, DevOps-tavade, tehisintellekti ja ärianalüütikaga.

Kümnete või sadade konteinerite haldamine mitmes masinas võib muutuda tõeliseks peavaluks, kui loodate ainult lihtsale Dockerile. Kui hakkate rääkima kõrgest käideldavusest, automaatsest skaleerimisest või seisakuvabadest juurutustest, vajate enamat kui lihtsalt üksikuid konteinereid: vajate konteinerite orkestreerimist . Ja siin tulebki mängu Docker Swarm, Dockeri natiivne lahendus konteinerite koordineerimiseks klastris.
Kui olete varem kasutanud Docker Compose'i ühel masinal ja leiate, et see ei ole reaalsetes keskkondades piisav, on Swarm järgmine loogiline samm. See võimaldab teil luua sõlmede klastri, jaotada teenuseid nende vahel, tasakaalustada koormust, asendada krahhi sattunud konteinereid ja lõpuks muuta hulgaliselt servereid üheks sidusaks ja tootmisvalmis platvormiks, ilma et peaksite otse Kubernetesesse hüppama, kui see tundub liiga tülikas või keeruline.
Mis on Docker Swarm ja miks see on konteinerite orkestreerimisel oluline?
Docker Swarm on otse Dockerisse sisseehitatud klastrite loomise ja orkestreerimise mootor . See ei ole väline tööriist, vaid pigem Docker Engine'i enda töörežiim, mis võimaldab teil grupeerida mitu masinat (füüsilist või virtuaalset) loogilisse klastrisse, mida nimetatakse parveks, millele saate teenuseid juurutada isoleeritud konteinerite asemel.
Swarmi ilu seisneb selles, et see abstrakteerib kogu sõlmede komplekti ja võimaldab teil töötada nii, nagu oleks teil üksainus "superserver". Teie defineerite teenused, nende koopiate arvu, avatud pordid ja piirangud ning Swarm otsustab, kus iga konteinerit (ülesannet) käivitada, kuidas neid sõlme rikke korral ümber jaotada ja kuidas liiklust nende vahel tasakaalustada.
Konteinerite orkestreerimise osas katab Docker Swarm paljude DevOps-meeskondade tüüpilised vajadused: lihtne horisontaalne skaleerimine, elementaarne kõrge käideolek, sisemine koormuse tasakaalustamine, sõlmedevahelised kihilised võrgud ja kontrollitud juurutused, mistõttu sobib see mikroteenuste arhitektuuridele . See on eriti huvitav väikeste ja keskmise suurusega projektide või organisatsioonide jaoks, kes on Dockeri ökosüsteemiga väga tuttavad ja ei vaja Kubernetes'i täielikku keerukust.
Swarm sobib hästi olukordadesse, kus lihtsus on võtmetähtsusega : laborid, testimiskeskkonnad, VKEde kohapealsed klastrid või isegi pilvepõhine tootmine, kui te ei soovi keerukat platvormi hallata. Lisaks integreerub see sujuvalt CI/CD torujuhtmete ja DevOps-praktikatega, mis juba kasutavad rakenduste pakendamiseks Dockerit.
Docker Swarmi põhimõisted: sõlmed, teenused ja võrgud
Enne kui hakkad käske hullumeelselt tippima , on oluline mõista, kuidas Swarm igale pusletükile viitab. Neid mõisteid näed pidevalt nii CLI-s kui ka dokumentatsioonis.
Sõlm on iga masin, mis on osa parvest; see võib olla füüsiline server, pilves asuv virtuaalmasin või isegi teie sülearvuti testimiskeskkonnas. Iga sõlm käitab Docker Engine'it ja registreerub klastris kindla rolli abil.
Haldurisõlm : See on klastri aju. See vastutab soovitud oleku säilitamise, ülesannete ajastamise ja toimingute orkestreerimise eest. Juhtimistasandi kõrge käideldavuse tagamiseks võib olla mitu haldurit, kuid üks neist tegutseb juhina ja koordineerib ülejäänuid.
Töösõlmed : need on parve "töötajad". Nad ei tee orkestreerimisotsuseid, vaid lihtsalt täidavad halduri poolt neile määratud ülesandeid (konteinereid). See võimaldab arvutusvõimsust skaleerida, lisades vajadusel rohkem töötajaid.
Teenus on Swarmis juurutamise ühik. See määratleb kasutatava konteineri kujutise, koopiate arvu, portid, keskkonnamuutujad, konfiguratsioonid, saladused ja muud valikud. Erinevalt üksiku konteineri käitamisest käsuga „docker run”, kirjeldab „docker service create” teenust, mida Swarm soovitud olekus hoiab.
Ülesanne on teenusega seotud ja sõlmele määratud konteineri konkreetne eksemplar. Kui taotlete teenust, millel on 3 koopiat, loob Swarm 3 ülesannet. Kui ülesanne ebaõnnestub, loob haldur koopiate arvu säilitamiseks uue.
Ülekattevõrk : see on hajutatud virtuaalvõrgu tüüp, mis võimaldab eri sõlmedes asuvatel konteineritel suhelda nii, nagu oleksid nad samas kohtvõrgus. Swarm tugineb neile ülekattevõrkudele teenuste ühendamiseks, koopiate vahelise koormuse tasakaalustamiseks ja rakenduste üksteisest isoleerimiseks.
Esimesed sammud: Docker Swarmi klastri initsialiseerimine ja testimine
Lihtsa parve seadistamine on üllatavalt lihtne, kui teie masinatesse on juba Docker installitud. Te ei vaja mingit lisatarkvara: lihtsalt lubage parverežiim ja ühendage sõlmed klastriga.
1. samm: looge esimene haldur . Käivitage masinas, mida soovite kasutada esialgse haldurisõlmena, järgmine käsk:
docker swarm init – reklaami-aadress
Parameeter `--advertise-addr` määrab IP-aadressi , mida teised sõlmed selle halduri vaatamiseks kasutavad. Pärast käsu käivitamist kuvab Docker automaatselt tokeni ja käsu, mis on valmis teistele sõlmedele töötajatena parvega liitumiseks.
2. samm: ühendage töötajasõlmed klastriga . Igas masinas, mis toimib töötajasõlmena, käivitage midagi sarnast:
docker swarmi liitumismärk :2377
Liitumistunnus ja halduri IP-aadress väljastatakse käsust `docker swarm init`. Juhtimiskommunikatsiooniks kasutatakse vaikimisi porti 2377. Sellest hetkest alates kuvatakse sõlm osana parvest ja on valmis ülesandeid vastu võtma.
Klastri oleku kontrollimine on sama lihtne kui minna halduri juurde (see ei tööta isoleeritud töötaja puhul) ja käivitada:
dokkimissõlm ls
See käsk näitab sulle kõiki parve sõlmi , nende ID-d, hostinime, rolli (haldur või töötaja) ja praegust olekut. Siit saad tuvastada, kas mõni sõlm on maas, tühjendusrežiimis või esineb ühenduse probleeme.
Teenuste juurutamine Docker Swarmis: esimesest nginxist tootmiskeskkonnani
Kui klaster on valmis ja töötab , algab huvitav osa: teenuste juurutamine. Üksikute konteinerite käivitamise asemel käsuga „docker run” defineeritakse teenused, mida Swarm automaatselt haldab ja tasakaalustab.
Lihtsa teenuse, näiteks Nginxi veebiserveri, loomine, millele pääseb ligi väljaspool klastrit, toimub järgmise käsuga:
dockeri teenuse loomine –nimi my-nginx -p 80:80 nginx
See käivitab teenuse nimega my-nginx , mis avab konteineri pordi 80 klastri sõlmede pordile 80. Swarm tegeleb teenuse avaldamise ja sissetulevate päringute koormuse tasakaalustamisega erinevate koopiate vahel, kui neid skaleerite.
Juurutatud teenuste loetlemine aitab teil jälgida, mis parves töötab:
dokkimisteenus ls
Siin näete teenuse nime, režiimi ja koopiate arvu praeguses/soovitud vormingus. Näiteks kui kuvate 3/5, tähendab see, et soovitud oleku saavutamiseks on ülesanded alles loomisel.
Konkreetse teenuse ülesannete üksikasjade ja oleku kontrollimine võimaldab teil tuvastada, millisel sõlmel iga eksemplar töötab:
dockeri teenus ps my-nginx
Väljund kuvab ülesandeid, määratud sõlme , olekut (Töötamine, Ettevalmistamine, Seiskamine jne), kasutatud kujutist ja tööaega. See on oluline juurutamise või koormuse tasakaalustamise probleemide tõrkeotsinguks.
Elutsükli haldus: teenuste skaleerimine, täiendamine ja kustutamine
Üks orkestreerimise suuri eeliseid on võimalus teenuseid skaleerida ja uuendada ilma serverite kaupa töötamata. Swarm teeb selle käsurealt üsna lihtsaks.
Docker Swarmis teenuse skaleerimine tähendab teenuse koopiate arvu määramist. Näiteks kui lõite my-nginxi ühe koopiaga ja soovite seda suurendada kolmeni:
Dockeri teenuse skaala my-nginx=3
Swarm tegeleb uute ülesannete ajastamise ja haldamisega saadaolevatel sõlmedel, arvestades töötajate ressursse ja olekut. Kui vajate hiljem veelgi rohkem mahtu, saate uuendada viie koopiani järgmiselt:
Dockeri teenuse skaala my-nginx=5
Teenuse kuvandi uuendamine on veel üks oluline punkt, eriti tootmiskeskkonnas. Konteinerite käsitsi peatamise ja kustutamise asemel saate teha kontrollitud uuendamise:
dockeri teenuse värskendus – pilt nginx: uusim my-nginx
See käsk annab Swarmile korralduse migreerida olemasolevad ülesanded järk-järgult uuele kujutisele, järgides määratletud värskendusstrateegiat (vaikimisi jooksvalt värskendamine). See minimeerib mõju lõppkasutajatele.
Teenuse eemaldamine, kui te seda enam ei vaja, toimub samuti parve tasandil, mitte üksiku konteineri tasandil:
dockeri teenus rm my-nginx
See peatab ja eemaldab Swarmist kõik seotud ülesanded , vabastades sõlmede ressursse. See on puhas viis komponentide eemaldamiseks, mis teie arhitektuuris enam mõttetud on.
Juhendatud harjutus: oma klastri seadistamine ja teenuse juurutamine
Mõistete kinnistamiseks pole midagi paremat kui väike harjutus , mida saab laborikeskkonnas korrata, kasutades kohalikke virtuaalmasinaid või odavaid pilveteenuseid.
Harjutus 1: Docker Swarmi klastri seadistamine . Idee seisneb vähemalt kolme sõlme olemasolus: üks haldurina ja kaks töötajatena. Halduris lubage parv järgmiselt:
docker swarm init – reklaami-aadress
Seejärel kopeeri väljundis kuvatav liitmiskäsk ja käivita see iga töötaja peal:
docker swarmi liitumismärk :2377
Kontrollige, kas kõik läks hästi :
dokkimissõlm ls
Näete halduri staatust Juht ja töötajate staatust Aktiivne. Kui mõni neist kuvatakse maas, kontrollige ühenduvust, tulemüüri ja Dockeri versiooni.
Harjutus 2: Teenuse juurutamine ja skaleerimine . Kui klaster on valmis, looge HTTP kaudu ligipääsetav nginx-teenus:
dockeri teenuse loomine –nimi my-nginx -p 80:80 nginx
Kontrolli selle olemasolu järgmiselt :
dokkimisteenus ls
Skaleerige teenus kolme koopiani, kasutades:
Dockeri teenuse skaala my-nginx=3
Kontrollige, kuhu ülesanded on paigutatud, kasutades järgmist:
dockeri teenus ps my-nginx
Harjutuse põhilahendusena peaksite nägema kolme ülesannet, mis on jaotatud erinevate sõlmede vahel (kui ressursse on piisavalt) ja klastri pordile 80 suunatud HTTP-päringute tegemisel suunab Swarm liikluse erinevatele koopiatele vastavalt oma sisemisele koormuse tasakaalustajale.
Docker Swarmi eelised käsitsi konteinerite haldamise ees
Swarmi kasutamine üksikute konteinerite käivitamise asemel pakub mitmeid eeliseid, mis ilmnevad hetkest, kui vajate enamat kui lihtsalt testimiskeskkonda.
Lihtne juurutamine, mis on integreeritud Docker CLI-sse : te ei pea õppima täiesti uut tööriista; teenuse ja klastri haldamise käsud on väga sarnased sellele, mida te juba teete Docker Runi, Docker PS-i või Dockeri kujutistega.
Sisseehitatud koormuse tasakaalustamine : Kui teenusele ligipääs on valitud `-p`, reklaamib Swarm vajalike sõlmede porti ja jaotab liikluse saadaolevate koopiate vahel. Päringute jaotamiseks ei ole vaja lisada tavalist välist koormuse tasakaalustajat, näiteks Traefik , mis lihtsustab algset arhitektuuri.
Kõrge käideldavus ja rikketaluvus : Kui konteiner jookseb kokku või töösõlm rikki läheb, tuvastab Swarm ülesannete kadumise ja proovib neid teistes sõlmedes uuesti luua, et säilitada koopiate arv. See hoiab ära paljud teenusekatkestused isoleeritud tõrgete tõttu.
Soovitud oleku tsentraliseeritud haldamine : te deklareerite, mitu koopiat soovite luua, millist kujutist kasutada, milliseid porte avada ja milliseid piiranguid rakendada, ning klaster hoolitseb selle oleku saavutamise eest. Ka tulevasi muudatusi (värskendused, skaleerimine, sõlme tühjendamine) hallatakse sellelt juhtimistasandilt.
Millal on mõttekas Docker Swarmi oma projektides kasutada?
Mitte kõik olukorrad ei vaja Kubernetes'i ega täiustatud mikroteenuseid . Docker Swarm sobib väga hästi mitmetesse kasutusjuhtudesse, kus on vaja tasakaalu lihtsuse ja orkestreerimisvõimaluste vahel.
Väikesed ja keskmise suurusega tootmisklastrid : kui haldate mõnda ärirakendust, API-t või sisemist teenust ja teie infrastruktuur pole tohutu, pakub Swarm teile vajalikku ilma, et peaksite õppima suurt ökosüsteemi.
Dockeriga tugevalt integreeritud meeskonnad , kes soovivad orkestreerimisele üle minna ilma Kubernetes'i õppimiskõverasse takerdumata. Kuna Swarm on osa Docker Engine'ist endast, on üleminek tavaliselt sujuvam ja kiirem.
Pilvekeskkonnad ja hajusarhitektuurid , kus soovite jätkata suurte pakkujate hallatud teenuste (andmebaasid, sõnumijärjekorrad, salvestusruum jne) kasutamist, samal ajal kui teie rakendused töötavad Swarmiga koordineeritud konteinerites. See on mõistlik viis lihtsuse ja pilvevõimaluste ühendamiseks.
DevOps ja automatiseerimine kasutavad olukordi , kus on vaja torujuhtmeid, mis loovad kujutisi, laadivad need registrisse ja juurutavad automaatselt klastrisse. Swarm integreerub hästi CI/CD tööriistadega ja hõlbustab kiireid pidevaid tarnetsüklit.
Kui vajate äärmist kontrolli, massiivset ökosüsteemi või keerulisi integratsioone, võib Kubernetes olla mõistlikum. Kuid paljude reaalsete projektide jaoks pakub Swarm vajalikku orkestreerimist väiksema operatiivse hõõrdumisega.
Praktilised juhendid ja DevOps-lähenemine: põhitõdedest edasijõudnute juurutusteni
Kui olete tundnud end Docker Swarmi kohta käivate hajutatud õpetuste, kummaliste tootmisvigade ja killustamata dokumentatsiooni keskel eksinuna, siis pole te üksi. Paljud arendus- ja operatsioonimeeskonnad leiavad end üksikutelt konteineritelt orkestreeritud platvormile üleminekul ülekoormatuna.
Põhjalik Swarmile keskenduv DevOps-juhend on tavaliselt jagatud mitmeks põhiplokiks. Esiteks tutvustab see Dockeri põhitõdesid: kujutiste loomist, konteinerite haldamist ja optimeerimist , registri kasutamist ning parimaid pakkimispraktikaid. See kindel alus on oluline, et orkestreerimine ei muutuks hiljem õudusunenäoks.
Järgmisena süveneme võrgustike ja andmete püsivuse valdkonda : Dockeri võrgutüübid (sild, host, overlay, MacVlan), mahtude haldamine ja andmete püsivus, samuti mitme konteineriga rakenduste juurutamine Docker Compose'i abil. See annab teile selge mudeli sellest, milline teie pinu peaks enne hajutatud parve juurutamist välja nägema.
Järgmine tase keskendub Swarmi teenuste rakendamisele , hõlmates kõike alates klastri initsialiseerimisest kuni täiustatud funktsioonideni, nagu saladused, konfiguratsioonid ja pinud. Siin töötate deklaratiivsete teenusedefinitsioonide, krüptitud volituste ja jagatud konfiguratsioonidega konteinerite vahel.
Teine oluline valdkond on koormuse tasakaalustamine, logimine ja jälgitavus : õpitakse, kuidas teenuseid õigesti avaldada, logisid üle vaadata, kitsaskohti tuvastada ja tõrkeotsingu tehnikaid rakendada, et säilitada igapäevane kõrge käideolek. Süsteemide jälgimiseks ja diagnoosimiseks on väga kasulik täiustatud jälgimisjuhend , mis hõlmab mõõdikuid ja teateid.
Lõpuks integreeritakse kõik DevOpsi torujuhtmetesse praktiliste programmeerimisharjutuste abil: alates automatiseeritud kujutiste loomisest kuni pideva juurutamiseni kogu klastris, tagades, et iga koodimuudatus jõuab usaldusväärselt ja korduvalt tootmiskeskkonda.
Põhitõdedest kaugemale: Dockeri võrgud ja järgmised sammud Swarmiga
Kui olete klastri ja esimeste teenuste käivitamise omandanud , on järgmine tase tavaliselt põhjalik arusaam sellest, kuidas teie konteinerid omavahel ja välismaailmaga suhtlevad.
Docker Bridge ja hostvõrgud haldavad suure osa ühe masina kommunikatsioonist, samas kui ülekattevõrgud on võtmetähtsusega konteinerite ühendamiseks eri sõlmede vahel parves. Nende erinevuste mõistmine, millal neid kasutada ja kuidas nad suhtlevad väliste tulemüüride ja koormuse tasakaalustajatega, on oluline, et vältida üllatusi tootmises.
Sellised võrgud nagu macvlan võimaldavad teil määrata konteineritele füüsilisest võrgust "päris" IP-aadresse, mis võib olla väga kasulik konkreetsetes keskkondades, kus vajate teenuseid, mis käituksid võrgu tasandil sõltumatute hostidena, kuid see lisab ka keerukust ja täiendavaid konfiguratsiooninõudeid.
Dockeri võrkudesse süvenemine aitab teil oma Swarmi teenuse disaini paremini teie organisatsiooni või pilveteenuse pakkuja võrgutopoloogiaga joondada, määratledes selgelt, millised teenused on sisemised, millised on avatud väljastpoolt, ja kuidas liiklust keskkondade vahel (arendus, testimine, tootmine) segmenteerida.
Teine huvitav Swarmi arendusvaldkond on saladuste ja konfiguratsioonide põhjalikum kasutamine volituste, sertifikaatide ja konfiguratsioonifailide haldamiseks ilma neid otse pildile manustamata või tavalisi keskkonnamuutujaid kasutamata. See suurendab turvalisust ja muudab keskkonna haldamise palju organiseeritumaks.
Docker Swarmi ümber ehitatud kohandatud arendus-, pilve- ja ärianalüütika teenused
Konteinerite orkestreerimine ei ole ülejäänud IT-ökosüsteemist isoleeritud . Kohandatud rakendustele ja tarkvarale spetsialiseerunud arendusettevõtted tuginevad sageli konteinerplatvormidele nagu Swarm, et pakkuda töökindlamaid ja skaleeritavamaid lahendusi.
Swarmi integreerimine AWS-i ja Azure'i pilveteenustega võimaldab paindlike klastrite juurutamist
ja kasutada hallatud pilvekomponente (andmebaase, sõnumijärjekordi, objektisalvestust), säilitades samal ajal otsese kontrolli konteineri täitmiskihi üle.
Paralleelselt sobivad tehisintellekt ja ettevõtetele mõeldud tehisintellekt väga hästi konteineritega orkestreeritud keskkonda: tehisintellekti mudelid, järeldusmikroteenused ja tehisintellekti agendid saavad töötada Swarm-teenustena, mis skaleeruvad vastavalt koormusele, takistades ühel masinal pudelikaelaks muutumist.
Ärianalüütika ja Power BI valdkonnas muudab Docker Swarmil juurutatud taustsüsteemi olemasolu API-dest, ETL-teenustest ja töötluskanalitest andmete usaldusväärse ekstraheerimise lihtsamaks. Orkestreerimine tagab, et need teenused on alati armatuurlaudade ja analüütika jaoks saadaval.
Selles kontekstis on üha olulisem ka küberturvalisus : hästi konfigureeritud klaster TLS-sidega, kontrollitud kuvavärskenduste, haavatavuste skaneerimise ja tsentraliseeritud saladuste haldamisega vähendab riske võrreldes sõltumatute konteinerite kaootilise juurutamisega. Lisaks parandavad turvalisuse tugevdamise tavad ja juurdepääsu kontroll keskkonna üldist kaitset.
Lõppkokkuvõttes võimaldab kohandatud arenduse, pilveteenuste, tehisintellekti ja ärianalüütika kombineerimine orkestreerimisplatvormil nagu Docker Swarm luua kaasaegseid, skaleeritavaid ja vastupidavaid lahendusi ilma tehnilist keerukust või tegevuskulusid suurendamata.
Docker Swarmi kui konteinerite orkestreerimisvahendi valdamine annab sulle DevOpsi maailmas väga võimsa positsiooni: hajutatud konteinerite ja habraste juurutustega maadlemisest saad liikuda tööle sidusa, skaleeritava ja turvalise klastriga, mis on võimeline toetama kõike alates lihtsatest veebirakendustest kuni hajutatud arhitektuurideni pilveteenuste, tehisintellekti, automatiseerimise ja integreeritud ärianalüütika lahendustega.
Indeks
- 1 Mis on Docker Swarm ja miks see on konteinerite orkestreerimisel oluline?
- 2 Docker Swarmi põhimõisted: sõlmed, teenused ja võrgud
- 3 Esimesed sammud: Docker Swarmi klastri initsialiseerimine ja testimine
- 4 Teenuste juurutamine Docker Swarmis: esimesest nginxist tootmiskeskkonnani
- 5 Elutsükli haldus: teenuste skaleerimine, täiendamine ja kustutamine
- 6 Juhendatud harjutus: oma klastri seadistamine ja teenuse juurutamine
- 7 Docker Swarmi eelised käsitsi konteinerite haldamise ees
- 8 Millal on mõttekas Docker Swarmi oma projektides kasutada?
- 9 Praktilised juhendid ja DevOps-lähenemine: põhitõdedest edasijõudnute juurutusteni
- 10 Põhitõdedest kaugemale: Dockeri võrgud ja järgmised sammud Swarmiga
- 11 Docker Swarmi ümber ehitatud kohandatud arendus-, pilve- ja ärianalüütika teenused
