¿Esperando que alguien pueda ayudar a confirmar si se supone que esto funciona? Estoy tratando de enrutar el tráfico del subdominio 3 al mismo host haproxy;
He aquí mi arreglo
haproxy con una interfaz ip 10.10.10.100 y nombre dns haproxy01.mydomain.com
3 registros CNAME asociados a él; sub1.mydomain.com, sub2.mydomain.com y sub3.mydomain.com
todo el tráfico entrante es para el puerto 443.
Hay dos servidores de aplicaciones de fondo que aceptan tráfico en tres puertos 8081, 8082, 8083, digamos;
sub1.mydomain.com para 8081 sub2.mydomain.com para 8082 y sub3.mydomain.com para 8083
La aplicación requiere el paso de SSL solo para el tráfico del puerto 8081, así que creo que tengo que usar el modo tcp para ello, el otro tráfico para 8082 y 8083 también es SSL, pero se puede terminar en el Haproxy, pero para las pruebas fui con todos los TCP modo.
Mi sección de configuración para lograr esto está abajo;
#Application Setup
frontend mytraffic
bind *:443
mode tcp
acl host_sub1 hdr(host) -i sub1.mydomain.com
acl host_sub2 hdr(host) -i sub2.mydomain.com
acl host_sub3 hdr(host) -i sub3.mydomain.com
use_backend sub1_nodes if host_sub1
use_backend sub2_nodes if host_sub2
use_backend sub3_nodes if host_sub3
option tcplog backend sub1_nodes
mode tcp
balance roundrobin
stick-table type ip size 200k expire 30m
stick on src
server node1 10.10.10.101:8081 check
server node2 10.10.10.102:8081 check
backend sub2_nodes
mode tcp
balance roundrobin
stick-table type ip size 200k expire 30m
stick on src
server node1 10.10.10.101:8082 check
server node2 10.10.10.102:8082 check
backend sub3_nodes
mode tcp
balance roundrobin
stick-table type ip size 200k expire 30m
stick on src
server node1 10.10.10.101:8083 check
server node2 10.10.10.102:8083 check
# APPLICATION SETUP END
Cuando intento acceder a los servidores de aplicaciones a través de HAproxy, por ejemplo, para el tráfico 8082, arroja estos son los registros;
localhost haproxy [6097]: xxxx: 51241 [20 / Mar / 2015: 12: 19: 38.720] mytraffic mytraffic / -1 / -1 / 0 0 SC 0/0/0/0/0 0/0
Aprecio algunas indicaciones con respecto a esta configuración.
PD: No puedo insertar ninguna imagen para mayor claridad aquí, ya que es mi primera publicación :-(
Respuestas:
Con el modo TCP, HAProxy no decodificará la solicitud HTTP, por lo que sus
acl
líneas no harán nada y la interfaz nunca podrá coincidir con un back-end, como se muestra en los registros que ingresó:mytraffic/<NOSRV>
significa que no pudo elegir un backend o servidor.Tendría que dividir los 3 subdominios en 2 frontends diferentes, cada uno con sus propias IP, ya que todos se conectan en el puerto 443. Uno para el paso a través, el otro para la terminación SSL y el cambio de contenido utilizando
mode http
. La advertencia aquí es que si tuviera que agregar un cuarto subdominio (sub4.mydomain.com) que también requiriera paso a través, entonces necesitaría un tercer frontend e IP.También necesitaría crear diferentes registros CNAME o A en DNS para que los subdominios correctos apunten a las IP correctas.
Dada esta configuración de DNS:
La configuración HAproxy se vería así:
fuente
ca-file
yverify optional
de labind
declaración. Si hiciera eso, podría tener un único frontend vinculado a una IP y luego cambiar de contenido a los backends apropiados según lo requiera el encabezado del host . Para confirmar que la autenticación mutua funcionó, puede crear un acl comoacl ClientSSLValid ssl_c_verify 0
, luego agregarlo como otra condición a lause_backend
declaración comouse_backend sub1_nodes if host_sub1 ClientSSLValid