PowerFlex: HTTP-зонд не справився зі статус-кодом: 503

概要: У цій статті пояснюється проблема, коли pod keycloak-0 повідомляє про провал перевірки стану через проблеми з підключенням до бази даних, спричинені неправильною конфігурацією DNS. Ця проблема впливає на сервіси автентифікації, керовані keycloak ...

この記事は次に適用されます: この記事は次には適用されません: この記事は、特定の製品に関連付けられていません。 すべての製品パージョンがこの記事に記載されているわけではありません。

現象

Одна з двох капсул Keycloak (тут keycloak-0) має проблеми з підключенням до бази даних, тоді як keycloak-1 залишається функціональним.

Журнали подій показують повторні відмови зонда готовності.

# 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

 

Журнали keycloak pod вказують на невдачу отримання JDBC з'єднань через тайм-аут придбання:

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

 

Вплив

Запити на автентифікацію, які обробляються keycloak-0 fail, що призводить до періодичних або повних збоїв автентифікації для PFMP.
Перевірка здоров'я Keycloak постійно повідомляє про DOWN статус, що впливає на високу доступність.

原因

Проблема виникає через неправильну конфігурацію DNS.

З'єднання JDBC, яке використовується keycloak Для підключення до бази даних потрібно вирішити ім'я хоста бази даних або кінцеву точку.

Будь-яка неправильна конфігурація або збій у розв'язці ім'я хоста може спричинити тайм-аут при спробі встановити з'єднання. 

解決方法

1) Виправити конфігурацію DNS відповідно до документації операційної системи

a) Якщо RedHat або CentOS v7,x або v8,x,

i) Редагування /etc/resolv.conf оновити правильний DNS-сервер на кожній MgmtVM (MVM)

ii) Видалити coredns Капсули (rke2-coredns-rke2-coredns-xxxxxxxxxx-xxxxx), щоб поширити зміни на ці капсули:

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) Перевірити, що зміни DNS тепер відображаються у coredns Капсули (їх 2 coredns поди, відповідальні за 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) Якщо SLES версії 15.xта вище, зверніться до підтримки, щоб слідувати статті PowerFlex 4.x «Як оновити DNS-сервери»

2) Рестарт keycloak Капсули

kubectl rollout restart statefulset keycloak -n powerflex 

 

3) Монітор keycloak Журнали для будь-яких додаткових проблем із підключенням до бази даних 

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



Впливові версії

 Це не проблема продукту

製品

PowerFlex rack, PowerFlex Appliance, PowerFlex custom node, ScaleIO, PowerFlex appliance connectivity
文書のプロパティ
文書番号: 000261288
文書の種類: Solution
最終更新: 03 1月 2026
バージョン:  2
質問に対する他のDellユーザーからの回答を見つける
サポート サービス
お使いのデバイスがサポート サービスの対象かどうかを確認してください。