Estou escrevendo isso fora da minha cabeça / memória, pois não tenho nada à mão para verificar se funciona corretamente ou não, mas espero que isso seja uma pista para você.
Então, minha resposta é:
Claro que você pode fazer isso com o mod_proxy_balancer
do Apache. Você deve ser capaz de realizar isso com algo assim:
ProxyPassReverse / http://host1:80/
ProxyPassReverse / http://host2:80/
<Proxy balancer://cluster>
BalancerMember http://host1:80 route=LB1
BalancerMember http://host2:80 route=LB2
ProxySet stickysession=MYSESSIONID
</Proxy>
Portanto, em relação ao ponto 1, leia a seção "Algoritmo de contagem de solicitações" do mod_proxy_balancer
.
Em relação ao ponto 2: eu realmente não sei sobre a análise do cabeçalho HTTP. O exemplo acima usa o parâmetro de URL adicional MYSESSIONID
para o tráfego de proxy que faz parte da mesma conexão com o mesmo host. Eu acho que você também pode usar cookies. De qualquer forma, isso deve ser tratado pelo aplicativo identificado como LB1 ou LB2 (estes são adicionados como parte do id ou cookie da sessão).
Re 3: o balanceador de carga monitora todos os membros e os desativa quando eles não respondem. Você também pode ativar / desativar nós por meio da interface da web ( mod_status
, consulte "Ativando o suporte do Balancer Manager").
Quanto ao ponto 4, você pode configurar o VirtualHost habilitado para SSL na porta 443, que faz o proxies de todo o tráfego para a porta 80 dos membros do balanceador.