VPN üzərindən Docker Swarm: tapşırıqlar işləyir, xidmət çağırışları uğursuz olur
Tapşırıqlar hər iki saytda işləyir, lakin xidmətlər arasındakı çağırışlar vaxt aşımına uğrayır. Overlay qovşaqdan qovşağa marşrutlara, tərcümə olunmamış ünvanlara və VXLAN üçün 50 baytlıq yerə ehtiyac duyur.
İki saytda üç menecer və beş işçi, aralarında tunel, və docker service ls hər iki tərəfdə işləyən tapşırıqları göstərir, halbuki xidmətlər arasındakı çağırışlar vaxt aşımına uğrayır. Swarm jurnallarında heç nə səhv görünmür. Bu birləşmə data müstəvisi probleminin əlamətidir: idarəetmə müstəvisi qovşaqları tapdı, inkapsullaşdırılmış kadrlar isə heç vaxt yolu qət etmədi.
Mesh overlay-dən əvvəl mövcud olmalıdır
Swarm-ın overlay-i inkapsullaşdırılmış kadrları birbaşa qovşaq ünvanları arasında ötürür, bu isə o deməkdir ki, hər qovşaq tunelin təqdim etdiyi interfeysdə bütün digər qovşaqların tərcüməsiz çata bildiyi bir ünvana ehtiyac duyur. Yalnız müştəriləri dərc edilmiş porta daşıyan tunel kifayət etmir. Alt qat qovşaqdan qovşağa hər iki istiqamətdə marşrutlaşdırmalıdır.
Bunu Swarm-a toxunmazdan əvvəl yoxlayın. Hər qovşaqdan qonşunun tunel ünvanına marşrutu yoxlayın, ona ping göndərin və sonra idarəetmə portunu sınayın. Ping işləyirsə, port işləmirsə, tunel qaydasındadır və yolda filtr var.
ip -brief address
ip route get 10.20.0.12
ping -c3 10.20.0.12
nc -vz 10.20.0.12 2377
Əgər marşrut tun0 və ya wg0 əvəzinə fiziki interfeysə işarə edirsə, overlay uzaq saytın çata bilmədiyi ünvana inkapsullaşdıracaq və simptom paket itkisi kimi görünəcək.
Hər qovşağın hansı ünvanı elan etdiyini yoxlayın
Daemon bir ünvan elan edir və qonşular onu data müstəvisi üçün istifadə edir. Çoxşəbəkəli hostda tunel başqa bir şey daşıyarkən LAN və ya publik ünvanı elan etmək asandır. Fərz etmək əvəzinə onu yoxlayın və standart səhv olduqda qoşulma zamanı --advertise-addr ilə bərkidin. Yalnız özünün çata bildiyi ünvanı elan edən qovşaq yenə də swarm-a qoşulur və nasazlıq sonradan saytlar arasında əlaqə qura bilməyən xidmətlər kimi üzə çıxır.
Elan olunan ünvanı sonradan dəyişmək konfiqurasiya redaktəsi deyil, çünki qovşaq çıxıb yenidən qoşulmalıdır.
Elan olunan ünvanı hər qovşaq üzrə qeydlərinizə yazın, çünki bu, asimmetrik nasazlıqların çoxunu izah edir.
Masquerade adətən günahkardır
Qovşaqlarla tunel arasında bir şlüz olduqda, ümumi səhv fiziki interfeysdən çıxan hər şeyi masquerade etməkdir. Bu, overlay-in daxili ünvanlarını da yenidən yazır, beləliklə hər qonşu şlüzdən gəlir kimi görünür və VXLAN qonşuları bir-birini tanımağı dayandırır. Nəticə adi ping-lər işləyərkən itən və ya birtərəfli inkapsullaşdırılmış trafikdir.
Overlay prefiksini şlüzdən marşrutlaşdırın və tərcüməsiz buraxın. Əgər başqa prefiks üçün tərcümə həqiqətən lazımdırsa, onu oraya məhdudlaşdırın və heç vaxt overlay-in istifadə etdiyi aralığa tətbiq etməyin.
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
Qaydaların mətnini olduğu kimi sırasını da yoxlayın, çünki zəncirin əvvəlindəki geniş MASQUERADE sonrakı dar istisnanı üstələyir.
VXLAN paketdə yer tələb edir
VXLAN daşıdığı kadrlara 50 bayt əlavə edir. 1500 baytlıq alt qat 1500 baytlıq daxili kadr daşıyanda heç bir yolun çatdıra bilməyəcəyi inkapsullaşdırılmış paket yaranır və nasazlıq ölçü problemi kimi deyil, fasiləli xidmət kəşfi kimi görünür. Ya tunelin MTU-sunu hər iki ucda azaldın, ya da overlay MTU-sunu elə qurun ki, sürücü sığan yük elan etsin.
docker network create --driver overlay --attachable --opt com.docker.network.driver.mtu=1400 swarm-overlay
Ingress şəbəkəsi avtomatik yaradılır, ona görə də onu dəyişmək yerində redaktə etmək deyil, silib yenidən yaratmaq deməkdir.
Tunelin yalnız bir tərəfini düzəltsəniz, yenə də kiçik MTU vacib olan olacaq.
Jurnallara deyil, data müstəvisinə baxın
VXLAN portunu hər iki ucda tutun. Bir tərəfdən çıxıb digərində gələn kadrlar alt qatın qaydasında olduğunu və problemin overlay daxilində olduğunu bildirir. Çıxıb heç vaxt gəlməyən kadrlar marşrut və ya filtr deməkdir. Heç çıxmayan kadrlar mənbə ünvanının səhv olduğunu bildirir.
Bir neçə saniyədən sonra keçən xidmət kəşfi nasazlıqları adətən paket büdcəsinə və ya titrəyən yola işarə edir, raft kvorumuna deyil.
İşlək pəncərədən tutuşu saxlayın, çünki onu pozulmuş tutuşla müqayisə etmək konfiqurasiyanı yenidən oxumaqdan sürətlidir.