HAProxy HTTP vs TCP

17

HAProxy daje opcję ustawienia trybu na TCP lub HTTP. Pozwala także ustawić port.

Dlaczego więc pozwalam mi wybierać między HTTP a TCP, skoro pozwala mi również wybrać port? Z pewnością gdybym chciał HTTP, mógłbym po prostu wybrać TCP i port 80?

Dlaczego tylko TCP i HTTP? Wydaje się sugerować, że HTTP nie jest TCP. Dlaczego nie masz TCP, HTTP, SNMP, FTP itp. Itd. Itd.

Dlaczego tylko HTTP i TCP? Dlaczego warto wybrać jedną z tych opcji, jeśli HTTP to TCP? Uważaj to za bardzo mylące i naprawdę trudno jest znaleźć informacje na temat usług równoważenia obciążenia innych niż http (s).

marflar
źródło

Odpowiedzi:

28

Korzystając z metody HTTP w konfiguracji HAProxy, masz dostęp do kilku opcji specyficznych dla HTTP. Na przykład możesz wybrać różne backendy na podstawie adresu URL w żądaniu HTTP. Podczas określania trybu TCP HAProxy nie ocenia nagłówków HTTP w pakiecie.

Tak więc zdecydowanie możesz po prostu użyć TCP do ruchu HTTP, ale nie miałbyś dodatkowych opcji HTTP. Na marginesie, chyba że korzystasz z funkcji SSL, musisz użyć TCP do ruchu HTTPS, ponieważ pakiety są szyfrowane i HAProxy nie może wyświetlić nagłówków HTTP.

Paul Kroon
źródło
Dzięki. To naprawdę pomogło mi to zrozumieć. Twoje zdrowie.
marflar
6

Ktoś napisał post na blogu na ten temat: http://www.linickx.com/645/load-balance-anything-with-haproxy

W każdym razie nie wiem, dlaczego ludzie, którzy utrzymują haproxy, używają wybranej przez siebie składni, nie podoba mi się to, ponieważ uważam to za mylące (mówiąc, że coś może być śrubami HTTP lub TCP z moim mózgiem), ale okazuje się, że może załadować wszystko z HAProxy, a jeśli nie jest to HTTP (s), po prostu idź z TCP i poprawnym numerem portu.

marflar
źródło
HTTP to TCP w warstwie transportowej, więc cała aplikacja jest tylko TCP z pewną specjalizacją dla HTTP. Nawiasem mówiąc, dobry link.
Signus