HAProxy HTTP vs TCP


17

O HAProxy oferece a opção de definir o modo para TCP ou HTTP. Também permite que você defina a porta.

Então, por que me permite escolher entre HTTP e TCP, se está me permitindo escolher a porta também? Certamente, se eu quisesse HTTP, poderia escolher TCP e porta 80?

Por que apenas TCP e HTTP? Parece implicar que HTTP não é TCP. Por que não ter TCP, HTTP, SNMP, FTP, etc, etc, etc.

Por que apenas HTTP e TCP? Por que ter uma dessas opções se HTTP é TCP? Ache isso muito confuso e é realmente difícil encontrar informações sobre serviços não http (s) de balanceamento de carga.

Respostas:


28

Usando o método HTTP na configuração do HAProxy, você tem acesso a várias opções específicas do HTTP. Por exemplo, você pode escolher diferentes back-ends com base na URL na solicitação HTTP. Ao especificar o modo TCP, o HAProxy não avalia os cabeçalhos HTTP no pacote.

Portanto, você pode definitivamente usar o TCP para tráfego HTTP, mas não terá as opções HTTP adicionais. Como observação lateral, a menos que você esteja usando os recursos SSL, você deve usar o TCP para tráfego HTTPS porque os pacotes são criptografados e o HAProxy não pode exibir os cabeçalhos HTTP.


Obrigado. Isso realmente ajudou a entender tudo para mim. Felicidades.
Marflar

6

Alguém escreveu um post no blog sobre isso: http://www.linickx.com/645/load-balance-anything-with-haproxy

De qualquer forma, não sei por que as pessoas que mantêm haproxy usam a sintaxe que escolheram, não gosto tanto quanto acho enganosa (dizer que algo pode ser parafusos HTTP ou TCP no meu cérebro), mas acontece que você pode equilibrar qualquer coisa com o HAProxy e, se não for HTTP (s), basta usar o TCP e o número da porta correto.


O HTTP é TCP na camada de transporte; portanto, o aplicativo inteiro é apenas TCP com alguma especialização em HTTP. Bom link, a propósito.
Signus
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.