Przekazywanie odebranych zapytań HTTP dalej

0

Witam,

Przymierzam się do napisania oprogramowania typu load-balancer. Generalnie mam klienta, który komunikuje się z serwerem. Pomiędzy nimi stawiam ten mój "load-balancer", który ma odbierać zapytania od klienta i następnie przesyłać je do serwera/serwerów. Pytanie w jaki sposób wykonywać obieranie zapytań od klienta i wysyłanie ich do serwera? Czy jako ten load-balancer muszę napisać serwer, który nasłuchuje zapytań (np. wykorzystując HTTPServer i HTTPHandler) czy może w jakiś inny sposób (zwykłe nasłuchiwanie na Socket)?

Pozdrawiam

1

Tak.

Zależy od wymagań które sobie stawiasz. Na jakiej podstawie routujesz traffic dalej? Jeśli na podstawie czegoś co jest stricte w requeście HTTP, to nie masz innej możliwość niż parsować requesty (a łatwo tam się nadziać na miny, więc lepiej użyć kodu kogoś kto już przez to pole minowe przeszedł). Jeśli nie, twój wybór - wtedy pytanie które musisz sobie zadać to czy chcesz forwardować niezweryfikowany traffic TCP za ten twój load balancer.

0

Tak naprawdę to wszystko będzie działo się lokalnie, więc wejścia na zewnątrz nie przewiduję. Czyli jak rozumiem HTTPServer i HTTPHandler, które odbiorą request a następnie wyślą go tak gdzie wskażę (per konkretny adres IP)?

0

Nie wiedząc nic o tyoim use casie - tak będzie najprościej. Nie będzie to pewnie zupełny mirroring ruchu, ale trudno powiedzieć czy coś takiego jest ci potrzebne.

0

Dokładnie tak, trafic mirroring to jest to czego potrzebuję. Architektura sieciowa mojego rozwiązania będzie podobna do tego:

screenshot-20210523163932.png

Client wysyła zapytanie do serwera S1 (ruch przechodzi przez odpowiednio skonfigurowane routery). Load Balancer otrzymuje zapytanie i przesyła je dalej do S1 (czyli mirroring)

0

A po co piszesz coś swojego? Keepalived+ HAProxy nie wystarczą? Keepalived, bo pewnie nie chciałbyś żeby ten Loadbalancer był single point of failure.
Masa meteriałów w sieci jak to skonfigurować, np. https://www.digitalocean.com/community/tutorials/how-to-set-up-highly-available-haproxy-servers-with-keepalived-and-floating-ips-on-ubuntu-14-04

3

Dlaczego nie gotowe rozwiązanie? HaProxy, Nginx, Zuul, … jest tego trochę :) LB to nie tylko rozrzucanie ruchu.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.