Uso o balanceador de carga do Alibaba Cloud SLB há mais de 5 anos, e o uso desde a beta interna inicial do Alibaba Cloud e, após a implantação, ocorreu o seguinte erro:
Erros ocorrem de forma intermitente, após a inicialização, não há erro de gateway 502; após esperar um minuto, o erro aparece, o contêiner do Windows Server IIS ASP.NET site.
Clique no IIS do servidor para abrir o navegador, você pode navegar normalmente, problemas indiretos de balanceamento de carga no SLB, essa é a primeira vez que encontro isso.
Solução:
O problema aparece principalmente nas configurações de "Método de Verificação de Saúde", as configurações padrão são as seguintes:
A verificação de saúde do backend é solicitada no headway e, se o código de status correspondente devolver 2xx ou 3xx, o servidor backend é considerado normal.
Tentamos fazer uma solicitação de cabeçalho de três maneiras: primeiro, eu executei diretamente o projeto local e testei localmente.
Teste 1:
Use o teste do carteiro conforme mostrado abaixo:
Voltando ao estado 404 Não Encontrado, na verdade, aqui sabemos o que causou isso.
Teste 2:
Use o teste de curvação conforme mostrado abaixo:
C:\Users\itsvse>curl -i -X HEAD http://localhost:60155/
Warning: Setting custom HTTP method to HEAD with -X/--request may not work the
Warning: way you want. Consider using -I/--head instead. HTTP/1.1 404 Não Encontrado
Cache-Control: private
Content-Length: 4432
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/10.0
X-SourceFiles: =?UTF-8?B?QzpccHJvamVjdFxteVxDb2RlU2hhcmluZ1xDb2RlU2hhcmluZy5XZWJVSVxIb21lXEVycm9yNDA0?=
X-Powered-By: ASP.NET
Date: Tue, 13 Aug 2019 03:53:04 GMT
curl: (56) Recv failure: Connection was reset
Também foi retornado um código de status 404.
Teste 3:
Desta vez, testamos diretamente no servidor oficial, através do teste de rotação no PowerShell, como mostrado na figura abaixo:
Você pode ver que a mesma página é solicitada pelo cabeçalho,Às vezes retorno404código de status, às vezes retornado200Código de status, confirmando assim os erros intermitentes de 502 que encontramos no início.
O que causa asp.net retorno intermitente dos códigos de status 404 e 200?
Como nossa página inicial possui cache, quando o usuário usa o método get para solicitar a página inicial, a página será armazenada em cache com sucesso, e então o head e get sempre retornam a página em cache, e também retornam o código de resposta 200; se, após o cache expirar, nenhum usuário fizer uma solicitação do método get, apenas a solicitação do método head pelo comando, ocorrerá um erro 404. Estima-se que poucas pessoas enfrentarão esse tipo de problema.
A solução é verificar todos os códigos de status de resposta no modo de verificação de saúde, conforme mostrado na figura abaixo:
Como solucionar anomalias na verificação de saúde da Escuta da Camada 7 (HTTP/HTTPS):O login do hiperlink está visível.
(Fim)
|