Om du har containeriserat ditt utvecklingsarbetsflöde, håller du med om att Docker är ett av de bästa valen för versionskontroll. Docker Swarm är dock en av Dockers funktioner som används för att orkestrera komplexa appar.

Docker Swarm-arbetsmekanismen kan vara svår att knäcka till en början. Men oroa dig inte, vi kommer att bryta ner det i den här artikeln. Så vad är Docker Swarm? Varför använda det? Och hur fungerar det?

Vad är Docker Swarm och hur fungerar det?

Docker Swarm hänvisar till en grupp Docker-värdar (datorer) i nätverk som ett kluster för att leverera specificerade uppgifter. Varje Docker-värd i detta kluster är en nod, även kallad en arbetarnod.

För att säkerställa en effektiv fördelning av uppgifter behöver du en chefsnod. Idealiskt börjar en Docker Swarm-lägesinitiering med chefsnoden, och efterföljande noder blir arbetare.

Som operatör behöver du bara interagera med chefsnoden, som skickar instruktioner till arbetarna. Arbetarnoderna får alltid uppgiftstilldelning från chefsnoden och exekverar dem därefter.

instagram viewer

Men chefsnoden kan också delta i utförandet av uppgiften (som arbetare) eller hantera hanteringen rakt av. Du kan förhindra uppgiftsschemaläggning på hanteraren genom att ändra dess tillstånd från aktiva till dränera. Men ditt beslut att tilldela denna dubbla funktion kan bero på flera faktorer. I huvudsak vill du vara säker på att den har tillräckligt med resurser för att hantera flera roller innan du gör det.

Noder misslyckas. Så chefsnoden övervakar aktivt tillståndet för varje arbetarnod och aktiverar en feltolerant mekanism för att schemalägga uppgiften från en misslyckad nod till en annan.

Men vad händer om managernoden också kraschar? Intressant nog fortsätter svärmen att springa. Den enda fallgropen är att du inte längre kommer att kunna kommunicera med managernoden för att kontrollera klustret.

Den vanliga felsäkra metoden för att förhindra detta är att tilldela chefsrollen till många noder (Docker rekommenderar högst sju per kluster). Du kan sedan välja den primära chefsnoden från dem. När den primära chefen kraschar tar en av standby-cheferna rollen.

Du behöver dock inte oroa dig för rollbyte mellan noder eller tillståndsunderhåll i ett kluster. Flottens konsensusalgoritm (en feltolerant metod) inbyggd i Docker SwarmKit tar hand om detta.

Varför använda Docker Swarm?

Docker Swarm är praktiskt för att distribuera komplexa appar med hög skalbarhet. Ett av dess primära användningsfall är att decentralisera mikrotjänster. Varje mikrotjänst delar sedan en liknande behållare med de på andra arbetarnoder.

En annan anledning att använda Docker Swarm är att flera värdar kör uppgifter samtidigt i ett kluster. Detta i motsats till Docker Compose, som bara låter dig köra flera behållare på en Docker-motor.

Detta skalbara attribut hos Docker Swarm tillåter appar att vara konsekvent tillgängliga med noll latens. Det är till och med en av anledningarna till att du vill välj Docker framför andra virtualiseringsverktyg.

Och vad är mer? Till skillnad från enstaka Docker Containers, där en container stannar när den misslyckas, omfördelar Docker Swarm automatiskt uppgifter mellan de tillgängliga arbetarnoderna när en misslyckas.

Docker Swarm håller också en säkerhetskopia av varje stat. Så du kan alltid återställa nya svärmkonfigurationer till ett tidigare tillstånd. Säg att chefsnoden på en tidigare svärm misslyckas; du kan starta ett nytt kluster med fler förvaltarnoder och återställa det för att anpassa konfigurationen av den tidigare.

Det är också viktigt att nämna att interaktionen mellan chefsnoden och arbetarnoderna är säker.

Docker har många alternativ, och en av de närmaste är Kubernetes. Docker Swarm är dock enkel att använda och mer automatiserad. Till exempel, medan du kan behöva balansera belastning manuellt i vissa andra orkestreringsverktyg som Kubernetes, har Docker Swarm automatisk belastningsbalansering, vilket gör livet enkelt för DevOps.

