Eu não vejo esse tipo de bug há algum tempo (6 meses ou mais), então acho que foi um bug no Google Cloud, e eles corrigiram isso.
Eu tenho um grupo de instâncias com 2 instâncias atrás de um balanceador de carga HTTP. uma instância está ativa e funcionando normalmente (retornando http 200), a outra está paralisada (tempo limite de solicitações HTTP). Não tenho certeza do que estou fazendo de errado, mas, de acordo com a documentação, a instância com falha deve ser removida automaticamente do balanceador de carga.
Veja os documentos relacionados: link com o parágrafo relacionado:
For a health check to be deemed successful, the backend must return a valid HTTP response with code 200 and close the connection normally within the timeoutSec period. If an instance fails its health check, it is removed from the group or pool without any notification being sent. If it later passes a heath check, it is returned to the group or pool, again without any notification.
Veja o que vejo atualmente na minha página do console do Google Cloud para o back-end do balanceador de carga HTTP.
Aovisitarmeusite(
Error: Server Error The server encountered a temporary error and could not complete your request. Please try again in 30 seconds.
O Balanceador de carga HTTP (e a verificação de integridade) detecta claramente a instância com falha, mas o tráfego ainda está sendo fornecido para ela, independentemente disso.
Como posso resolver o problema?
verificações de integridade gerenciadas de grupos de instâncias VS verificações de integridade balanceamento de carga
As verificações de integridade usadas pelos grupos de instâncias gerenciadas são as mesmas verificações de integridade usadas pelo balanceamento de carga, com algumas diferenças no comportamento. As verificações de integridade que você aplica aos serviços de balanceamento de carga ajudam um balanceador de carga a determinar para onde direcionar o tráfego de rede. Essas verificações de integridade não fazem com que o Compute Engine recrie instâncias. As verificações de integridade que você aplica a grupos de instâncias gerenciadas sinalizarão proativamente para o grupo de instâncias gerenciadas a fim de excluir e recriar instâncias se elas se tornarem UNHEALTHY.
Para a maioria dos cenários, use verificações de integridade separadas para balanceamento de carga e para monitorar grupos de instâncias gerenciadas. A verificação de integridade para balanceamento de carga pode e deve ser mais agressiva, pois essas verificações de integridade determinam se uma instância recebe tráfego de usuário. Como os clientes podem confiar em seus serviços, você deseja capturar instâncias não responsivas rapidamente para redirecionar o tráfego, se necessário. Por outro lado, a verificação de integridade de grupos de instâncias fará com que o Compute Engine substitua proativamente as instâncias com falha, para que você possa criar verificações de saúde mais conservadoras do que as verificações de integridade de um balanceador de carga.