‫Voordat we onze services uitbreiden om over een aantal knooppunten te lopen en alle services met elkaar praten,
‫laten we een paar nieuwe concepten bespreken die Swarm ter tafel brengt.
‫De eerste is een nieuwe netwerkdriver genaamd Overlay, en je maakt eigenlijk gewoon een netwerk zoals
‫je gewend
‫bent om het te maken, docker-netwerk maakt en je plaatst een --driver-overlay.
‫Wat dat is, is in feite het creëren van een zwermbreed bridge-netwerk waar de containers over hosts op hetzelfde
‫virtuele netwerk toegang tot elkaar hebben, alsof ze zich op een VLAN bevinden.
‫Dit is alleen voor intra-zwermcommunicatie.
‫De overlay-driver speelt niet veel in het verkeer dat binnenkomt, omdat het een holistisch zwermbeeld van
‫het netwerk probeert te krijgen, zodat je niet constant aan het rommelen bent met netwerkinstellingen
‫op individuele knooppunten.
‫Je kunt ook volledige netwerkcodering inschakelen met behulp van IPiece SEC, waar het daadwerkelijk IPSec-tunnels zal opzetten tussen
‫alle verschillende knooppunten van je zwerm.
‫Maar het is standaard uitgeschakeld, alleen om prestatieredenen.
‫Wanneer u uw services maakt, kunt u deze toevoegen aan geen overlay-netwerken of aan een of meer overlay-netwerken.
‫Het hangt echt af van het ontwerp van uw toepassing.
‫Weet je, veel traditionele ontwerpen zouden de databases op een backend-netwerk hebben en
‫de webservers op een frontend-netwerk. Dan zou je misschien een API hebben tussen de twee die zich op beide netwerken
‫zou bevinden, of iets dergelijks.
‫En dat kan helemaal in Swarm.
‫Laten we dit in actie zien. Wat ik wil doen, is je laten
‫zien hoe het zou zijn als we het Drupal-voorbeeld van een eerdere opdracht met de Postgres-database als services zouden inzetten en vervolgens een Overlay-netwerk
‫zouden maken zodat ze met elkaar kunnen praten.
‫Eerst moeten we een netwerk maken, dus docker-netwerk maken, en dit is niet veranderd voor
‫Swarm, behalve dat we een nieuwe driver gaan gebruiken.
‫Ik noem het gewoon mydrupal.
‫OKE.
‫Dus ik ga een docker-netwerk ls doen, en je zult zien dat ik een nieuwe overlay heb. De ingang is er standaard.
‫Je zult ook een nieuwe zien omdat het een zwerm is, wat eigenlijk een uitgaand netwerk is waar we niet mee hoeven
‫te rommelen.
‫Laten we dus onze Postgres-service maken... docker-service naam maken... laten we het psql-netwerk noemen.
‫We gaan het verbinden met het mydrupal-netwerk.
‫Er is eigenlijk tab-voltooiing op de netwerknamen.
‫Onthoud dan dat ik die omgevingsvariabele moet toevoegen voor het Postgres-wachtwoord.
‫Zodat we er later op kunnen aansluiten.
‫Dan gaan we de Postgres-afbeelding gebruiken. Ziet er goed uit.
‫Je zult hier opmerken dat we niet de hele afbeelding downloaden en zo, omdat services niet op de voorgrond kunnen worden
‫uitgevoerd, omdat ze door de orkestrator en planner moeten gaan. We kunnen dus een docker-service
‫ls doen, en we kunnen zien dat een van hen actief is.
‫Als we een docker-service ps psql doen, kunnen we zien dat deze daadwerkelijk op Node 1 draait.
‫Dus ik kan een docker-containerlogboeken psql doen, en dan kan ik de logboeken daarvan zien.
‫Ja. Het lijkt erop dat het draait.
‫Oke.
‫Laten we onze andere service maken, dus ik
‫noem het gewoon Drupal.
‫We moeten ook verbinding maken met datzelfde netwerk. Vervolgens willen we de poort 80:80 publiceren zoals
‫we deden met een docker run-commando. En we gebruiken de Drupal-afbeelding.
‫OKE.
‫We zien dat het daar begint.
‫Er is een truc. Je kunt het watch-commando in Linux eigenlijk gebruiken om te kijken. Het zal in
‫principe... wat het doet, is dat het een opdracht steeds opnieuw uitvoert. Het is standaard geïnstalleerd
‫op Ubuntu.
‫Als je het horloge gewoon voor de docker-service ls plaatst, blijft het standaard elke twee seconden
‫draaien totdat... aha, zie je?
‫Nu hebben we één voor één.
‫Oké, en dan zal ik Control c daarbuiten houden. We kunnen een docker-service
‫ps drupal doen en zien dat drupal daadwerkelijk op Node 2 draait.
‫We hebben de database op Node 1.
‫We hebben de Drupal website draaiend op Node 2.
‫Dus, hoe weten ze hoe ze met elkaar moeten praten?
‫Nou, met behulp van de servicenamen.
‫Als ik een van de IP-adressen plak, zou het moeten verschijnen tijdens de Drupal-installatie. En als ik het de database hier vertel,
‫de databasenaam, doen we gewoon de postgres
‫opnieuw, postgres, mijn wachtwoord.
‫Voor de host hebben we, net als toen we bij Compose waren, de servicenamen in het Compose-bestand gemaakt, hier gaan
‫we de servicenaam gebruiken die we voor de databaseserver hebben gemaakt. Dus dat was psql.
‫Dit scherm vertelt ons in feite dat het in staat is om met de database over de knooppunten te praten en
‫het systeem in te stellen.
‫Dat is het mooie van Overlay, het is echt alsof alles zich op hetzelfde subnet bevindt.
‫Oke.
‫Dit hebben we dus niet meer nodig.
‫Ik ga dit voorbeeld heel snel afmaken om je het volgende coole ding over Swarm te laten zien. OKE.
‫Nu is deze site actief. Maar ik heb drie knooppunten, dus hoe weet ik op welk knooppunt het
‫zal zijn en op welke poort ik ervoor moet zorgen dat mijn DNS verwijst naar wanneer ik deze websitenaam maak?
‫In mijn geval heb ik drie IP-adressen, en ik kan ze alle drie kopiëren en alle drie
‫die
‫IP-adressen in en... oeps... Daar heb ik de verkeerde.
‫Dus als je ziet, lijkt het alsof de website op alle drie de knooppunten draait, omdat ik naar alle
‫drie de IP-adressen kijk.
‫Maar als ik hierheen ga en deze service ps drupal doe, weet ik dat het alleen node 2 draait.
‫Ik kan zelfs een docker-service inspecteren en zien dat het inderdaad maar één IP-adres heeft op
‫dat overlay-netwerk... hier.
‫Dus waarom reageert het op alle drie de hosts?
‫Dat leidt ons naar onze volgende, nieuwe functie.