Piattaforma di gestione PowerFlex: keycloak-0 registra un errore della sonda HTTP con statuscode: 503

Summary: Questo articolo illustra un problema in cui il pod keycloak-0 segnala un errore di controllo integrità a causa di problemi di connettività del database causati da una configurazione DNS errata. Questo problema interessa i servizi di autenticazione gestiti da keycloak ...

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Symptoms

Scenario

Uno dei due pod Keycloak (qui keycloak-0) riscontra problemi di connettività con la banca dati, mentre keycloak-1 rimane funzionante.

 

Event I registri mostrano ripetuti errori della sonda di predisposizione.

# 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

Il driver keycloak I registri pod indicano un errore nell'acquisizione delle connessioni JDBC a causa di un timeout di acquisizione:

# 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"}}]}
 
 

Impatto

Richieste di autenticazione gestite da keycloak-0 causare errori di autenticazione intermittenti o completi per la piattaforma di gestione PowerFlex.
keycloak Il controllo integrità segnala continuamente un DOWN con impatto sull'high availability.

 

Cause

Il problema si verifica a causa di una configurazione DNS errata.

La connessione JDBC utilizzata da keycloak La connessione al database si basa sulla risoluzione del nome host o dell'endpoint del database.

Qualsiasi configurazione errata o errore nella risoluzione dei nomi host può causare timeout quando si tenta di stabilire una connessione. 

Resolution

1) Correggere la configurazione DNS in base alla documentazione del sistema operativo

a) Se RedHat o CentOS v7,x o v8,x,

i) Modifica /etc/resolv.conf per aggiornare il server DNS corretto su ogni MVM (MgmtVMs)

ii) Cancellare il coredns cialde (rke2-coredns-rke2-coredns-xxxxxxxxxx-xxxxx) per propagare le modifiche a tali pod:

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) Verificare che le modifiche DNS si riflettano ora in coredns cialde (ci sono 2 coredns pod responsabili del 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 versioni successive, contattare il supporto per seguire l'articolo interno https://www.dell.com/support/kbdoc/en-us/000227354

2) Riavvia keycloak Baccelli

kubectl rollout restart statefulset keycloak -n powerflex 

3) Monitorare keycloak Registri per eventuali problemi aggiuntivi di connettività del database 

kubectl logs keycloak-0 -n powerflex [-f]
kubectl logs keycloak-1 -n powerflex [-f]



Products

PowerFlex rack, PowerFlex Appliance, PowerFlex custom node, ScaleIO, PowerFlex appliance connectivity
Article Properties
Article Number: 000261288
Article Type: Solution
Last Modified: 19 Dec 2024
Version:  1
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.