Keycloak не может подключиться к внешней БД после перезапуска базы данных? - PullRequest
0 голосов
/ 25 февраля 2019

Мы используем Keycloak 4.2.1. Наконец, и мы заметили некоторую странную проблему. Keycloak использует внешнюю БД [Maria DB]

Как воспроизвести проблему?

  1. Установите и запустите Keycloak.
  2. Используйте внешнюю БД для хранения данных, и мы используем mariadb.
  3. Keycloak up / running, MariaDB работает и работает
  4. Теперь остановите службу Mariadb systemctl stop mariadb, а затем запустите mariadb systemctl start mariadb и убедитесь, что keycloak не работает
  5. Попробуйте войти в keycloak https://localhost:8666/auth и убедитесь, что он не позволит войти.
  6. В журнале сервера будет показано, что Соединение закрыто

Решение 1 -

После перезапуска Mariadb необходимо обязательно также запустить службу Keycloak service keycloak restart, затемKeycloak начнет реагировать правильно.

Но это нереальное решение, я ищу правильное решение для этого. Кто-нибудь когда-либо сталкивался или проверял этот тип проблемы?

1 Ответ

0 голосов
/ 26 февраля 2019

Наконец, эта проблема решена путем изменения файла Stanalone.xml Keycloak. Вы можете найти файл в этом месте /opt/keycloak/standalone/configuration/standalone.xml, вы должны добавить следующие строки в файл

 <validation>                   
       <check-valid-connection-sql>select 1</check-valid-connection-sql>
       <background-validation>true</background-validation>
       <background-validation-millis>15000</background-validation-millis>
    </validation>

Эти строкиследует добавить внутрь тега <datasource/> после добавления вышеуказанных изменений <datasource/> будет выглядеть так

<datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true"> 
     <connection-url>jdbc:mariadb://localhost:3306/DBName?autoReconnect=true</connection-url>
           <driver>mariadb</driver> 
            <security> 
             <user-name>user</user-name> 
             <password>${VAULT::datasource::default-password::1}</password>
             </security>
             <validation>                     
             <check-valid-connection-sql>select 1</check-valid-connection-sql>
             <background-validation>true</background-validation>
              <background-validation-millis>15000</background-validation-millis>
              </validation>
</datasource>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...