Vad är Docker Swarm Mode och när ska du använda det?

0
187

Swarm Mode är Docker ’ s inbyggda orkestrationssystem för skalning behållare över ett kluster av fysiska maskiner. Flera oberoende klienter som kör Docker Engine samlar sina resurser och bildar en svärm.

Funktionen levereras med Docker och innehåller allt du behöver för att distribuera appar över noder. Swarm Mode har en deklarativ skalningsmodell där du anger antalet kopior du behöver. Swarm -chefen vidtar åtgärder för att matcha det faktiska antalet kopior till din begäran och skapar och förstör behållare efter behov.

Swarms har också mycket mer funktionalitet. Kluster drar nytta av integrerade serviceupptäcktsfunktioner, stöd för rullande uppdateringar och routning av nätverkstrafik via externa lastbalanserare.

Så här kan du använda Swarm -läget för att ställa in enkla distribuerade arbetsbelastningar över en maskinpark. Du bör använda Swarm om du vill vara värd för skalbara program med redundans med en standard Docker-installation, inga andra beroenden krävs.

Skapa din egen svärm

Se till att du har installerat Docker innan du fortsätter. Du behöver hela Docker CE -paketet på varje maskin du vill lägga till i svärmen.

Annonsering

Utse en av dina värdar som svärmhanteraren. Denna nod kommer att orkestrera klustret genom att utfärda behörighetsplaneringsförfrågningar till de andra noder. Kör docker swarm init på chefen för att starta klusterinstallationsprocessen:

docker swarm init –advertise-addr 192.168.0.1

Ersätt IP-adressen med din chefsnodes riktiga IP. Kommandot kommer att avge ett kommando för dockare -svärm -anslutning som du bör köra på dina sekundära noder. De kommer sedan att gå med i svärmen och bli behöriga att vara värd för containrar.

När du har lagt till dina noder kör du dockerinformation på chefen för att inspektera klusterets status. Swarm -sektionen i kommandos utgång bör listas som “ aktiv. ” Kontrollera “ Noder ” count matchar antalet noder du har lagt till.

< p>Du kan få mer information om en nod genom att köra docker node ls. Detta visar varje nods unika ID, dess värdnamn och dess nuvarande status. Noder som visar en tillgänglighet av “ aktiv ” med statusen “ redo ” är friska och redo att stödja dina arbetsbelastningar. Kolumnen Manager Status anger noder som också fungerar som svärmhanterare. “ ledaren ” är noden med det övergripande ansvaret för klustret.

Distribuera en behållare

När dina noder är klara kan du distribuera en behållare i din svärm. Swarm -läge använder begreppet “ tjänster ” för att beskriva containerutplaceringar. Varje tjänstskonfiguration refererar till en Docker -bild och ett repliktal som ska skapas från den bilden.

dockertjänst skapar –replicas 3 –namn apache httpd: senaste

Detta kommando skapar en tjänst med httpd: senaste bilden för Apache -webbservern. Tre oberoende kopior kommer att skapas, vilket ger dig motståndskraft mot containeravslutningar och nodavbrott. Behållarrepliker kallas “ uppgifter ” i Docker Swarm -språkbruk.

Annonsering

Docker kommer kontinuerligt att behålla det begärda tillståndet. Om en av noderna faller offline kommer replikerna som den var värd att omplaneras till de andra. Du kommer att ha tre Apache-behållare som körs under tjänstens hela livstid.

Scaling Services

Du kan skala tjänster när som helst med dockaren service scale command:

docker service scale apache = 5

Docker kommer att lägga till två nya containerinstanser så att antalet repliker fortsätter att matcha det begärda antalet. De extra instanserna kommer att schemaläggas till noder med tillräckligt med ledig kapacitet för att stödja dem.

Tjänster kan också skalas med dockningsuppdatering:

docker service update apache –replicas = 5

When om du använder den här varianten kan du återställa ändringen med ett särskilt kommando:

docker service rollback apache

Tjänsten återgår till tre repliker. Docker kommer att förstöra två behållarinstanser, så att antalet replika repliker kan matcha det tidigare tillståndet igen.

Rolling Updates

Swarm mode stöder rullande uppdateringar där containerinstanser skalas stegvis. Du kan ange en fördröjning mellan distributionen av den reviderade tjänsten till varje nod i svärmen. Detta ger dig tid att agera på regressioner om problem noteras. Du kan snabbt återställa eftersom inte alla noder har fått den nya tjänsten.

Annonsering

