Reduzindo o handshake HTTPS por http-keepalive atrás de um balanceador de carga - possível?

1

Eu tenho uma API na qual recebo algumas solicitações em https. Desde o seu descanso, cada vez que a API é enviada, é necessário um handshake SSL completo. Ao ativar o http-keepalive, a latência da solicitação é reduzida consideravelmente (a primeira solicitação leva o mesmo tempo, mas as solicitações subsequentes são tão rápidas quanto o http).

Agora, eu estava experimentando o elb da amazon (também usarei a nuvem). Minha pergunta é: como manter o trabalho vivo na mesma configuração, onde a solicitação proveniente de um cliente pode ser roteada aleatoriamente para máquinas diferentes?
Ou não é possível evitar um handshake SSL sempre que uma solicitação é feita?

    
por harveyslash 18.06.2016 / 09:32

1 resposta

5

Sim, o AWS ELB reutilizará as conexões abertas para os back-ends quando possível, enquanto ainda tenta distribuir a carga conforme ela está configurada para isso. A AWS até mesmo recomenda isso como uma das melhores práticas em docs :

For HTTP and HTTPS listeners, we recommend that you enable the keep-alive option in your EC2 instances, which enables the load balancer to re-use the connections to your instances for multiple client requests. This reduces the load on your web server and improves the throughput of the load balancer. The keep-alive timeout should be at least 60 seconds to ensure that the load balancer is responsible for closing the connection to your instance.

ETA: observe que o ELB não entrega uma conexão de cliente para um back-end. Todas as solicitações entre o cliente e o back-end ainda são transmitidas pelo ELB em ambas as direções. Você pode ter o ELB encerrar o SSL do cliente (supondo que seja HTTPS) e, em seguida, criar ou reutilizar sua própria conexão HTTPS (se configurada para fazer isso) para o backend, ou você pode optar por encerrar o SSL apenas no backend.

    
por 18.06.2016 / 10:05