Docker Swarm over VPN: oppgåver køyrer, tenestekall feilar
Oppgåver køyrer på begge nettstadene, og kall mellom tenester går ut på tid. Overlayet treng ruter frå node til node, uomsette adresser og plass til 50 byte VXLAN.
Tre managerar og fem arbeidarar på tvers av to nettstader, bundne saman med ein tunnel, og docker service ls viser oppgåver som køyrer på begge sider medan kall mellom tenester går ut på tid. Ingenting i Swarm-loggene ser gale ut. Den kombinasjonen er signaturen på eit problem i dataplanet: kontrollplanet fann nodane, og dei innkapsla rammene nådde aldri fram.
Nettet må finnast før overlayet gjer det
Overlayet i Swarm dytter innkapsla rammer rett mellom nodeadresser, som tyder at kvar node treng ei adresse som kvar annan node kan nå utan omsetjing, på grensesnittet tunnelen tilbyr. Ein tunnel som berre fører klientar til ein publisert port er ikkje nok. Underlaget må rute frå node til node i båe retningar.
Test det før du rører Swarm. Frå kvar node, sjekk ruta til tunneladressa til ein peer, ping ho, og test så kontrollporten. Viss ping verkar og porten ikkje, er tunnelen i orden og eit filter står i vegen.
ip -brief address
ip route get 10.20.0.12
ping -c3 10.20.0.12
nc -vz 10.20.0.12 2377
Viss ruta peikar på det fysiske grensesnittet i staden for tun0 eller wg0, vil overlayet kapsle inn mot ei adresse den fjerne nettstaden ikkje kan nå, og symtomet vil lese som pakketap.
Sjekk kva adresse kvar node annonserer
Damen annonserer éi adresse, og peerar brukar ho for dataplanet. På ein vert med fleire nett er det lett å annonsere LAN- eller den offentlege adressa medan tunnelen ber noko anna. Gransk ho i staden for å anta, og fest ho ved join med --advertise-addr når standardverdien er galen. Ein node som annonserer ei adresse berre han sjølv kan nå, blir likevel med i swarmen, og feilen viser seg seinare som tenester som ikkje kan snakke saman på tvers av nettstader.
Å endre den annonserte adressa seinare er ikkje ei konfigurasjonsendring, fordi noden må forlate og bli med på nytt.
Noter den annonserte adressa per node i notata dine, fordi ho forklarer dei fleste asymmetriske feila.
Masquerade er den vanlege syndaren
Når ein gateway sit mellom nodane og tunnelen, er den vanlege feilen å masquerade alt som forlèt det fysiske grensesnittet. Det skriv òg om dei indre adressene til overlayet, slik at kvar peer ser ut til å kome frå gatewayen og VXLAN-peerar sluttar å kjenne kvarandre att. Resultatet er manglande eller einsretta innkapsla trafikk medan vanlege ping framleis verkar.
Rut overlay-prefikset gjennom gatewayen og lat det vere uomsett. Viss omsetjing verkeleg er naudsynt for eit anna prefiks, avgrens ho dit og aldri til området overlayet brukar.
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
Sjekk rekkjefølgja på reglane så vel som regelteksten, fordi eit breitt MASQUERADE tidlegare i kjeda vinn over eit smalt unntak seinare.
VXLAN treng plass i pakken
VXLAN legg til 50 byte på rammene det ber. Eit underlag på 1500 byte som ber ei indre ramme på 1500 byte gjev ein innkapsla pakke som ingen sti vil levere, og feilen ser ut som periodisk tenesteoppdaging snarare enn eit storleiksproblem. Senk anten MTU-en til tunnelen i båe endar eller set MTU-en til overlayet slik at drivaren annonserer ei nyttelast som passar.
docker network create --driver overlay --attachable --opt com.docker.network.driver.mtu=1400 swarm-overlay
Ingress-nettet blir oppretta automatisk, så å endre det tyder å fjerne og opprette det på nytt i staden for å redigere det på staden.
Viss du berre reparerer éi side av tunnelen, er den minste MTU-en framleis den som tel.
Følg med på dataplanet, ikkje loggane
Fang VXLAN-porten i båe endar. Rammene som forlèt den eine sida og kjem fram til den andre, tyder at underlaget er i orden og problemet er inne i overlayet. Rammene som forlèt og aldri kjem fram, tyder ei rute eller eit filter. Rammene som ikkje forlèt i det heile, tyder at kjeldeadressa er galen.
Tenesteoppdagingsfeil som forsvinn etter nokre sekund, peikar vanlegvis på pakkebudsjettet eller ein ustabil sti, ikkje på raft-kvorum.
Ta vare på opptaket frå eit fungerande vindauge, fordi å samanlikne det med det øydelagde er snøggare enn å lese konfigurasjonen på nytt.