Lägg till-uppdateringsfördröjningsflaggan till ett kommandotjänstskala för att aktivera rullande uppdateringar. Fördröjningen anges som en kombination av timmar h, minuter m och sekunder s. Svärmhanteraren uppdaterar varje behållarinstans individuellt. Du kan justera antalet uppgifter som uppdateras i en enda operation med flaggan –update-parallelism.

Så här skalar du en tjänst till 10 repliker och uppdaterar tre behållare åt gången med en fem minuters fördröjning mellan varje batch:

dockerstjänstskala-namn apache –replicas = 10-uppdateringsfördröjning 5m –update-parallelism 3

Managing Services

Många bekanta Docker -kommandon fungerar också med tjänster. Förbered vanliga containerhanteringskommandon med dockningstjänst för att lista tjänster, visa deras loggar och ta bort dem.

  • dockningstjänst inspekterar – Kontrollera de tekniska data för en namngiven tjänst.
  • docker -tjänstloggar – Visa loggutmatning som är associerad med en namngiven tjänst.
  • dockerstjänst ls – Lista alla löpande tjänster.
  • dockerstjänst ps – Visa de enskilda containerinstanserna som är inkapslade av en specifik tjänst.
  • docker service rm – Ta bort en tjänst med alla dess kopior. Det finns ingen bekräftelsefråga.

Förutom de grundläggande hanteringsåtgärder som beskrivits hittills har tjänsterna en mängd olika konfigurationsalternativ. Dessa kan tillämpas när du skapar en tjänst eller senare med uppdateringskommandot för dockare.

Tjänstalternativ inkluderar miljövariabler, hälsokontrollkommandon, DNS -inställningar, etiketter och omstartförhållanden. Körning av containerinstanser förstörs vanligtvis inte vid uppdatering av docker-tjänsten om du inte ändrar inställningar som kräver att en rekreation träder i kraft.

Exponerar nätverksportar

Containernätverksportar exponeras med –publish -flaggan för dockningstjänstskapande och uppdatering av dockningstjänst. Detta låter dig ange en målbehållarport och den offentliga porten för att exponera den som.

dockerstjänst skapa -namn apache -repliker 5 -publicera publicerad = 8080, target = 80 nginx: senaste annonsen

Nu kan du ansluta till port 8080 på någon av dina arbetarnoder för att komma åt en instans av NGINX -tjänst. Detta fungerar även om noden du ansluter till faktiskt inte är värd för någon av tjänstens uppgifter. Du interagerar helt enkelt med svärmen och den tar hand om nätverksdirigeringen. Detta tillvägagångssätt kallas “ routing mesh. ”

Med ett alternativt alternativ kan du publicera containerportar på de enskilda noder där uppgifter körs. Lägg till läge = värd för -publicerad flagga för att aktivera detta. Tjänsten kommer bara att exponeras på de noder som är värd för den. Detta är användbart i fall där du vill ansluta till en specifik instans av tjänsten. Routingsnätet randomiserar den instans du ansluter till, oavsett vilken nod du använder för att ansluta.

Docker Swarm stöder också överlagringsnätverk. Dessa liknar vanliga Docker -nätverk. Genom att ansluta en tjänst till ett nätverk kan dess behållare kommunicera med alla andra tjänster i nätverket.

dockertjänst skapa-namnetjänst1-nätverk demo-nätverk min-image: senaste dockningstjänst skapa-namnetjänst2-nätverk demo-network my-image: senaste

Uppgifter som skapats av service1 och service2 kommer att kunna nås via överlagringsnätverket. Ett standardnätverk som kallas ingress ger standard routing mesh -funktion som beskrivs ovan.

Slutsats

Swarm -läge är en containerorkestrator som är inbyggd direkt i Docker. Eftersom det ingår som standard kan du använda det på alla värdar med Docker Engine installerat.

Genom att skapa en svärm kan du replikera behållare över en maskinpark. Swarm låter dig också lägga till flera chefsnoder för att förbättra feltoleransen. Om den aktiva ledaren hoppar ur klustret kan en annan chef ta över för att upprätthålla verksamheten.

Annonsering

Docker Swarm -läge jämför sig positivt med alternativa orkestreringsplattformar som Kubernetes. Det är lättare att komma igång eftersom det är integrerat med Docker och det finns färre koncept att lära sig. Det är ofta enklare att installera och underhålla på självhanterad hårdvara, även om förpackade Kubernetes-lösningar som MicroK8 har eroderat Swarm-bekvämlighetsfaktorn. Trots det är Swarm-läget fortfarande en livskraftig orkestrator för självbelastade arbetsbelastningar, särskilt om du letar efter en utvecklarorienterad CLI-driven lösning som är mindre krävande för driftsteam.