Wat is de Docker Swarm-modus en wanneer moet u deze gebruiken?

0
194

Swarm Mode is Docker's ingebouwde orkestratiesysteem voor schalen containers over een cluster van fysieke machines. Meerdere onafhankelijke clients met Docker Engine bundelen hun middelen en vormen een zwerm.

De functie wordt geleverd met Docker en bevat alles wat u nodig hebt om apps op verschillende knooppunten te implementeren. Swarm Mode heeft een declaratief schaalmodel waarin je het aantal replica's aangeeft dat je nodig hebt. De zwermmanager onderneemt actie om het werkelijke aantal replica's af te stemmen op uw verzoek, waarbij indien nodig containers worden gemaakt en vernietigd.

Zwermen hebben ook veel meer functionaliteit. Clusters profiteren van geïntegreerde servicedetectiefuncties, ondersteuning voor rolling updates en routering van netwerkverkeer via externe load balancers.

Hier leest u hoe u de Swarm-modus kunt gebruiken om eenvoudige gedistribueerde workloads over een hele reeks machines in te stellen. Je moet Swarm gebruiken als je schaalbare applicaties met redundantie wilt hosten met een standaard Docker-installatie, geen andere afhankelijkheden vereist.

Creating Your Own Swarm

Zorg ervoor dat u Docker hebt geïnstalleerd voordat u doorgaat. Je hebt het volledige Docker CE-pakket nodig op elke machine die je aan de zwerm wilt toevoegen.

Advertentie

Wijs een van je hosts aan als de swarmmanager. Dit knoop punt orkestreert het cluster door aanvragen voor containerplanning uit te geven aan de andere knoop punten. Voer docker swarm init uit op de manager om het clusterconfiguratieproces te starten:

docker swarm init –advertise-addr 192.168.0.1

Vervang het IP-adres met het echte IP-adres van uw managerknooppunt. De opdracht zendt een docker swarm join-opdracht uit die u op uw secundaire knooppunten moet uitvoeren. Ze voegen zich dan bij de zwerm en komen in aanmerking voor het hosten van containers.

Nadat u uw knooppunten heeft toegevoegd, voert u docker-info uit op de manager om de status van het cluster te inspecteren. De sectie Swarm van de uitvoer van het commando moet worden vermeld als “actief.” Controleer de “Knooppunten” telling komt overeen met het aantal knooppunten dat u hebt toegevoegd.

< p>U kunt meer details over een knooppunt krijgen door docker-knooppunt ls uit te voeren. Dit toont de unieke ID van elk knooppunt, de hostnaam en de huidige status. Knooppunten die een beschikbaarheid van “actief” met de status “klaar” zijn gezond en klaar om uw workloads te ondersteunen. De kolom Managerstatus geeft knooppunten aan die ook optreden als zwermmanagers. De “leider” is het knooppunt met de algehele verantwoordelijkheid voor het cluster.

Een container implementeren

Zodra uw nodes gereed zijn, kunt u een container in uw zwerm implementeren. Zwermmodus gebruikt het concept van “services” om containerimplementaties te beschrijven. Elke serviceconfiguratie verwijst naar een Docker-image en een aantal replica's om van die image te maken.

docker-service create –replicas 3 –name apache httpd:latest

Dit commando maakt een service aan met behulp van de httpd:latest image voor de Apache-webserver. Er worden drie onafhankelijke replica's gemaakt, waardoor u bestand bent tegen containerbeëindiging en uitval van knooppunten. Containerreplica's worden “taken” in Docker Swarm-taal.

Advertentie

Docker handhaaft voortdurend de gevraagde status. Als een van de knooppunten offline gaat, worden de replica's die het hostte opnieuw gepland voor de andere. U zult drie Apache-containers hebben die gedurende de levensduur van de service worden uitgevoerd.

Scaling Services

U kunt services op elk moment schalen met behulp van de docker service scale commando:

docker service scale apache=5

Docker voegt twee nieuwe containerinstanties toe, zodat het aantal replica's blijft overeenkomen met het gevraagde aantal. De extra instanties worden gepland voor nodes met voldoende vrije capaciteit om ze te ondersteunen.

Services kunnen ook worden geschaald met docker-service-update:

docker-service-update apache –replicas=5

Wanneer u deze variant gebruikt, kunt u de wijziging terugdraaien met een speciale opdracht:

docker service rollback apache

De service wordt teruggezet naar drie replica's. Docker vernietigt twee containerinstanties, zodat het aantal live replica's weer overeenkomt met de vorige status.

Rolling Updates

Swarm-modus ondersteunt rolling updates waarbij containerinstanties stapsgewijs worden geschaald. U kunt een vertraging opgeven tussen het implementeren van de herziene service op elk knooppunt in de zwerm. Dit geeft u de tijd om te reageren op regressies als er problemen worden geconstateerd. U kunt snel terugdraaien omdat niet alle nodes de nieuwe service hebben ontvangen.

Advertentie

