- Docker Swarm vam omogoča ustvarjanje gruč vozlišč za orkestriranje kontejneriziranih storitev z visoko razpoložljivostjo in integriranim uravnoteženjem obremenitve.
- Koncepti omrežij vozlišč, upraviteljev, delavcev, storitev, nalog in prekrivnih omrežij so osnova za razumevanje, kako Swarm upravlja in distribuira vsebnike.
- Ukazi, kot so docker swarm init, docker service create ali docker service scale, olajšajo uvajanje, skaliranje in posodabljanje aplikacij.
- Swarm se zelo dobro ujema z malimi in srednje velikimi projekti, saj se integrira z oblačnimi storitvami, DevOps praksami, umetno inteligenco in poslovno inteligenco.

Upravljanje več deset ali stotin kontejnerjev, razporejenih po več računalnikih, lahko postane pravi glavobol, če se zanašate le na osnovni Docker. Ko govorimo o visoki razpoložljivosti, samodejnem skaliranju ali uvajanju brez izpadov, potrebujete več kot le posamezne kontejnerje: potrebujete orkestracijo kontejnerjev . In tukaj nastopi Docker Swarm, Dockerjeva izvorna rešitev za koordinacijo kontejnerjev v gruči.
Če prihajate z uporabe Docker Compose na enem samem računalniku in se vam zdi, da ni zadosten za resnična okolja, je Swarm naslednji logičen korak. Omogoča vam, da nastavite gručo vozlišč, porazdelite storitve po njih, uravnovesite obremenitev, zamenjate sesute vsebnike in na koncu preoblikujete množico strežnikov v eno samo, koherentno, produkcijsko pripravljeno platformo, ne da bi se morali takoj obrniti na Kubernetes , če se vam zdi preveč neroden ali zapleten.
Kaj je Docker Swarm in zakaj je pomemben pri orkestraciji kontejnerjev?
Docker Swarm je mehanizem za gručenje in orkestracijo, vgrajen neposredno v Docker. Ne gre za zunanje orodje, temveč za način delovanja samega Docker Enginea, ki omogoča združevanje več računalnikov (fizičnih ali virtualnih) v logično gručo, imenovano roj (swarm), na kateri namesto izoliranih vsebnikov namestite storitve.
Lepota Swarma je v tem, da abstrahira celoten nabor vozlišč in vam omogoča delo, kot da bi imeli en sam "super strežnik". Vi definirate storitve, njihovo število replik, izpostavljena vrata in omejitve, Swarm pa se odloči, kje bo zagnal vsak vsebnik (nalogo), kako jih bo prerazporedil, če vozlišče odpove, in kako bo uravnotežil promet med njimi.
Kar zadeva orkestracijo kontejnerjev , Docker Swarm pokriva tipične potrebe številnih DevOps ekip: enostavno horizontalno skaliranje, osnovno visoko razpoložljivost, notranje uravnoteženje obremenitve, večplastna omrežja med vozlišči in nadzorovane uvajanja, zaradi česar je primeren za arhitekture mikroservisov . Še posebej je zanimiv za majhne in srednje velike projekte ali za organizacije, ki so zelo dobro seznanjene z ekosistemom Docker in ne potrebujejo celotne kompleksnosti Kubernetes.
Swarm je zelo primeren za scenarije, kjer je preprostost ključnega pomena : laboratoriji, testna okolja, lokalni grozdi znotraj malih in srednje velikih podjetij ali celo produkcija v oblaku, ko ne želite upravljati kompleksne platforme. Poleg tega se brezhibno integrira s cevovodi CI/CD in praksami DevOps, ki že uporabljajo Docker za pakiranje aplikacij.
Ključni koncepti v Docker Swarm: vozlišča, storitve in omrežja
Preden začnete tipkati ukaze, kot da bi bili nori , je bistveno razumeti, kako se Swarm nanaša na vsak del sestavljanke. To so koncepti, ki jih boste nenehno srečevali v CLI in dokumentaciji.
Vozlišče je kateri koli stroj, ki je del roja; lahko je fizični strežnik, virtualni stroj v oblaku ali celo vaš prenosnik v testnem okolju. Vsako vozlišče izvaja Docker Engine in se registrira v gruči z določeno vlogo.
Upraviteljsko vozlišče : To so možgani gruče. Odgovorno je za vzdrževanje želenega stanja, razporejanje nalog in orkestriranje operacij. Za zagotavljanje visoke razpoložljivosti nadzorne ravnine je lahko več upravljavcev, vendar eden od njih deluje kot vodja in koordinira ostale.
Delovna vozlišča : To so »delavci« roja. Ne sprejemajo odločitev o orkestraciji; preprosto izvajajo naloge (vsebnike), ki jim jih dodeli upravitelj. To omogoča skaliranje računalniške zmogljivosti z dodajanjem delavcev po potrebi.
Storitev je enota uvajanja v Swarmu. Določa sliko vsebnika, ki jo je treba uporabiti, število replik, vrata, spremenljivke okolja, konfiguracije, skrivnosti in druge možnosti. Za razliko od zagona enega samega vsebnika z ukazom `docker run`, ukaz `docker service create` opisuje storitev, ki jo Swarm vzdržuje v želenem stanju.
Naloga je konkreten primerek vsebnika, povezanega s storitvijo in dodeljenega vozlišču. Če zahtevate storitev s 3 replikami, Swarm ustvari 3 naloge. Če naloga ne uspe, upravitelj ustvari novo, da ohrani število replik.
Prekrivno omrežje : To je vrsta porazdeljenega virtualnega omrežja, ki omogoča komunikacijo med vsebniki, ki se nahajajo na različnih vozliščih, kot da bi bili v istem lokalnem omrežju. Swarm se zanaša na ta prekrivna omrežja za povezovanje storitev, uravnavanje obremenitve med replikami in medsebojno izolacijo aplikacij.
Prvi koraki: inicializacija in testiranje gruče Docker Swarm
Nastavitev osnovnega roja je presenetljivo preprosta, če imate na svojih računalnikih že nameščen Docker. Ne potrebujete nobene dodatne programske opreme: samo omogočite način roja in vozlišča pridružite gruči.
1. korak: Ustvarite prvega upravitelja . Na računalniku, ki ga želite uporabiti kot začetno vozlišče upravitelja, zaženite:
docker swarm init –advertise-addr
Parameter `--advertise-addr` določa IP-naslov , ki ga bodo druga vozlišča uporabljala za ogled tega upravitelja. Po zagonu ukaza bo Docker samodejno prikazal žeton in ukaz, pripravljen za pridružitev drugih vozlišč roju kot delavci.
2. korak: Delovna vozlišča pridružite gruči . Na vsakem računalniku, ki bo deloval kot delovno vozlišče, zaženite nekaj podobnega:
žeton za pridružitev Docker Swarmu :2377
Žeton za pridružitev in IP-naslov upravitelja sta izpisana iz ukaza `docker swarm init`. Za nadzorno komunikacijo se privzeto uporabljajo vrata 2377. Od takrat naprej se bo vozlišče prikazalo kot del roja in bo pripravljeno za sprejemanje nalog.
Preverjanje stanja gruče je tako preprosto kot obisk upravitelja (ne deluje na izoliranem delavcu) in zagon:
Dockerjevo vozlišče ls
Ta ukaz vam prikaže vsa vozlišča v roju , njihov ID, ime gostitelja, vlogo (upravitelj ali delavec) in trenutno stanje. Od tu lahko zaznate, ali je katero vozlišče nedelujoče, v načinu odvajanja ali ima težave s povezavo.
Uvajanje storitev v Docker Swarm: od prvega nginxa do produkcije
Ko je gruča zagnana in deluje , se začne zanimiv del: uvajanje storitev. Namesto zagona posameznih vsebnikov z ukazom `docker run` definirate storitve, ki jih Swarm vzdržuje in samodejno uravnoteži.
Ustvarjanje preproste storitve , kot je spletni strežnik Nginx, dostopen od zunaj gruče, se izvede z ukazom, kot je ta:
dockerjeva storitev ustvari –ime my-nginx -p 80:80 nginx
S tem se zažene storitev my-nginx , ki izpostavi vrata 80 vsebnika vratom 80 vozlišč gruče. Swarm obdeluje objavljanje storitve in uravnoteženje obremenitve dohodnih zahtev med različnimi replikami, ko jih prilagajate.
Seznam nameščenih storitev vam pomaga spremljati, kaj se izvaja v roju:
docker service ls
Tukaj vidite ime storitve, njen način in število replik v trenutni/želeni obliki. Če na primer prikažete 3/5, to pomeni, da je še vedno v procesu ustvarjanja nalog za dosego želenega stanja.
Preverjanje podrobnosti in stanja opravil za določeno storitev vam omogoča, da ugotovite, na katerem vozlišču se izvaja posamezen primerek:
Dockerjeva storitev ps my-nginx
Izhod prikazuje naloge, dodeljeno vozlišče , stanje (Izvajanje, Priprava, Zaustavitev itd.), uporabljeno sliko in čas izvajanja. To je bistveno za odpravljanje napak pri uvajanju ali težavah z uravnoteženjem obremenitve.
Upravljanje življenjskega cikla: skaliranje, nadgradnja in brisanje storitev
Ena od velikih prednosti orkestracije je možnost skaliranja in posodabljanja storitev, ne da bi bilo treba iti od strežnika do strežnika. Swarm to precej poenostavi iz ukazne vrstice.
Skaliranje storitve v Docker Swarm pomeni določitev skupnega števila replik storitve, ki jih želite. Na primer, če ste ustvarili my-nginx z eno samo repliko in želite to število povečati na tri:
lestvica storitve docker my-nginx=3
Swarm upravlja razporejanje novih nalog na razpoložljivih vozliščih, pri čemer upošteva vire in stanje delavcev. Če kasneje potrebujete še več zmogljivosti, lahko nadgradite na pet replik z:
lestvica storitve docker my-nginx=5
Posodabljanje slike storitve je še ena ključna točka, zlasti v produkciji. Namesto ročnega zaustavljanja in brisanja vsebnikov lahko izvedete nadzorovano posodobitev:
Posodobitev storitve Docker – slika nginx: najnovejša my-nginx
Ta ukaz naroči Swarmu, naj postopoma migrira obstoječa opravila na novo sliko, pri čemer sledi določeni strategiji posodabljanja (privzeto se izvaja postopno posodabljanje). To zmanjša vpliv na končne uporabnike.
Odstranjevanje storitve, ko je ne potrebujete več, se izvede tudi na ravni roja, ne na ravni posameznega vsebnika:
Dockerjeva storitev rm my-nginx
To ustavi in odstrani vse povezane naloge iz Swarma , s čimer sprosti vire na vozliščih. To je čist način za razgradnjo komponent, ki v vaši arhitekturi nimajo več smisla.
Vodena praksa: nastavitev lastne gruče in uvajanje storitve
Za utrjevanje konceptov ni boljšega kot majhna vaja , ki jo lahko ponovite v laboratorijskem okolju, z lokalnimi virtualnimi stroji ali poceni primerki v oblaku.
Vaja 1: Konfigurirajte gručo Docker Swarm . Ideja je imeti vsaj tri vozlišča: eno kot upravitelja in dve kot delavca. V upravitelju omogočite swarm z:
docker swarm init –advertise-addr
Nato kopirajte ukaz join, prikazan v izhodu, in ga zaženite na vsakem delavcu:
žeton za pridružitev Docker Swarmu :2377
Preverite, ali je vse potekalo v redu z:
Dockerjevo vozlišče ls
Vodja bo imel status Vodja , delavci pa bodo imeli status Aktivni. Če je kateri od njih prikazan kot Nedelujoč, preverite povezljivost, požarni zid in različico Dockerja.
Vaja 2: Uvajanje in skaliranje storitve . Ko je gruča pripravljena, ustvarite storitev nginx, dostopno prek HTTP:
dockerjeva storitev ustvari –ime my-nginx -p 80:80 nginx
Preverite njegov obstoj z :
docker service ls
Storitev prilagodite na tri replike z uporabo:
lestvica storitve docker my-nginx=3
Preverite, kam so bile naloge nameščene z:
Dockerjeva storitev ps my-nginx
Kot osnovno rešitev vaje bi morali videti tri naloge, porazdeljene med različnima vozliščema (če je na voljo dovolj virov), in ko bo Swarm pošiljal zahteve HTTP na vrata 80 gruče, bo promet usmeril na različne replike v skladu s svojim notranjim uravnalnikom obremenitve.
Prednosti Docker Swarm pred ročnim upravljanjem kontejnerjev
Uporaba Swarma namesto zagona posameznih vsebnikov ponuja številne prednosti, ki postanejo očitne v trenutku, ko potrebujete več kot le preprosto testno okolje.
Preprosta namestitev, integrirana v Dockerjev CLI : ni vam treba naučiti se popolnoma novega orodja; ukazi za upravljanje storitev in gruč so zelo podobni tistim, ki jih že uporabljate z ukazi docker run, docker ps ali docker images.
Vgrajeno uravnoteženje obremenitve : Ko storitev izpostavite z `-p`, Swarm oglašuje vrata na potrebnih vozliščih in porazdeli promet med razpoložljive replike. Za porazdelitev zahtev vam ni treba dodati osnovnega zunanjega uravnalnika obremenitve, kot je Traefik , kar poenostavi začetno arhitekturo.
Visoka razpoložljivost in toleranca napak : Če se vsebnik sesuje ali delovno vozlišče odpove, Swarm zazna izgubo nalog in jih poskuša ponovno ustvariti na drugih vozliščih, da ohrani število replik. To preprečuje številne izpade storitev zaradi izoliranih napak.
Centralizirano upravljanje želenega stanja : določite, koliko replik želite, katero sliko uporabiti, katera vrata odpreti in katere omejitve uporabiti, gruča pa poskrbi za konvergenco v to stanje. Prihodnje spremembe (posodobitve, skaliranje, izpraznitev vozlišč) se prav tako upravljajo iz te nadzorne ravnine.
Kdaj je smiselno uporabiti Docker Swarm v svojih projektih
Kubernetes ali izboljšane mikrostoritve niso potrebne v vseh situacijah . Docker Swarm se zelo dobro poda v številne primere uporabe, kjer je zaželeno ravnovesje med preprostostjo in zmogljivostmi orkestracije.
Majhni in srednje veliki produkcijski grozdi : Če upravljate nekaj poslovnih aplikacij, API-jev ali notranjih storitev in vaša infrastruktura ni ogromna, vam Swarm ponuja tisto, kar potrebujete, ne da bi vas prisilil k učenju ogromnega ekosistema.
Ekipe, ki so močno integrirane z Dockerjem in želijo preiti na orkestracijo, ne da bi se pri tem obremenjevale s krivuljo učenja Kubernetes. Ker je Swarm del samega Docker Enginea, je prehod običajno bolj gladek in hitrejši.
Oblačna okolja in porazdeljene arhitekture , kjer želite še naprej uporabljati upravljane storitve večjih ponudnikov (baze podatkov, čakalne vrste sporočil, shranjevanje itd.), medtem ko vaše aplikacije delujejo v vsebnikih, orkestriranih s Swarmom. To je smiseln način za združitev preprostosti z zmogljivostmi oblaka.
DevOps in avtomatizacija se uporabljata v primerih , ko potrebujete cevovode, ki gradijo slike, jih nalagajo v register in samodejno nameščajo v gručo. Swarm se dobro integrira z orodji CI/CD in omogoča hitre cikle neprekinjene dobave.
Ko potrebujete izjemen nadzor, ogromen ekosistem ali kompleksne integracije, je Kubernetes morda bolj smiseln. Toda za številne projekte iz resničnega sveta Swarm zagotavlja potrebno orkestracijo z manj operativnimi trenji.
Praktični vodniki in pristop DevOps: od osnov do naprednih uvajanj
Če ste se kdaj izgubili med razpršenimi vadnicami, nenavadnimi produkcijskimi napakami in nepovezano dokumentacijo o Docker Swarmu, niste sami. Številne razvojne in operativne ekipe se znajdejo preobremenjene pri prehodu z individualnih vsebnikov na orkestrirano platformo.
Celovit vodnik DevOps, osredotočen na Swarm, je običajno organiziran v več ključnih sklopov. Najprej predstavlja osnove Dockerja: ustvarjanje slik, upravljanje in optimizacijo vsebnikov , uporabo registra in najboljše prakse pakiranja. Ta trdna podlaga je bistvena za preprečevanje, da bi orkestracija kasneje postala nočna mora.
Nato se bomo poglobili v mreženje in vztrajnost : vrste omrežij Docker (most, host, overlay, macvlan), upravljanje nosilcev podatkov in vztrajnost podatkov ter uvajanje aplikacij z več vsebniki z Docker Compose. To vam bo dalo jasen model, kako naj bi izgledal vaš sklad, preden ga uvedete v porazdeljeni roj.
Naslednja raven se osredotoča na implementacijo storitev Swarm , ki zajema vse od inicializacije gruče do naprednih funkcij, kot so skrivnosti, konfiguracije in skladi. Tukaj delate z deklarativnimi definicijami storitev, šifriranimi poverilnicami in konfiguracijami v skupni rabi med vsebniki.
Drugo bistveno področje je uravnoteženje obremenitve, beleženje in opazovanje : učenje pravilnega izpostavljanja storitev, pregledovanja dnevnikov, prepoznavanja ozkih grl in uporabe tehnik odpravljanja težav za ohranjanje visoke razpoložljivosti na dnevni osnovi. Za spremljanje in diagnosticiranje sistemov bo zelo koristen napredni vodnik za spremljanje , ki zajema meritve in opozorila.
Končno je vse integrirano v DevOps cevovode s praktičnimi vajami programiranja: od avtomatiziranih gradenj slik do neprekinjenega uvajanja v gruči, kar zagotavlja, da vsaka sprememba kode zanesljivo in ponovljivo pride v produkcijo.
Več kot osnove: Dockerjeva omrežja in naslednji koraki s Swarmom
Ko obvladate zagon gruče in prvih storitev , je naslednja raven običajno temeljito razumevanje, kako vaši vsebniki komunicirajo med seboj in z zunanjim svetom.
Dockerjev most in gostiteljska omrežja upravljajo večino komunikacije na enem samem računalniku, medtem ko so prekrivna omrežja ključna za povezovanje vsebnikov med različnimi vozlišči v roju. Razumevanje njihovih razlik, kdaj uporabiti katero od njih in kako delujejo z zunanjimi požarnimi zidovi in uravnalniki obremenitve je bistveno, da se izognemo presenečenjem v produkciji.
Omrežja, kot je macvlan, omogočajo dodelitev "pravih" IP-naslovov iz fizičnega omrežja vsebnikom, kar je lahko zelo uporabno v specifičnih okoljih, kjer potrebujete, da se storitve na ravni omrežja obnašajo kot neodvisni gostitelji, vendar to hkrati dodaja kompleksnost in dodatne zahteve glede konfiguracije.
»Poglobljen vpogled« v omrežja Docker vam bo pomagal bolje uskladiti zasnovo storitev Swarm z omrežno topologijo vaše organizacije ali ponudnika storitev v oblaku, pri čemer boste jasno opredelili, katere storitve so interne, katere so izpostavljene zunanjim in kako segmentirati promet med okolji (razvoj, testiranje, produkcija).
Drugo zanimivo področje razvoja v Swarmu je njegova globlja uporaba skrivnosti in konfiguracij za upravljanje poverilnic, potrdil in konfiguracijskih datotek brez njihove neposredne vdelave v sliko ali uporabe navadnih okoljskih spremenljivk. To poveča varnost in naredi upravljanje okolja veliko bolj organizirano.
Storitve razvoja po meri, oblaka in poslovne inteligence, zgrajene okoli Docker Swarma
Orkestracija kontejnerjev ni ločena od preostalega IT ekosistema . Razvojna podjetja, specializirana za aplikacije in programsko opremo po meri, se pogosto zanašajo na platforme kontejnerjev, kot je Swarm, da bi zagotovila bolj robustne in prilagodljive rešitve.
Integracija Swarma z oblačnimi storitvami AWS in Azure omogoča uvajanje prilagodljivih gruč
in izkoristiti upravljane komponente v oblaku (baze podatkov, čakalne vrste sporočil, shranjevanje objektov), hkrati pa ohraniti neposreden nadzor nad plastjo izvajanja vsebnika.
Vzporedno se umetna inteligenca in umetna inteligenca za podjetja zelo dobro ujemata v orkestrirano okolje s kontejnerji: modeli umetne inteligence, mikrostoritve sklepanja in agenti umetne inteligence lahko delujejo kot storitve Swarm, ki se prilagajajo obremenitvi in preprečujejo, da bi en sam stroj postal ozko grlo.
Na področju poslovne inteligence in Power BI -ja namestitev zalednega sistema na Docker Swarm olajša robustno pridobivanje podatkov iz API-jev, storitev ETL in procesnih cevovodov. Orkestracija zagotavlja, da so te storitve vedno na voljo za napajanje nadzornih plošč in analitike.
V tem kontekstu pridobiva na pomenu tudi kibernetska varnost : dobro konfiguriran grozd s komunikacijo TLS, nadzorovanimi posodobitvami slik, skeniranjem ranljivosti in centraliziranim upravljanjem skrivnosti zmanjšuje tveganja v primerjavi s kaotičnim nameščanjem neodvisnih vsebnikov. Poleg tega prakse utrjevanja in nadzor dostopa izboljšujejo splošno zaščito okolja.
Konec koncev vam kombinacija razvoja po meri, storitev v oblaku, umetne inteligence in poslovne inteligence na platformi za orkestracijo, kot je Docker Swarm, omogoča gradnjo sodobnih, prilagodljivih in odpornih rešitev brez povečanja tehnične kompleksnosti ali obratovalnih stroškov.
Obvladovanje Docker Swarm kot orodja za orkestracijo kontejnerjev vas postavi v zelo močan položaj v svetu DevOps: od težav z razpršenimi kontejnerji in krhkimi uvajanji se boste premaknili k delu s koherentnim, skalabilnim in varnim grozdom, ki lahko podpira vse od preprostih spletnih aplikacij do porazdeljenih arhitektur z oblačnimi storitvami, umetno inteligenco, avtomatizacijo in integriranimi rešitvami poslovne inteligence.
Kazalo
- 1 Kaj je Docker Swarm in zakaj je pomemben pri orkestraciji kontejnerjev?
- 2 Ključni koncepti v Docker Swarm: vozlišča, storitve in omrežja
- 3 Prvi koraki: inicializacija in testiranje gruče Docker Swarm
- 4 Uvajanje storitev v Docker Swarm: od prvega nginxa do produkcije
- 5 Upravljanje življenjskega cikla: skaliranje, nadgradnja in brisanje storitev
- 6 Vodena praksa: nastavitev lastne gruče in uvajanje storitve
- 7 Prednosti Docker Swarm pred ročnim upravljanjem kontejnerjev
- 8 Kdaj je smiselno uporabiti Docker Swarm v svojih projektih
- 9 Praktični vodniki in pristop DevOps: od osnov do naprednih uvajanj
- 10 Več kot osnove: Dockerjeva omrežja in naslednji koraki s Swarmom
- 11 Storitve razvoja po meri, oblaka in poslovne inteligence, zgrajene okoli Docker Swarma
