提问者:小点点

如何配置keyclock的数据源以与galera集群一起工作?


Linux: Red Hat 7.5 (Maipo)

MariaDB: 10.2.13-MariaDB

钥匙扣:3.4.3。菲娜

JDBC驱动程序:mariadb-java-client-2.2.2.5.jar

我启动一个keyclock实例,使其连接到galera集群。

同时:

如果我在gelera节点上使用“kill-9 mariaDB进程”,那么keyclok和galera之间的连接将发生500个错误,几秒钟后,200 OK继续。

如果我在gelera节点上使用“kill-15 MariaDB process”,keycloak和galera之间的连接将200 OK继续,没有发生错误。

“kill-9”模拟mysql服务的崩溃场景。

我希望mysql服务崩溃时没有任何错误。(例如kill-9),keycloak应该在当前节点崩溃时自动连接到下一个galera节点,没有任何错误

以下是我的独立数据源配置.xml

<datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true">
<connection-url>jdbc:mariadb:failover://db1,db2,db3/keycloak?autoReconnect=true&amp</connection-url>
   <driver>mariadb</driver>
   <security>
      <user-name>kc_dbuser</user-name>
      <password>7a092075c015090fe21c83ecd6f6</password>
   </security>
   <pool>
      <min-pool-size>5</min-pool-size>
      <max-pool-size>20</max-pool-size>
      <flush-strategy>IdleConnections</flush-strategy>
   </pool>
   <validation>
      <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
      <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
      <check-valid-connection-sql>SELECT 1</check-valid-connection-sql>
      <validate-on-match>true</validate-on-match>
      <background-validation>true</background-validation>
      <background-validation-millis>1000</background-validation-millis>
      <use-fast-fail>true</use-fast-fail>
   </validation>
   <statement>
      <share-prepared-statements>false</share-prepared-statements>
   </statement>
</datasource>

是keycloak bug还是JBOSS bug还是JDBC驱动程序bug或者只是配置问题?如何化解?


共1个答案

匿名用户

用此代码更改2号线

<connection-url>jdbc:mariadb:failover://db1,db2,db3/keycloak?autoReconnect=true</connection-url>