Plataforma de gerenciamento do PowerFlex: registros keycloak-0 Falha no teste HTTP com statuscode: 503
Summary: Este artigo explica um problema em que o pod keycloak-0 relata uma falha de verificação de integridade devido a problemas de conectividade do banco de dados causados por uma configuração incorreta de DNS. Esse problema afeta os serviços de autenticação gerenciados pelo Keycloak ...
Symptoms
Situação
Um dos dois pods Keycloak (aqui keycloak-0) apresenta problemas de conectividade com o banco de dados, enquanto keycloak-1 permanece funcional.
Event Os logs mostram falhas repetidas do teste de prontidão.
# kubectl get pods -n powerflex | egrep keycloak
keycloak-0 1/1 Running 0 22d
keycloak-1 1/1 Running 0 22d
# kubectl get events | egrep kube
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning Unhealthy 12m (x58 over 17h) keycloak-0 Readiness probe failed: HTTP probe failed with statuscode: 503
O comando keycloak registros de pod indicam uma falha ao adquirir conexões JDBC devido a um tempo de espera excedido de aquisição:
# kubectl get logs keycloak-0 -n powerflex
..
2024-11-27 07:01:41,593 INFO [org.infinispan.CLUSTER] (non-blocking-thread--p2-t126) [Context=actionTokens] ISPN100010: Finished rebalance with members [keycloak-0-17437, keycloak-1-41022], topology id 7
2024-11-27 07:31:03,379 WARN [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (Timer-0) SQL Error: 0, SQLState: null
2024-11-27 07:31:03,379 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (Timer-0) Acquisition timeout while waiting for new connection
2024-11-27 07:31:03,384 ERROR [org.keycloak.services.scheduled.ScheduledTaskRunner] (Timer-0) Failed to run scheduled task ClearExpiredEvents: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Unable to acquire JDBC Connection
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:154)
at java.base/java.util.TimerThread.run(Timer.java:506)
Caused by: org.hibernate.exception.GenericJDBCException: Unable to acquire JDBC Connection <---------
..
Caused by: java.sql.SQLException: Acquisition timeout while waiting for new connection <---------
..
Caused by: java.util.concurrent.TimeoutException <---------
..
2024-11-27 09:31:03,476 INFO [io.smallrye.health] (executor-thread-15) SRHCK01001: Reporting health down status: {"status":"DOWN","checks":[{"name":"Keycloak database connections health check","status":"DOWN","data":{"Failing since":"2024-11-27 07:31:03,477"}}]}
2024-11-27 09:56:03,477 INFO [io.smallrye.health] (executor-thread-15) SRHCK01001: Reporting health down status: {"status":"DOWN","checks":[{"name":"Keycloak database connections health check","status":"DOWN","data":{"Failing since":"2024-11-27 07:31:03,477"}}]}
Impacto
Solicitações de autenticação tratadas por keycloak-0 falha, causando falhas intermitentes ou completas de autenticação para a plataforma de gerenciamento do PowerFlex.keycloak A verificação de integridade relata continuamente um DOWN status, afetando a alta disponibilidade.
Cause
O problema ocorre devido à configuração incorreta do DNS.
A conexão JDBC usada por keycloak Para se conectar ao banco de dados, é necessário resolver o nome do host ou endpoint do banco de dados.
Qualquer configuração incorreta ou falha na resolução do nome de host pode causar tempos de espera excedidos ao tentar estabelecer uma conexão.
Resolution
1) Corrija a configuração do DNS de acordo com a documentação do sistema operacional
a) Se RedHat ou CentOS v7,x ou v8,x,
i) Editar /etc/resolv.conf para atualizar o servidor DNS correto em cada MgmtVMs (MVMs)
ii) Suprimir o coredns vagens (rke2-coredns-rke2-coredns-xxxxxxxxxx-xxxxx) para propagar as alterações nessas vagens:
for x in `kubectl get pods -n kube-system | grep -i rke2-coredns-rke2-coredns | awk '{print $1}' | grep -iv auto`; do kubectl delete pods -n kube-system $x; done
iii) Verifique se as alterações de DNS agora são refletidas no coredns Pods (há 2 coredns pods responsáveis pelo DNS):
for x in `kubectl get pods -n kube-system | grep -i rke2-coredns-rke2-coredns | awk '{print $1}' | grep -iv auto`; do echo $x; kubectl exec -it $x -n kube-system -- cat /etc/resolv.conf; echo " "; done
b) Se SLES v15.xe superior, entre em contato com o suporte para seguir o artigo interno https://www.dell.com/support/kbdoc/en-us/000227354
2) Reiniciar keycloak Vagens
kubectl rollout restart statefulset keycloak -n powerflex
3) Monitor keycloak Logs de quaisquer problemas adicionais de conectividade do banco de dados
kubectl logs keycloak-0 -n powerflex [-f] kubectl logs keycloak-1 -n powerflex [-f]