如何为 keycloak 配置数据源以与 galera 集群配合使用?

Posted

技术标签:

【中文标题】如何为 keycloak 配置数据源以与 galera 集群配合使用?【英文标题】:How to configure datasource for keycloak to work well with galera cluster? 【发布时间】:2018-12-11 13:36:45 【问题描述】:

环境:

Linux: Red Hat 7.5(迈坡)

MariaDB: 10.2.13-MariaDB

钥匙斗篷: 3.4.3.Fina

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

说明:

我启动了一个 keycloak 实例,让它连接到一个 galera-cluster。

而:

如果我在 gelera 节点上使用“kill -9 mariaDB process”,keycloak 和 galera 之间的连接会出现 500 错误,几秒钟后,200 OK 继续。

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

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

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

下面是我在standalone.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 错误或 JBOSS 错误或 JDBC 驱动程序错误或只是配置问题? 如何解决?

【问题讨论】:

【参考方案1】:

使用此代码更改第 2 行

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

【讨论】:

以上是关于如何为 keycloak 配置数据源以与 galera 集群配合使用?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 wchar_t 定义 swig typmap 以与 Perl 脚本绑定?

如何为 keycloak 客户端秘密 REST 调用获取未混淆的客户端秘密

如何在 Keycloak 中创建客户端以与 AWS Cognito 身份联合使用

Gale-Shapley算法

如何为图层 shadowOpacity 设置动画?

如何为贝宝上下文快速结帐创建反应组件?