HAProxy HTTP vs TCP

17

HAProxy le ofrece la opción de establecer el modo en TCP o HTTP. También le permite configurar el puerto.

Entonces, ¿por qué permitirme elegir entre HTTP y TCP, si me permite elegir el puerto también? ¿Seguramente si quisiera HTTP podría elegir TCP y el puerto 80?

¿Por qué solo TCP y HTTP? Parece implicar que HTTP no es TCP. ¿Por qué no tener TCP, HTTP, SNMP, FTP, etc., etc., etc.

¿Por qué solo HTTP y TCP? ¿Por qué tener cualquiera de esas opciones si HTTP es TCP? Lo encuentra muy confuso, y es realmente difícil encontrar información sobre el equilibrio de carga de servicios que no son http.

marflar
fuente

Respuestas:

28

Al utilizar el método HTTP en la configuración HAProxy, tiene acceso a varias opciones específicas de HTTP. Por ejemplo, puede elegir diferentes backends según la URL en la solicitud HTTP. Al especificar el modo TCP, HAProxy no evalúa los encabezados HTTP en el paquete.

Por lo tanto, definitivamente puede usar TCP para el tráfico HTTP, pero no tendría las opciones HTTP adicionales. Como nota al margen, a menos que esté usando las funciones SSL, debe usar TCP para el tráfico HTTPS porque los paquetes están encriptados y HAProxy no puede ver los encabezados HTTP.

Paul Kroon
fuente
Gracias. Eso realmente ayudó a que todo tuviera sentido para mí. Salud.
marflar
6

Alguien escribió una publicación de blog sobre esto: http://www.linickx.com/645/load-balance-anything-with-haproxy

De todos modos, no sé por qué las personas que mantienen haproxy usan la sintaxis que eligieron, no me gusta mucho, ya que me parece engañoso (decir que algo puede ser HTTP o TCP con mi cerebro), pero resulta que usted puede equilibrar la carga de cualquier cosa con HAProxy, y si no es HTTP (s), entonces simplemente use TCP y el número de puerto correcto.

marflar
fuente
HTTP es TCP en la capa de transporte, por lo que toda la aplicación es solo TCP con cierta especialización para HTTP. Buen enlace, por cierto.
Signus