Docker Swarm VPN-i kaudu: ülesanded töötavad, teenusekutsed ebaõnnestuvad
Ülesanded töötavad mõlemas saidis ja teenuste vahelised kutsed aeguvad. Overlay vajab sõlmedevahelisi marsruute, tõlkimata aadresse ja ruumi 50 baidi VXLANi jaoks.
Kolm haldurit ja viis töölist kahes saidis, tunneliga ühendatud, ja docker service ls näitab mõlemal pool töötavaid ülesandeid, samal ajal kui teenuste vahelised kutsed aeguvad. Swarmi logides ei paista miski valesti olevat. See kombinatsioon on andmetasandi probleemi tunnus: juhtimistasand leidis sõlmed üles ja kapseldatud kaadrid ei jõudnud kunagi kohale.
Võrk peab eksisteerima enne overlayd
Swarmi overlay lükkab kapseldatud kaadrid otse sõlmede aadresside vahel, mis tähendab, et iga sõlm vajab aadressi, kuhu iga teine sõlm pääseb ilma tõlkimiseta, tunnelil pakutaval liidesel. Tunnel, mis viib ainult kliente avaldatud pordini, ei ole piisav. Alumine kiht peab marsruutima sõlmest sõlme mõlemas suunas.
Testige seda enne, kui Swarmi puutute. Igast sõlmest kontrollige marsruuti partneri tunneli aadressini, pingige seda ja seejärel testige juhtimisporti. Kui ping töötab ja port mitte, on tunnel korras ja filter on teel.
ip -brief address
ip route get 10.20.0.12
ping -c3 10.20.0.12
nc -vz 10.20.0.12 2377
Kui marsruut osutab füüsilisele liidesele, mitte tun0 või wg0, kapseldab overlay aadressile, kuhu kaugem sait ei pääse, ja sümptom näeb välja nagu paketikaotus.
Kontrollige, millist aadressi iga sõlm teavitab
Deemon teavitab ühte aadressi ja partnerid kasutavad seda andmetasandil. Mitme võrguga hostis on lihtne teavitada LAN- või avalikku aadressi, samal ajal kui tunnel veab midagi muud. Uurige seda, selle asemel et eeldada, ja kinnitage see liitumisel valikuga --advertise-addr, kui vaikeväärtus on vale. Sõlm, mis teavitab aadressi, kuhu ainult tema pääseb, liitub siiski swarmiga ja tõrge ilmneb hiljem teenustena, mis ei saa saitide vahel suhelda.
Teatatud aadressi hilisem muutmine ei ole konfiguratsiooni muutmine, sest sõlm peab lahkuma ja uuesti liituma.
Kirjutage teatatud aadress iga sõlme kohta märkmetesse, sest see selgitab enamikku asümmeetrilisi tõrkeid.
Masquerade on tavaline süüdlane
Kui lüüs asub sõlmede ja tunneli vahel, on tavaline viga rakendada masquerade'i kõigele, mis füüsilisest liidesest väljub. See kirjutab ümber ka overlay sisemised aadressid, nii et iga partner näib tulevat lüüsist ja VXLANi partnerid lakkavad üksteist ära tundmast. Tulemuseks on puuduv või ühesuunaline kapseldatud liiklus, samal ajal kui tavalised pingid töötavad edasi.
Marsruutige overlay prefiks lüüsi kaudu ja jätke see tõlkimata. Kui tõlkimine on tõesti vajalik mõne teise prefiksi jaoks, piirake see sinna ja mitte kunagi vahemikku, mida overlay kasutab.
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
Kontrollige reeglite järjekorda ja ka teksti, sest lai MASQUERADE ahelas varem võidab kitsa erandi hiljem.
VXLAN vajab paketis ruumi
VXLAN lisab kaadritele, mida kannab, 50 baiti. 1500 baidine alumine kiht, mis kannab 1500 baidist sisemist kaadrit, tekitab kapseldatud paketi, mida ükski tee ei toimeta kohale, ja tõrge näeb välja nagu katkendlik teenuseavastus, mitte nagu suuruse probleem. Kas vähendage tunneli MTU-d mõlemas otsas või seadke overlay MTU nii, et draiver teataks mahupärasest kasulikust koormusest.
docker network create --driver overlay --attachable --opt com.docker.network.driver.mtu=1400 swarm-overlay
Ingress-võrk luuakse automaatselt, seega tähendab selle muutmine eemaldamist ja uuesti loomist, mitte kohapeal muutmist.
Kui parandate ainult tunneli ühte poolt, jääb väiksem MTU ikkagi selleks, millel on tähtsust.
Jälgige andmetasandit, mitte loge
Püüdke VXLANi port mõlemas otsas. Kaadrid, mis lahkuvad ühelt poolt ja saabuvad teisele, tähendavad, et alumine kiht on korras ja probleem on overlay sees. Kaadrid, mis lahkuvad ega saabu kunagi, tähendavad marsruuti või filtrit. Kaadrid, mis ei lahku üldse, tähendavad, et lähteaadress on vale.
Teenuseavastuse tõrked, mis mööduvad mõne sekundi jooksul, osutavad tavaliselt paketieelarvele või kõikuvale teele, mitte rafti kvoorumile.
Hoidke püüdmist töötavast aknast, sest selle võrdlemine katkisega on kiirem kui konfiguratsiooni uuesti lugemine.