Powerflex Management Platform: keycloak-0-logfiler HTTP-sonden mislykkedes med statuskode: 503
Summary: Denne artikel forklarer et problem, hvor keycloak-0-pod'en rapporterer en tilstandskontrolfejl på grund af problemer med databaseforbindelsen forårsaget af en forkert DNS-konfiguration. Dette problem påvirker godkendelsestjenester, der administreres af keycloak ...
Symptoms
Scenarie
En af de to Keycloak pods (her keycloak-0) oplever forbindelsesproblemer med databasen, mens keycloak-1 forbliver funktionel.
Event Logfiler viser gentagne parathedssondefejl.
# 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
Ikonet keycloak pod-logfiler angiver, at det ikke lykkedes at hente JDBC-forbindelser på grund af en anskaffelsestimeout:
# 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"}}]}
Påvirkning
Autentificeringsanmodninger, der håndteres af keycloak-0 fejl, hvilket forårsager periodiske eller komplette godkendelsesfejl for PowerFlex-administrationsplatformen.keycloak Sundhedstjek rapporterer løbende en DOWN status, der påvirker høj tilgængelighed.
Cause
Problemet opstår på grund af forkert DNS-konfiguration.
JDBC-forbindelsen, der bruges af keycloak At oprette forbindelse til databasen er afhængig af fortolkning af databasens værtsnavn eller slutpunkt.
Enhver fejlkonfiguration eller fejl i værtsnavnsopløsningen kan forårsage timeouts, når du forsøger at oprette en forbindelse.
Resolution
1) Ret DNS-konfigurationen i henhold til operativsystemdokumentationen
a) Hvis RedHat eller CentOS v7,x eller v8,x,
i) Rediger /etc/resolv.conf for at opdatere den korrekte DNS-server på hver MgmtVMs (MVM'er)
ii) Udgår coredns bælg (rke2-coredns-rke2-coredns-xxxxxxxxxx-xxxxx) for at overføre ændringerne af disse bælg:
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) Bekræft, at DNS-ændringer nu afspejles i coredns bælg (der er 2 coredns pods, der er ansvarlige for 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) Hvis SLES v15.xeller nyere, skal du kontakte support for at følge den interne artikel https://www.dell.com/support/kbdoc/en-us/000227354
2) Genstart keycloak Bælg
kubectl rollout restart statefulset keycloak -n powerflex
3) Skærm keycloak logfiler for eventuelle yderligere problemer med databaseforbindelsen
kubectl logs keycloak-0 -n powerflex [-f] kubectl logs keycloak-1 -n powerflex [-f]