Voeg de –update-delay vlag toe aan een docker service scale opdracht om rollende updates te activeren. De vertraging wordt gespecificeerd als een combinatie van uren h, minuten m en seconden s. De zwermmanager zal elke containerinstantie afzonderlijk bijwerken. U kunt het aantal taken dat in één bewerking wordt bijgewerkt, aanpassen met de vlag –update-parallelism.

Hier leest u hoe u een service kunt schalen naar 10 replica's, waarbij u drie containers tegelijk bijwerkt met een vijf minuten vertraging tussen elke batch:

docker service scale –name apache –replicas=10 –update-delay 5m –update-parallelism 3

Services beheren

Veel bekende Docker-opdrachten werken ook met services. Voeg reguliere containerbeheeropdrachten toe aan docker-service om services weer te geven, hun logboeken te bekijken en te verwijderen.

  • docker-service inspect – Inspecteer de technische gegevens van een service op naam.
  • docker-servicelogboeken – Logboekuitvoer bekijken die is gekoppeld aan een benoemde service.
  • docker-service ls – Lijst met alle actieve services.
  • docker-service ps– Toon de individuele containerinstanties ingekapseld door een specifieke service.
  • docker service rm – Verwijder een service met alle bijbehorende replica's. Er is geen bevestigingsprompt.

Naast de basisbeheerbewerkingen die tot nu toe zijn beschreven, worden services geleverd met een uitgebreide reeks configuratie-opties. Deze kunnen worden toegepast bij het maken van een service of later met de opdracht docker service update.

Service-opties omvatten omgevingsvariabelen, statuscontroleopdrachten, DNS-instellingen, labels en herstartvoorwaarden. Lopende containerinstanties worden meestal niet vernietigd bij een update van de docker-service, tenzij u instellingen wijzigt waarvoor een recreatie nodig is om van kracht te worden.

Netwerkpoorten vrijgeven

Containernetwerkpoorten worden weergegeven met de vlag –publish voor het maken van de docker-service en de update van de docker-service. Hiermee kunt u een doelcontainerpoort specificeren en de openbare poort om deze als openbaar te maken.

docker-service create –name apache –replicas 5 –publish gepubliceerd=8080,target=80 nginx:latest Advertisement

Nu kunt u verbinding maken met poort 8080 op elk van uw werkknooppunten om toegang te krijgen tot een exemplaar van de NGINX-service. Dit werkt zelfs als het knooppunt waarmee u verbinding maakt niet echt een van de taken van de service host. Je communiceert eenvoudig met de zwerm en het zorgt voor de netwerkroutering. Deze benadering wordt de “routing mesh genoemd.”

Met een alternatieve optie kunt u containerpoorten publiceren op de afzonderlijke knooppunten waar taken worden uitgevoerd. Voeg mode=host toe aan de –published vlag om dit in te schakelen. De service wordt alleen weergegeven op de knooppunten die deze hosten. Dit is handig in gevallen waarin u verbinding wilt maken met een specifiek exemplaar van de service. Het routeringsnet verdeelt de instantie waarmee u verbinding maakt willekeurig, ongeacht het knooppunt dat u gebruikt om verbinding te maken.

Docker Swarm ondersteunt ook overlay-netwerken. Deze zijn vergelijkbaar met reguliere Docker-netwerken. Door een service aan een netwerk toe te voegen, kunnen de containers communiceren met andere services op het netwerk.

docker-service create –name service1 –network demo-network mijn-image:laatste docker-service create –name service2 –network demo-network my-image:latest

Taken gemaakt door service1 en service2 kunnen elkaar bereiken via het overlay-netwerk. Een standaardnetwerk genaamd ingress biedt de hierboven beschreven standaardrouting mesh-functionaliteit.

Conclusion

Swarm-modus is een container-orchestrator die rechtstreeks in Docker is ingebouwd. Omdat het standaard wordt meegeleverd, kun je het op elke host gebruiken waarop Docker Engine is geïnstalleerd.

Door een zwerm te maken, kun je containers repliceren over een hele reeks fysieke machines. Met Swarm kunt u ook meerdere managerknooppunten toevoegen om de fouttolerantie te verbeteren. Als de actieve leider het cluster verlaat, kan een andere manager het overnemen om de activiteiten te behouden.

Advertentie

De Docker Swarm-modus steekt gunstig af bij alternatieve orkestratieplatforms zoals Kubernetes. Het is gemakkelijker om mee aan de slag te gaan omdat het is geïntegreerd met Docker en er minder concepten zijn om te leren. Het is vaak eenvoudiger te installeren en te onderhouden op zelfbeheerde hardware, hoewel voorverpakte Kubernetes-oplossingen zoals MicroK8s de Swarm-gemaksfactor hebben uitgehold. Toch blijft de Swarm-modus een levensvatbare orkestrator voor zelf-gehoste workloads, vooral als u op zoek bent naar een op ontwikkelaars gerichte CLI-gestuurde oplossing die minder veeleisend is voor operationele teams.