
Deixe o balanceador de carga passar dados criptografados por SSL/TLS para os servidores. Eu me pergunto como um hanshake é processado se uma nova conexão HTTPS com um cliente for estabelecida: Handshaking é uma comunicação com estado. Por exemplo, para verificar a mensagem finalizada do cliente, o servidor precisa conhecer todas as mensagens de handshake que foram trocadas entre o servidor (farm) e o cliente até o momento. Portanto, até onde posso ver, existem três possibilidades:
Os dados SSL/TLS são mantidos em um cache compartilhado por todos os servidores
O conteúdo das mensagens de handshake é replicado para todos os servidores.
O balanceador de carga direciona todas as mensagens de handshake do cliente para o mesmo servidor.
Pergunta: Qual cenário é normalmente usado em tal ambiente? Existem outras políticas no tratamento de apertos de mão que perdi?
Adicionado:Me deparo com a alegação de que minha pergunta é duplicada e me disseram para editá-la para explicar por que ela é diferente deBalanceamento de carga e estratégias HTTPS. Então aqui está minha comparação entre minha pergunta e a outra pergunta:
a) Descobri três opções para lidar com o estado https em um ambiente de balanceamento de carga e perguntei quais delas (ou talvez outras) são usadas na prática.
b) Na outra questão o OP utiliza a opção 3 (“mesmo servidor”), ou seja, todas as solicitações com o mesmo IP são roteadas para o mesmo servidor. Porém, como a maioria de seus clientes usa o mesmo IP, lb não funciona bem e o OP pede uma saída. Quatro e meia em cada cinco respostas dão sugestões que, na verdade, mantêm a opção 3 acima. Uma parte da resposta aí ("DNS para servidor de destino"), não entendi.
Portanto, a questão ainda é: se as opções 1 ("cache SSL") e 2 ("replicação de dados hanshake SSL") são usadas na prática. O artigohttp://wtarreau.blogspot.de/2006/11/making-applications-scalable-with-load.htmlparece favorecer a opção 1 (consulte "4. Farm de cache SSL dedicado").
Responder1
Se o requisito for ter HTTPS em todas as partes da configuração, é mais fácil/mais viável fazer o handshake entre o cliente e o lb e, em seguida, ter um conjunto separado de certificados entre o lb e os servidores.
A passagem SSL é possível e alguns CDNs oferecem isso. Pelo que entendi, todo o tráfego é encaminhado como está, mas isso não permite balanceamento de carga.
Para que isso funcione, você precisaria de aderência da sessão no nível LB.
Responder2
Você pode fazer passagem SSL por meio de proxies de fluxo TCP no Nginx
https://docs.nginx.com/nginx/admin-guide/load-balancer/tcp-udp-load-balancer/