Docker Swarm Architecture

Docker Swarm-arkitekturen kretsar kring tjänster, noder och uppgifter. Men var och en har en roll att spela för att köra stacken framgångsrikt.

Tjänster

Docker Swarm-tjänsten beskriver konfigurationen av Docker-bilden som kör alla behållare i en svärm. Den innehåller information om uppgifterna i ett kluster. En tjänst kan till exempel beskriva en Dockeriserad SQL-serverinstallation.

När du kör en tjänst tvingar den chefsnoden att synkronisera med dess konfigurationer. Chefsnoden kör sedan resten av arbetarnoderna baserat på de angivna inställningarna i tjänsten.

Tjänster i Docker Swarm kan vara globala eller replikerade.

Skillnaden mellan dem är att medan globala tjänster endast definierar en uppgift för alla noder i ett kluster, anger replikerade tjänster antalet uppgifter per nod.

Knutpunkter

En nod i Docker Swarm är en instans av hela Docker-körtiden, även känd som Docker-motorn. Svärmnoder kan vara fysiska eller virtuella maskiner. Se detta som ett nätverk av datorer som kör liknande processer (behållare).

Vanligtvis sträcker sig noder dock över flera datorer och servrar som kör Docker-motorn i verkliga applikationer. Och som nämnts tidigare kan en nod antingen vara en chefs- eller arbetarnod, beroende på rollen.

Chefsnoden lyssnar på svärmens hjärtslag och kontrollerar arbetarnoderna, som utför uppgifter som tilldelats dem av chefsnoden. Som tidigare nämnts kan du ha mer än en managernod i en svärm. Men helst, försök att begränsa antalet till under sju, eftersom att lägga till för många managernoder kan minska svärmprestandan.

Uppgifter

En uppgift definierar arbetet som tilldelas varje nod i en Docker Swarm. I bakgrunden startar uppgiftsschemaläggning i Docker Swarm när en orkestrator skapar uppgifter och skickar dem till en schemaläggare, som instansierar en behållare för varje uppgift.

Managernoden använder sedan schemaläggaren för att tilldela och omtilldela uppgifter till noder efter behov och specificerade i Docker-tjänsten.

Docker Swarm vs. Docker Compose: Vad är skillnaderna?

Människor använder ofta Docker Compose och Docker Swarm omväxlande. Även om båda involverar körning av flera behållare, är de olika.

Medan Docker Compose låter dig köra flera behållare på en enda värd, distribuerar Docker Swarm dem över flera Docker-motorer i ett kluster.

Du använder Docker Compose när du behöver spinna upp separata behållare för varje tjänst i din app. När en komponent kraschar stör den alltså inte de andra. Men när värddatorn misslyckas kraschar hela appen också.

Docker Swarm hjälper dig dock att köra många behållare på klustrade noder. Så varje komponent i din app sitter på flera noder. Och när en nod som hanterar en app-komponent kraschar, allokerar svärmen sin uppgift till en annan nod inom klustret och schemalägger om de pågående uppgifterna, vilket förhindrar driftstopp.

Därför, även om du kan ha driftstopp på Docker Compose, ser Docker Swarm till att din app fortsätter att köras med hjälp av backupservrar (arbetarnoder). Docker 1.13 stöder Docker Compose-distribution till Swarm-läge med hjälp av docker stack distribuera kommando.

Docker Swarm hjälper dig att distribuera komplexa appar

Containerization har överträffat virtuella maskiner i mjukvarudesign för kontinuerlig integration och kontinuerlig leverans (CI/CD). Därför är det en fördel om du vill bli en ovärderlig DevOps-expert att förstå Docker Swarm-mekanismen.

Du vet förmodligen hur man skapar en Docker-behållare eller till och med kör en Docker Compose för flera behållare i en värd. Men Docker Swarm är smidigare för att distribuera appar med komplex arkitektur. Det delar upp processer i enheter, förbättrar körningsåtkomsten och minskar eller till och med eliminerar riskerna för stillestånd.