Wat is Docker Swarm?

Docker Swarm is een containerorkestratietool die je kan helpen bij het beheren van meerdere containers in meerdere hostsystemen door een ‘zwerm’ te vormen. In dit artikel leggen we je uit wat Docker Swarm is, hoe het werkt en welke voordelen het biedt.

Development
1 mei 2020
Ruud van Falier

Wat is een Docker Swarm? 

Een Docker Swarm is een containerorkestratietool die je helpt bij het beheren van meerdere containers in meerdere hosts. De cluster van hosts of de verzameling fysieke machines wordt een zwerm genoemd. Een zwerm kan ook uit meerdere virtuele machines bestaan die op één host draaien en zijn samengevoegd tot een cluster.

Nadat de machines zijn geclusterd, kun je Docker-opdrachten uitvoeren op de machines die een cluster vormen.

Omdat Docker Swarm is inbegrepen als onderdeel van de Docker Engine, kun je de Docker-opdrachtregelinterface gebruiken om een zwerm te maken, services naar de zwerm te implementeren en te beheren hoe de zwerm zich gedraagt.


Twee soorten nodes in een Swarm

Een node is gewoon een exemplaar van de Docker-engine dat effectief deelneemt aan een zwerm.

Typisch worden de activiteiten van een cluster beheerd door een zwermbeheerder (beheerder node) die een set machines controleert die werknodes worden genoemd.

  1. Beheerdernode: Een beheerder node verdeelt, plant en wijst taken toe aan de werknodes in een zwerm. Het voert ook optioneel services uit voor de werknodes. Docker raadt een maximum van zeven beheerder nodes aan in een zwerm. Je kunt een zwerm maken met alleen beheerder nodes zonder een werknode, maar andersom is niet mogelijk.
  2. Werknode: Een werknode ontvangt instructies van een beheerder node en voert containers en services uit. Standaard is elke beheerder node ook een werknode en kan zijn taken uitvoeren als deze over de respectievelijke middelen beschikken.Top of Form


Hoe werkt een Docker Swarm?

Denk terug aan de definitie van een service uit het YAML-bestand dat we hebben gemaakt voor Docker Compose. Een service is niets anders dan het definiëren van de uitvoerbare taken voor nodes, inclusief informatie zoals welke containers te gebruiken en welke commando's uit te voeren binnen een container.

Telkens wanneer je een service naar de zwerm implementeert, beschouwt de beheerder node jouw definitie van de service als de gewenste staat. Hierop plant het deze service dienovereenkomstig op elke werknode in de vorm van vergelijkbare taken of replicataken. Elke replicataak roept een container op en draait onafhankelijk van elkaar. Bijvoorbeeld, wanneer je een service definieert die de Docker Swarm instrueert om drie instanties van een database uit te voeren, maakt Docker Swarm drie taken aan.

Waarom Docker Swarm?

Een van de redenen waarom Docker Swarm is gemaakt, is om een belangrijke kwetsbaarheid die wordt geboden door een enkel host systeem te verminderen.

Stel je een situatie voor waarin een oplossing is geïmplementeerd op een enkele host en deze host ongezond wordt, wat leidt tot het falen van de hele oplossing. Tenzij je een noodomgeving hebt, kun je de service niet langer gebruiken voor het doel waarvoor deze is gemaakt.

Dit is waar een Docker Swarm helpt, omdat het een multi-node omgeving biedt waarmee we onze services kunnen verdelen over meerdere hosts. Zelfs als één host faalt, kunnen de andere hosts blijven functioneren, waardoor de service ononderbroken blijft.

Bijvoorbeeld, in de onderstaande zwerm, als werknode 1 faalt, wijst de Docker Swarm automatisch de containers van node 1 toe aan node 2.


In het bovenstaande scenario heb je gezien wat er gebeurt wanneer een werknode uitvalt, maar wat als de beheerder node faalt, vooral als er slechts één beheerder node is. In dergelijke gevallen zullen de containers blijven draaien op hun respectievelijke werknodes, echter, je zult een aparte cluster moeten maken om de services van de mislukte beheerder node te herstellen naar hun oorspronkelijke staat. Dit zal leiden tot onnodige downtime.

Om downtime in het herstelproces te vermijden, raadt Docker aan om een oneven aantal beheerder nodes te implementeren. Bijvoorbeeld, configureer 3 beheerder nodes om het verlies van één beheerder node te tolereren zonder de noodzaak van downtime. Op dezelfde manier, 7 beheerder nodes om 2 beheerder nodes te tolereren, enzovoort.



Er zijn verschillende andere voordelen van het gebruik van Docker Swarm. Zo helpt Docker Swarm bij het benutten van containers en alle voordelen die het biedt. Evenzo is load balancing een ander belangrijk voordeel van het gebruik van Docker Swarm. Docker Swarm plant taken op zo'n manier dat elke container voldoende middelen heeft om te werken. De zwermbeheerder zorgt ervoor dat de werklasten van de containers worden toegewezen om uit te voeren op de meest optimale host voor de beste efficiëntie.

Basiscommando’s in Docker Swarm

Laten we nu enkele basiscommando's bekijken die je zullen helpen bij het maken van een zwerm, het toevoegen van nodes eraan, het bevorderen van een node, en het verlaten van de zwerm.

Om te beginnen, om een zwerm te maken, gebruik je het onderstaande commando in de CLI van Docker Desktop:

Het  commando instrueert Docker Swarm om het IP-adres van de beheerder node te configureren als 192.168.20.12. Dit is het adres waarop alle andere nodes in de zwerm toegang hebben tot deze beheerder node. De reactie op dit commando zal zijn:


 Hier ******* geeft een token aan dat automatisch wordt gegenereerd door Docker Swarm.

Om een werknode aan deze zwerm toe te voegen, gebruik je het onderstaande commando:

 


 Om een beheerder node aan deze zwerm toe te voegen, gebruik het onderstaande commando en volg de instructies:

Je kunt ook een werknode promoten tot een beheerder node met behulp van het onderstaande commando:

Hier is worker1 de naam van de tweede host die aan een zwerm is toegevoegd.

Om de zwerm te verlaten, gebruik het onderstaande commando:

 

Om een service naar een node te implementeren, gebruik het onderstaande commando:


 Hier is helloworld de naam van de service en partech de naam van de image. Er worden drie replicataken gemaakt voor de service helloworld.

Conclusie

In deze post hebben we gezien hoe Docker Swarm kan worden gebruikt in plaats van Docker Compose om meerdere containers te beheren in meerdere hostsystemen, wat niet mogelijk is in Docker Compose. Docker Swarm biedt ook verschillende andere voordelen ten opzichte van Docker Compose, zoals load balancing en de mogelijkheid om de services zelfs uit te voeren nadat een node is uitgevallen.

Wil je meer informatie? Neem dan contact op.

Cookies
Deze site gebruikt geanonimiseerde cookies. Klik op "Akkoord" als je akkoord gaat met het gebruik van cookies, of klik op "Aanpassen" om je voorkeuren te bepalen.
Deze site gebruikt geanonimiseerde cookies.