Kafka per proxy: bootstrap veikia, brokerių ryšiai nepavyksta
Paaiškina, kodėl sėkmingas Kafka bootstrap ryšys neužtikrina proxy prieigos prie kiekvieno aptikto brokerio.
Bootstrap ryšys gali pavykti, nors Kafka klientas vis dar negali gaminti ar vartoti. Bootstrap serveriai padeda klientui aptikti klasterį; jie nebūtinai yra vieninteliai galiniai taškai, prie kurių jis prisijungs.
Brokerio metaduomenyse yra adresai, naudojami vėlesniems ryšiams. Jei tie vardai ar prievadai nepasiekiami numatytu proxy maršrutu, pirmasis sėkmingas ryšys neišsprendžia likusio darbo.
Perskaitykite skelbiamus galinius taškus
Palyginkite bootstrap adresą su brokerio adresais, kuriuos klientas iš tikrųjų gauna. Viešas bootstrap alias gali nuvesti prie privačių skelbiamų vardų, o vieno vietinio prievado persiuntimas automatiškai neperrašo kiekvieno metaduomenų adreso.
Taip pat nustatykite proxy kelią, kurį palaiko kliento implementacija. Java sistemos SOCKS savybė negarantuoja, kad bibliotekos NIO pagrįstas perdavimas naudoja JDK Socket proxy mechanizmą. Patikrinkite tikrąjį Kafka klientą ir tinklo integraciją, o ne manykite, kad kiekvienas Java socket laikosi to paties nustatymo.
Proxy suprantantis klientas turi turėti leistiną maršrutą į atitinkamus brokerio galinius taškus. Tinklo lygio sprendimui reikia atitinkamo pasiekiamumo ir vardų skyrimo. Tai skirtingi projektai, ir nė vienas jų neteikiamas vien tik nurodžius proxy kaip bootstrap serverį.
Laikykite saugumo protokolo ir autentifikavimo nustatymus atskirai. Proxy gali sukurti TCP kelią, o TLS tapatybė, SASL autentifikavimas ar brokerio autorizacija vis tiek gali nepavykti.
Diagnostikai atkreipkite dėmesį, kuris galinis taškas nepavyko ir ar jis kilo iš statinės konfigūracijos, ar iš grąžintų metaduomenų. Šis skirtumas daug labiau susiaurina problemą nei pakartotinis jau pasiekiamo galinio taško keitimas.