Docker Swarm iwwer VPN: d'Aufgaben lafen, d'Service-Aufruff feelen
D'Aufgaben lafe op béide Siten an d'Aufruff tëschent de Servicer lafe mat Zäitofschlag of. Den Overlay brauch Node-zu-Node-Routen, net iwwersaten Adressen a Plaz fir 50 Byte VXLAN.
Dräi Manager an fënnef Worker op zwou Siten, duerch en Tunnel verbonnen, an docker service ls weist Aufgaben déi op béide Säite lafen, wärend d'Aufruff tëschent de Servicer mat Zäitofschlag oflafen. Näischt an den Swarm-Logs gesäit falsch aus. Dës Kombinatioun ass d'Signatur vun engem Problem an der Datefläch: d'Kontrollfläch huet d'Node fonnt, an déi encapsuléiert Frames huet d'Rees ni gemaach.
De Mesh muss existéieren ier den Overlay et mécht
Den Overlay vu Swarm dréckt encapsuléiert Frames direkt tëschent den Nodeadressen, dat heescht all Node brauch eng Adress déi all aneren Node ouni Iwwersetzung erreeche kann, op der Interface déi den Tunnel ubitt. En Tunnel deen nëmme Clienten op en publizéierte Port bréngt ass net genuch. Den Underlay muss a béid Richtunge vun Node zu Node routeren.
Test dat ier Dir un Swarm gitt. Vun all Node aus, kontrolléiert d'Route zu der Tunneladress vun engem Peer, pingt se, an test dann de Kontrollport. Wann de Ping funktionéiert an de Port net, ass den Tunnel gutt an e Filter steet am Wee.
ip -brief address
ip route get 10.20.0.12
ping -c3 10.20.0.12
nc -vz 10.20.0.12 2377
Wann d'Route op d'physikalesch Interface weist amplaz vun tun0 oder wg0, wäert den Overlay op eng Adress encapsuléieren déi déi wäit Site net erreeche kann, an d'Symptom wäert wéi Paketverloscht liesen.
Kontrolléiert wéi eng Adress all Node annoncéiert
Den Daemon annoncéiert eng Adress, an d'Peeren benotzen se fir d'Datefläch. Op engem Host mat méi Netzwierker ass et einfach d'LAN- oder d'ëffentlech Adress z'annoncéieren wärend den Tunnel eppes anescht dréit. Inspektéiert se amplaz se unzehuelen, a fixéiert se beim Join mat --advertise-addr wann d'Standardwäert falsch ass. En Node deen eng Adress annoncéiert déi nëmme hien erreeche kann, geet trotzdem an de Swarm, an de Fehler weist sech méi spéit als Servicer déi net iwwer Siten hinweg schwätze kënnen.
D'annoncéiert Adress méi spéit z'änneren ass keng Konfiguratiounsännerung, well den Node muss erausgoen an nees bäitrieden.
Schreift d'annoncéiert Adress pro Node an Ären Notizen, well se déi meescht asymmetresch Fehler erklärt.
Masquerade ass de gewéinleche Schëllege
Wann e Gateway tëschent den Node an dem Tunnel sëtzt, ass de gewéinleche Fehler masquerade op alles unzewennen wat d'physikalesch Interface verléisst. Dat schreift och déi bannenzeg Adressen vum Overlay ëm, sou datt all Peer aus dem Gateway ze komme schéngt an d'VXLAN-Peeren ophalen sech géigesäiteg z'erkennen. D'Resultat ass fehlenden oder eenzäiteg encapsuléierte Verkéier wärend normal Ping nach funktionéieren.
Routet de Prefix vum Overlay duerch de Gateway a loosst en net iwwersat. Wann d'Iwwersetzung wierklech fir en anere Prefix néideg ass, begrenzt se do an ni op de Beräich deen den Overlay benotzt.
ip route add 172.16.0.0/22 via 10.20.0.1
iptables -t nat -I POSTROUTING -o tun0 -s 172.16.0.0/22 -j ACCEPT
Kontrolléiert d'Reiefolleg vun de Regelen esou wéi den Text, well e breedt MASQUERADE méi fréi an der Kette eng schmuel Ausnam méi spéit iwwerwënnt.
VXLAN brauch Plaz am Paket
VXLAN füügt 50 Byte zu de Frames déi et dréit. En Underlay vun 1500 Byte deen en bannenzege Frame vun 1500 Byte dréit produzéiert en encapsuléierte Paket deen keen Wee liwwert, an de Fehler gesäit wéi ënnerbrachen Service-Discovery aus, net wéi e Gréissteproblem. Entweder sëtzt d'MTU vum Tunnel op béide Enner erof oder setzt d'MTU vum Overlay sou datt den Treiber eng Notzlaascht annoncéiert déi dran passt.
docker network create --driver overlay --attachable --opt com.docker.network.driver.mtu=1400 swarm-overlay
Den Ingress-Netzwierk gëtt automatesch erstallt, also bedeit et z'änneren ewechzehuelen an nei ze erstellen amplaz et um Platz ze editéieren.
Wann Dir nëmmen eng Säit vum Tunnel reparéiert, ass déi kleng MTU nach ëmmer déi déi zielt.
Kuckt op d'Datefläch, net op d'Logs
Fänkt de VXLAN-Port op béide Enner. Frames déi eng Säit verloossen an op der anerer ukommen heescht den Underlay ass gutt an de Problem ass am Overlay. Frames déi fortginn an ni ukommen heescht eng Route oder e Filter. Frames déi guer net fortginn heescht d'Quelladress ass falsch.
Service-Discovery-Fehler déi no e puer Sekonne verschwannen deiten normalerweis op de Paketbudget oder e flatternde Wee hin, net op de Raft-Quorum.
Hält d'Opnam aus engem funktionéierende Fënster, well se mat der kaputter ze vergläichen ass méi séier wéi d'Konfiguratioun nach eng Kéier ze liesen.