HAProxy HTTP vs TCP

17

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).

marflar
la source

Réponses:

28

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. Lors de la spécification du mode TCP, HAProxy n'évalue pas les en-têtes HTTP dans le paquet.

Ainsi, vous pouvez certainement utiliser TCP pour le trafic HTTP, mais vous n'auriez pas les options HTTP supplémentaires. En remarque, sauf si vous utilisez les fonctionnalités SSL, vous devez utiliser TCP pour le trafic HTTPS car les paquets sont cryptés et HAProxy ne peut pas afficher les en-têtes HTTP.

Paul Kroon
la source
Merci. Cela m'a vraiment aidé à comprendre tout cela. À votre santé.
marflar
6

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 car je trouve cela trompeur (dire que quelque chose peut être des vis HTTP ou TCP avec mon cerveau), mais il se trouve que vous peut équilibrer n'importe quoi avec HAProxy, et si ce n'est pas HTTP (s), alors allez simplement avec TCP et le numéro de port correct.

marflar
la source
HTTP est TCP au niveau de la couche de transport, donc l'application entière est juste TCP avec une spécialisation pour HTTP. Bon lien, au fait.
Signus