Платформа управління Powerflex: keycloak-0 logs HTTP-зонд не вдалося зі статус-кодом: 503

Summary: У цій статті пояснюється проблема, через яку блок keycloak-0 повідомляє про збій перевірки працездатності через проблеми з підключенням до бази даних, спричинені неправильною конфігурацією DNS. Ця проблема впливає на служби автентифікації, якими керує 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

Сценарій

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

 

Event Журнали показують повторні збої датчика готовності.

# 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 збій, що спричиняє періодичні або повні збої автентифікації для платформи керування PowerFlex.
keycloak Перевірка стану здоров'я постійно повідомляє про DOWN статусу, що впливає на високу доступність.

 

Cause

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

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

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

Resolution

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 v15.xі вище, залучіть підтримку, щоб слідувати внутрішнім статтю https://www.dell.com/support/kbdoc/en-us/000227354

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]



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.