Efeitos Adversos Comuns de Configurações Incorretas da Verificação de Integridade do Balanceador de Carga
Saiba mais sobre os efeitos colaterais comuns associados à configuração incorreta de verificações de integridade do balanceador de carga.
Estes são os efeitos colaterais comuns da configuração incorreta da verificação de integridade e podem ser usados para diagnosticar e solucionar problemas.
-
Porta errada
Nesse cenário, todos os servidores de backend são reportados como não íntegros. Se os servidores de backend não tiverem problemas, talvez você tenha cometido um erro ao definir a porta. A porta deve ser uma que esteja fazendo listening e tenha permitido tráfego no backend.
Erro de Registro em Log do OCI:
errno:EHOSTUNREACH, syscall:connect
-
Caminho incorreto
Nesse cenário, todos os servidores de backend são reportados como não íntegros. Se os servidores de backend não tiverem problemas, talvez você tenha cometido um erro ao definir o caminho da verificação de integridade HTTP necessário para corresponder a um aplicativo real no backend. Nesse cenário, você pode usar o utilitário
curl
para testar em um sistema na mesma rede. Por exemplo:$ curl -i http://backend_ip_address/health
Você recebe o código de status configurado na resposta Erro de Registro em Log do OCI:
"msg":"invalid statusCode","statusCode":404,"expected":"200".
-
Protocolo incorreto
Nesse cenário, todos os servidores de backend são reportados como não íntegros. Se os servidores de backend não tiverem problemas, talvez você tenha cometido um erro ao definir o protocolo necessário para corresponder ao protocolo que está fazendo listening no backend. Por exemplo: Só suportamos verificações de integridade TCP e HTTP. Se o seu backend estiver usando HTTPS, você precisará usar TCP como protocolo.
Erro de Registro em Log do OCI:
code:EPROTO, errno:EPROTO
-
Código de status incorreto
Nesse cenário, todos os servidores de backend são reportados como não íntegros. Se os servidores de backend não tiverem problemas, para uma verificação de integridade HTTP, talvez você tenha cometido um erro ao definir o código de status para corresponder ao código de status real que está sendo retornado do backend. Um cenário comum é quando um backend retorna um código de status
302
, mas você está esperando um código de status200
. Esse resultado provavelmente é o backend que envia você para uma página de acesso ou outro local no servidor. Nesse cenário, você pode corrigir o backend para retornar o código esperado ou usar302
na configuração de verificação de integridade.Erro de Registro no OCI:
msg:invalid statusCode, statusCode:nnn,expected:200
em quennn
será o código de status retornado. -
Padrão Regex Incorreto
Todos os servidores de backend se reportam como não íntegros. Se os servidores de backend não tiverem problemas, talvez você tenha cometido um erro ao definir um padrão regex incorreto consistente com o corpo ou o backend não está retornando o corpo esperado. Neste cenário, você pode alterar o backend para corresponder ao padrão ou corrigir o padrão para corresponder ao backend. A seguir estão alguns exemplos de padrões específicos.-
Qualquer Conteúdo -
.*
-
Uma página que retorna o valor
Status:OK:
-Status:OK:.*
-
Erro de Registro em Log do OCI:
response match result: failed
-
-
Grupos de Segurança de Rede, Listas de Segurança ou Firewall Local Configurados Incorretamente
Todos ou alguns servidores de backend se reportam como não íntegros. Se os servidores de backend não tiverem problemas, você poderá ter configurado incorretamente os grupos de segurança de rede, as listas de segurança ou os firewalls locais (como firewalld
, iptables
ou SELinux
. Nesse cenário, você pode usar o utilitário curl
ou netcat
para testar em um sistema que pertence à mesma sub-rede e ao mesmo grupo de segurança de rede que a instância HTTP do balanceador de carga. Por exemplo: $ curl -i http://backend_ip_address/health TCP
e nc -zvw3 backend_ip_address 443
.
Você pode verificar seu firewall local usando o seguinte comando: firewall-cmd --list-all --zone=public.
. Se o firewall não tiver as regras esperadas, você poderá usar um conjunto de comandos como este para adicionar o serviço (este exemplo é para a porta HTTP 80):
-
firewall-cmd --zone=public --add-service=http
-
firewall-cmd --zone=public --permanent --add-service=http