Három menedzser és öt munkás két helyszínen, alagúttal összekötve, és a docker service ls mindkét oldalon futó feladatokat mutat, miközben a szolgáltatások közötti hívások időtúllépéssel meghiúsulnak. A Swarm naplóiban semmi sem tűnik hibásnak. Ez a kombináció az adatsík-probléma jele: a vezérlősík megtalálta a csomópontokat, és a beágyazott keretek soha nem tették meg az utat.

A hálónak előbb kell léteznie, mint az overlaynek

A Swarm overlayje a beágyazott kereteket közvetlenül a csomópontok címei között továbbítja, ami azt jelenti, hogy minden csomópontnak olyan címre van szüksége, amelyet minden más csomópont fordítás nélkül elér, azon a felületen, amelyet az alagút biztosít. Az az alagút, amely csak ügyfeleket visz egy közzétett portra, nem elég. Az alsó rétegnek mindkét irányban csomóponttól csomópontig kell irányítania.

Ezt még a Swarm megérintése előtt tesztelje. Minden csomópontból ellenőrizze az útvonalat egy partner alagútcíméhez, pingelje meg, majd tesztelje a vezérlőportot. Ha a ping működik és a port nem, az alagút rendben van, és egy szűrő áll az útban.

ip -brief address
ip route get 10.20.0.12
ping -c3 10.20.0.12
nc -vz 10.20.0.12 2377

Ha az útvonal a fizikai felületre mutat tun0 vagy wg0 helyett, az overlay olyan címre ágyaz, amelyet a távoli helyszín nem ér el, és a tünet csomagvesztésnek tűnik.

Ellenőrizze, milyen címet hirdet meg minden csomópont

A daemon egy címet hirdet meg, és a partnerek azt használják az adatsíkhoz. Több hálózatú gazdagépen könnyű a LAN- vagy a nyilvános címet meghirdetni, miközben az alagút mást szállít. Vizsgálja meg, ahelyett hogy feltételezné, és a csatlakozáskor rögzítse a --advertise-addr kapcsolóval, ha az alapértelmezett hibás. Az a csomópont, amely csak általa elérhető címet hirdet meg, ettől még csatlakozik a swarmhoz, és a hiba később helyszínek között kommunikálni képtelen szolgáltatásként jelenik meg.

A meghirdetett cím későbbi megváltoztatása nem konfigurációszerkesztés, mert a csomópontnak kilépnie és újra csatlakoznia kell.

Jegyezze fel a meghirdetett címet csomópontonként, mert ez magyarázza a legtöbb aszimmetrikus hibát.

A masquerade a szokásos bűnös

Amikor egy átjáró ül a csomópontok és az alagút között, a gyakori hiba, hogy mindenre masquerade-et alkalmaznak, ami a fizikai felületet elhagyja. Ez az overlay belső címeit is átírja, így minden partner az átjáróból érkezőnek látszik, és a VXLAN partnerek már nem ismerik fel egymást. Az eredmény hiányzó vagy egyirányú beágyazott forgalom, miközben a sima pingek továbbra is működnek.

Irányítsa az overlay előtagját az átjárón keresztül, és hagyja lefordítatlanul. Ha a fordítás valóban szükséges egy másik előtaghoz, arra korlátozza, és soha ne arra a tartományra, amelyet az overlay használ.

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

Ellenőrizze a szabályok sorrendjét és szövegét is, mert a láncban korábbi széles MASQUERADE legyőzi a későbbi szűk kivételt.

A VXLANnak hely kell a csomagban

A VXLAN 50 bájtot ad a szállított keretekhez. Az 1500 bájtos alsó réteg, amely 1500 bájtos belső keretet szállít, olyan beágyazott csomagot hoz létre, amelyet egyetlen útvonal sem kézbesít, és a hiba szakaszos szolgáltatásfelderítésnek tűnik, nem méretproblémának. Vagy csökkentse az alagút MTU-ját mindkét végén, vagy állítsa be az overlay MTU-ját úgy, hogy az illesztőprogram olyan hasznos terhet hirdessen meg, amely belefér.

docker network create --driver overlay --attachable --opt com.docker.network.driver.mtu=1400 swarm-overlay

Az ingress hálózat automatikusan létrejön, ezért a módosítása eltávolítást és újralétrehozást jelent, nem helyben szerkesztést.

Ha csak az alagút egyik oldalát javítja, a kisebb MTU továbbra is az, amely számít.

Az adatsíkot figyelje, ne a naplókat

Rögzítse a VXLAN portot mindkét végén. Az egyik oldalról távozó és a másikon megérkező keretek azt jelentik, hogy az alsó réteg rendben van, és a probléma az overlayen belül van. A távozó, de soha meg nem érkező keretek útvonalat vagy szűrőt jelentenek. Az egyáltalán nem távozó keretek azt jelentik, hogy a forrás cím hibás.

A néhány másodperc után elmúló szolgáltatásfelderítési hibák általában a csomagkeretre vagy egy ingadozó útvonalra utalnak, nem a raft kvórumra.

Őrizze meg a működő ablak rögzítését, mert összehasonlítani a hibással gyorsabb, mint újraolvasni a konfigurációt.

Kapcsolódó cikkek