Estou trabalhando para analisar uma falha intermitente de balanceamento de carga em nosso aplicativo.
Anteriormente, estávamos usando o AWS Elastic Load Balancer na seguinte configuração:
HTTP 80 -> HTTP 80
HTTPS 443 -> HTTPS 443, presenting the same certificate as the backend IIS servers are
Agora percebemos que essa é uma configuração genial (tanto o LB e o servidor IIS fazendo a mesma criptografia ... o trabalho perdido), como começou a causar alguns problemas para nós. Especificamente, veremos intermitentemente uma solicitação para o pico do ELB em latência, obteremos 60 segundos completos (o tempo limite padrão) e informaremos um erro ao cliente. Passamos bastante tempo confirmando que o pico de latência não está relacionado a um atraso no processamento do aplicativo.
Como mencionado, agora percebemos que essa configuração é estranha. Por exemplo, uma configuração mais natural do ELB funciona bem:
HTTP 80 -> HTTP 80
TCP 443 -> TCP 443, straight passthrough, all encryption happening on the IIS backend
Diminuindo o zoom por um momento, ficamos curiosos se pudéssemos reproduzir a falha intermitente na configuração incorreta do HAProxy. Isso é ter a terminação HAProxy do SSL e, em seguida, iniciar outra conexão SSL completa com o servidor de backend. Novamente, percebemos que isso é bobagem, mas estamos investigando para fins de comparação da caixa preta que é ELB e HAProxy.
Aqui está a configuração simples que tentei:
frontend https_frontend
bind *:443 ssl crt /etc/ssl/certs/ourpublicandprivatecert.pem
mode http
default_backend web_server
backend web_server
mode http
server s1 10.0.1.4:443 check
Então, ao navegar para o host HAProxy, obtemos:
504 Gateway Time-out
The server didn't respond in time.
Eu estou supondo que o HAProxy está pirando sobre a incompatibilidade no certificado, mas não consigo obter logs para confirmar isso. A outra possibilidade é que, por ser uma configuração tão estranha (misturando terminação e passagem SSL), o HAProxy simplesmente não suporta, em vez disso, forçá-lo a percorrer os caminhos mais seguros da terminação OR ou passagem.
Alguém tem alguma ideia?