W projektach, w których istnieje potrzeba zastosowania jakiegoś load balancer czy reverse proxy, często wybiera się takie rozwiązania jak nginx
, czy haproxy
. Oprócz nich istnieje jednak inne, bardzo elastyczne i nowoczesne narzędzie jakim jest gobetween
. Co go wyróżnia spośród dostępnych rozwiązań ? Poniżej przedstawię kilka z jego najbardziej istotnych cech.
Przedstawiona poniżej analiza możliwości, zalet i wad gobetween została wykonana na podstawie oficjalnej dokumentacji. Więcej informacji na temat gobetween
można również znaleźć na GitHub, gdzie dostępny jest kod źródłowy wraz z opisem narzędzia.
Protokoły
Najczęściej stosowanym protokołem w aplikacjach webowych jest oczywiście HTTP wykorzystujący do transportu protokół TCP, ale co ciekawe gobetween
oprócz TCP wspiera protokoły UDP oraz TLS.
Algorytmy balansowania
Ruch do serwerów docelowych może być balansowany na podstawie:
- określonych wag dla każdego z serwerów
- hash z adresu IP klienta
- liczby aktualnych połączeń do poszczególnych serwerów
- round robin
- ilości ruchu do poszczególnych serwerów (sumy bajtów przesłanych i odebranych)
Integracja
Wykrywanie serwisów w sieci może być zrealizowane po stronie gobetween
na podstawie statycznej konfiguracji lub poprzez współpracę z innymi serwisami takimi jak:
Docker Swarm
Consul
- narzędzi zewnętrznych takich jak curl
API
API gobetween
umożliwia:
- pobranie informacji o gobetween
- pobranie konfiguracji gobetween
- pobranie listy serwerów
- dodanie serwera do listy
- usunięcie serwera z listy
- sprawdzenie statusu każdego z serwerów (tzw. health check)