
Atualmente tenho uma estrutura com um servidor Apache 2 com vários subdomínios. Conforme o exemplo abaixo:
<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>
Estou pensando em duplicar este servidor e apenas criar um novo com HAProxy para realizar balanceamento de carga.
O suporte do HAProxy aponta todas as solicitações para o servidor filho com o mesmo IP ou para cada subdomínio precisarei de um servidor específico com um IP específico?
Responder1
Você precisará configurar back-ends para cada subdomínio ou possivelmente usar um back-end padrão se a maioria das solicitações chegar a um servidor específico. Se você configurar vários back-ends, nada os impedirá de apontar para o mesmo servidor web.
Responder2
Receio que isso não seja realmente o que você deseja/precisa. HAproxy é uma ótima ferramenta para atuar como proxy*, mas o caso de uso que você está fornecendo como exemplo não está relacionado ao proxy, mas ao servidor http regular*. Caso você queira substituir o apache a opção poderia ser, por exemplo, nginx.
procurador- aplicação que faz a verificação da solicitação e/ou faz subsolicitações para fornecer o conteúdo
servidor HTTP- aplicativo que fornece o conteúdo
É possível usar HAproxy como frontend e nginx como backend mesmo no mesmo nó. A configuração do HAproxy seria algo assim (sem https conforme solicitado):
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
Pode haver mais back-ends terminando em servidores diferentes... Acabei de seguir o exemplo ;-).