
Actualmente tengo una estructura con un servidor Apache 2 con múltiples subdominios. Como el siguiente ejemplo:
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /var/www/main
</VirtualHost>
<VirtualHost *:80>
ServerName subdomain-1.example.com
ServerAlias subdomain-1.example.com
DocumentRoot /var/www/sbd1
</VirtualHost>
<VirtualHost *:80>
ServerName subdomain-2.example.com
ServerAlias subdomain-2.example.com
DocumentRoot /var/www/sbd2
</VirtualHost>
Estoy considerando duplicar este servidor y simplemente crear uno nuevo con HAProxy para realizar el equilibrio de carga.
¿El soporte de HAProxy dirige todas las solicitudes al servidor secundario con la misma IP o para cada subdominio necesitaré un servidor específico con una IP específica?
Respuesta1
Deberá configurar servidores para cada subdominio, o posiblemente usar un servidor predeterminado si la mayoría de las solicitudes deben llegar a un servidor específico. Si configura varios backends, no hay nada que les impida apuntar al mismo servidor web.
Respuesta2
Me temo que esto no es realmente lo que quieres o necesitas. HAproxy es una gran herramienta para actuar como proxy* pero el caso de uso que proporciona como ejemplo no está relacionado con el proxy sino con el servidor http normal*. En caso de que desee reemplazar Apache, la opción podría ser, por ejemplo, nginx.
apoderado- aplicación que verifica la solicitud y/o realiza subsolicitudes para proporcionar el contenido
servidor http- aplicación que proporciona el contenido
Es posible utilizar HAproxy como frontend y nginx como backend incluso en el mismo nodo. La configuración de HAproxy sería algo como esto (sin https como se solicita):
frontend http_front
maxconn 1000
mode http
option http-server-close
option forwardfor
bind *:80
acl top_domain hdr(host) -m str www.example.com
acl top_domain hdr(host) -m str example.com
acl subdom1 hdr(host) -m str www.subdomain-1.example.com
acl subdom1 hdr(host) -m str subdomain-1.example.com
acl subdom2 hdr(host) -m str www.subdomain-2.example.com
acl subdom2 hdr(host) -m str subdomain-2.example.com
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto http if !{ ssl_fc }
use_backend local if subdom1
# ...
default_backend local
backend local
fullconn 1000
mode http
timeout http-keep-alive 3000
server local1 127.0.0.1:8080 check maxconn 100
Puede haber más backends que terminen en diferentes servidores... Solo he seguido el ejemplo ;-).