HAProxy HTTP vs TCP

17

Mit HAProxy können Sie den Modus auf TCP oder HTTP einstellen. Hier können Sie auch den Port einstellen.

Warum kann ich dann zwischen HTTP und TCP wählen, wenn ich dann auch den Port wählen kann? Sicherlich, wenn ich HTTP wollte, könnte ich einfach TCP und Port 80 wählen?

Warum nur TCP und HTTP? Es scheint zu implizieren, dass HTTP nicht TCP ist. Warum nicht TCP, HTTP, SNMP, FTP usw. usw. verwenden?

Warum nur HTTP und TCP? Warum haben Sie eine dieser Optionen, wenn HTTP TCP ist? Finden Sie es sehr verwirrend und es ist wirklich schwierig, Informationen zum Lastenausgleich von Nicht-http-Diensten zu finden.

marflar
quelle

Antworten:

28

Mit der HTTP-Methode in der HAProxy-Konfiguration haben Sie Zugriff auf mehrere HTTP-spezifische Optionen. Beispielsweise können Sie verschiedene Backends basierend auf der URL in der HTTP-Anforderung auswählen. Bei der Angabe des TCP-Modus wertet HAProxy die HTTP-Header im Paket nicht aus.

Sie können also auf jeden Fall nur TCP für den HTTP-Verkehr verwenden, haben aber nicht die zusätzlichen HTTP-Optionen. Wenn Sie nicht die SSL-Funktionen verwenden, müssen Sie TCP für den HTTPS-Verkehr verwenden, da die Pakete verschlüsselt sind und HAProxy die HTTP-Header nicht anzeigen kann.

Paul Kroon
quelle
Vielen Dank. Das hat mir wirklich geholfen, einen Sinn daraus zu machen. Prost.
Marflar
6

Jemand schrieb einen Blogbeitrag dazu: http://www.linickx.com/645/load-balance-anything-with-haproxy

Wie auch immer, ich weiß nicht, warum die Leute, die Haproxy betreiben, die von ihnen gewählte Syntax verwenden. Ich mag sie nicht sehr, da ich sie für irreführend halte (wenn ich sage, dass es sich bei etwas um HTTP- oder TCP-Schrauben handeln kann), aber es stellt sich heraus, dass Sie es sind kann mit HAProxy alles ausgleichen, und wenn es nicht HTTP (s) ist, dann gehe einfach mit TCP und der richtigen Portnummer.

marflar
quelle
HTTP ist TCP in der Transportschicht, daher ist die gesamte Anwendung nur TCP mit einer gewissen Spezialisierung für HTTP. Übrigens eine gute Verbindung.
Signus