web-dev-qa-db-fra.com

HAProxy HTTP vs TCP

HAProxy vous donne la possibilité de définir le mode sur TCP ou HTTP. Il vous permet également de définir le port.

Alors pourquoi me permettre de choisir entre HTTP et TCP, si cela me permet également de choisir le port? Certes, si je voulais HTTP, je pourrais simplement choisir TCP et le port 80?

Pourquoi seulement TCP et HTTP? Cela semble impliquer que HTTP n'est pas TCP. Pourquoi ne pas avoir TCP, HTTP, SNMP, FTP, etc, etc, etc.

Pourquoi seulement HTTP et TCP? Pourquoi avoir l'une de ces options si HTTP est TCP? Trouvez cela très déroutant, et il est vraiment difficile de trouver des informations sur les services d'équilibrage de charge non http (s).

17
marflar

En utilisant la méthode HTTP dans la configuration HAProxy, vous avez accès à plusieurs options spécifiques à HTTP. Par exemple, vous pouvez choisir différents backends en fonction de l'URL dans la demande HTTP. Lorsque vous spécifiez TCP, HAProxy n'évalue pas les en-têtes HTTP dans le paquet.

Donc, vous pouvez certainement utiliser TCP pour le trafic HTTP, mais vous n'auriez pas les options HTTP supplémentaires. En remarque, à moins que vous n'utilisiez les fonctionnalités SSL, vous devez utiliser TCP pour le trafic HTTPS car les paquets sont chiffrés et HAProxy ne peut pas afficher les en-têtes HTTP.

28
Paul Kroon

Quelqu'un a écrit un article de blog à ce sujet: http://www.linickx.com/645/load-balance-anything-with-haproxy

Quoi qu'il en soit, je ne sais pas pourquoi les gens qui maintiennent haproxy utilisent la syntaxe qu'ils ont choisie, je n'aime pas beaucoup cela car je trouve cela trompeur (dire que quelque chose peut être HTTP ou TCP vis avec mon cerveau), mais il s'avère que vous pouvez charger n'importe quoi avec HAProxy, et si ce n'est pas HTTP, alors allez simplement avec TCP et le numéro de port correct.

6
marflar