VPN orqali Docker Swarm: vazifalar ishlayapti, xizmat chaqiruvlari muvaffaqiyatsiz
Vazifalar ikkala saytda ham ishlayapti va xizmatlar orasidagi chaqiruvlar vaqt tugashi bilan yakunlanadi. Overlay'ga tugundan tugunga marshrutlar, tarjima qilinmagan manzillar va VXLAN uchun 50 bayt joy kerak.
Ikki saytda uchta menejer va beshta ishchi tunnel bilan ulangan, va docker service ls ikkala tomonda ishlayotgan vazifalarni ko'rsatmoqda, shu bilan birga xizmatlar orasidagi chaqiruvlar vaqt tugashi bilan yakunlanadi. Swarm jurnallarida hech narsa noto'g'ri ko'rinmaydi. Bu birikma ma'lumot tekisligi muammosining belgisidir: boshqaruv tekisligi tugunlarni topdi, va inkapsulatsiyalangan kadrlar yo'lni hech qachon bosib o'tmadi.
Tarmoq overlay'dan oldin mavjud bo'lishi kerak
Swarm overlay'i inkapsulatsiyalangan kadrlarni to'g'ridan-to'g'ri tugun manzillari orasiga suradi, ya'ni har bir tugunga har bir boshqa tugun tarjimasiz yetib boradigan manzil kerak, tunnel taqdim etgan interfeysda. Faqat mijozlarni e'lon qilingan portga olib boradigan tunnel yetarli emas. Pastki qatlam ikkala yo'nalishda ham tugundan tugunga marshrutlashi kerak.
Buni Swarm'ga tegishdan oldin sinab ko'ring. Har bir tugundan hamkorning tunnel manziliga marshrutni tekshiring, ping qiling, so'ng boshqaruv portini sinab ko'ring. Agar ping ishlab, port ishlamasa, tunnel yaxshi va yo'lda filtr bor.
ip -brief address
ip route get 10.20.0.12
ping -c3 10.20.0.12
nc -vz 10.20.0.12 2377
Agar marshrut tun0 yoki wg0 o'rniga jismoniy interfeysga ishora qilsa, overlay uzoq sayt yetib bora olmaydigan manzilga inkapsulatsiya qiladi va alomat paket yo'qotilishiga o'xshaydi.
Har bir tugun qaysi manzilni e'lon qilishini tekshiring
Daemon bitta manzilni e'lon qiladi va hamkorlar uni ma'lumot tekisligi uchun ishlatadi. Ko'p tarmoqli xostda tunnel boshqa narsani olib ketayotganda LAN yoki umumiy manzilni e'lon qilish oson. Taxmin qilish o'rniga uni tekshiring va standart noto'g'ri bo'lsa, qo'shilishda --advertise-addr bilan mahkamlang. Faqat o'zi yetib boradigan manzilni e'lon qilgan tugun ham swarm'ga qo'shiladi, va nosozlik keyinroq saytlar orasida gaplasha olmaydigan xizmatlar sifatida namoyon bo'ladi.
E'lon qilingan manzilni keyinroq o'zgartirish konfiguratsiyani tahrirlash emas, chunki tugun chiqib, qayta qo'shilishi kerak.
Har bir tugunning e'lon qilingan manzilini yozuvlaringizga yozib qo'ying, chunki bu asimmetrik nosozliklarning ko'pini tushuntiradi.
Masquerade odatiy aybdor
Tugunlar va tunnel o'rtasida shlyuz turgan bo'lsa, odatiy xato jismoniy interfeysdan chiqadigan hamma narsaga masquerade qo'llashdir. Bu overlay'ning ichki manzillarini ham qayta yozadi, shuning uchun har bir hamkor shlyuzdan kelayotgandek ko'rinadi va VXLAN hamkorlari bir-birini taniy olmay qoladi. Natija oddiy ping hali ishlayotganda yo'qolgan yoki bir tomonlama inkapsulatsiyalangan trafikdir.
overlay prefiksini shlyuz orqali marshrutlang va uni tarjimasiz qoldiring. Agar tarjima haqiqatan boshqa prefiks uchun kerak bo'lsa, uni o'sha yer bilan cheklang va hech qachon overlay ishlatadigan diapazonga qo'llamang.
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
Qoidalarning tartibini ham, matnini ham tekshiring, chunki zanjirda avvalroq turgan keng MASQUERADE keyingi tor istisnodan ustun keladi.
VXLAN paketda joy talab qiladi
VXLAN olib yurgan kadrlariga 50 bayt qo'shadi. 1500 baytli pastki qatlam 1500 baytli ichki kadrni olib yurganda hech bir yo'l yetkaza olmaydigan inkapsulatsiyalangan paket hosil bo'ladi va nosozlik o'lcham muammosi kabi emas, vaqti-vaqti bilan xizmatni topish kabi ko'rinadi. Yoki ikkala uchida tunnelning MTU'sini pasaytiring, yoki drayver sig'adigan foydali yukni e'lon qiladigan qilib overlay MTU'sini belgilang.
docker network create --driver overlay --attachable --opt com.docker.network.driver.mtu=1400 swarm-overlay
ingress tarmog'i avtomatik yaratiladi, shuning uchun uni o'zgartirish joyida tahrirlash emas, olib tashlab qayta yaratish demakdir.
Agar tunnelning faqat bir tomonini tuzatsangiz, kichik MTU baribir muhim bo'lib qoladi.
Jurnallarni emas, ma'lumot tekisligini kuzating
VXLAN portini ikkala uchida ushlang. Bir tomondan chiqib ikkinchi tomonga yetib boradigan kadrlar pastki qatlam yaxshi ekanini va muammo overlay ichida ekanini bildiradi. Chiqib hech qachon yetib bormaydigan kadrlar marshrut yoki filtrni bildiradi. Umuman chiqmaydigan kadrlar manba manzili noto'g'ri ekanini bildiradi.
Bir necha soniyadan keyin yo'qoladigan xizmatni topish nosozliklari odatda paket byudjetiga yoki tebranuvchi yo'lga ishora qiladi, raft kvorumiga emas.
Ishlayotgan oynadan olingan yozib olishni saqlang, chunki uni buzilgani bilan solishtirish konfiguratsiyani qayta o'qishdan tezroq.