Keycloak
1 前言
一个问题,一篇文章,一出故事。
笔者的生产环境有两个数据中心,我们简称dg和hk,当前系统架构图如下,
https://websso.cmdschool.org(nginx anyCast Cluster)
|
|--> https://dgrhbk01.cmdschool.org:8443 --> | |
| (10.168.200.54,keycloak,active) |------------------->|tcp://dgrhbkdb01.cmdschool.org:3306
|--> https://dgrhbk02.cmdschool.org:8443 --> | | (10.168.200.54,mariaDB)
| (10.168.200.55,keycloak,active) |
|
|--> https://hkrhbk01.cmdschool.org:8443 ---> | |
| (10.168.208.184,keycloak,backup) |------------------->|tcp://hkrhbkdb01.cmdschool.org:3306
|--> https://hkrhbk02.cmdschool.org:8443 ---> | | (10.168.208.183,mariaDB)
| (10.168.208.185,keycloak,backup) |
按照笔者的规划,两个数据中心的Keycloak应该为独立的两套集群,但是笔者通过查看数据库发现他们自动加到了同一套集群,
MariaDB [keycloak]> select * from keycloak.JGROUPS_PING; +---------------------------------------------+-----------------+--------------+---------------------+-------+ | address | name | cluster_name | ip | coord | +---------------------------------------------+-----------------+--------------+---------------------+-------+ | uuid://00000000-0000-0000-0000-00000000003e | dgrhbk01-10292 | ISPN | 10.168.200.54:7600 | 0 | | uuid://00000000-0000-0000-0000-00000000003f | dgrhbk02-3491 | ISPN | 10.168.200.55:7600 | 1 | | uuid://00000000-0000-0000-0000-000000000042 | hkrhbk01-17550 | ISPN | 10.168.208.184:7600 | 0 | | uuid://00000000-0000-0000-0000-000000000043 | hkrhbk02-64818 | ISPN | 10.168.208.185:7600 | 0 | +---------------------------------------------+-----------------+--------------+---------------------+-------+ 4 rows in set (0.000 sec) MariaDB [keycloak]>
因此,本章将总结如何解决此问题。
另外关于Keycloak环境的配置,如有需要请参阅如下文档。
2 最佳实践
2.1 修改集群配置
vim /etc/keycloak/cache-ispn.xml
加入或者修改如下配置,
<cache-container name="keycloak">
<transport cluster="HKISPN"/>
</cache-container>
2.2 重启服务使配置生效
On hkrhbk0[1-2]
systemctl restart keycloak
2.3 确认配置是否生效
MariaDB [keycloak]> select * from keycloak.JGROUPS_PING; +---------------------------------------------+-----------------+--------------+---------------------+-------+ | address | name | cluster_name | ip | coord | +---------------------------------------------+-----------------+--------------+---------------------+-------+ | uuid://00000000-0000-0000-0000-00000000003e | dgrhbk01-10292 | ISPN | 10.168.200.54:7600 | 0 | | uuid://00000000-0000-0000-0000-00000000003f | dgrhbk02-3491 | ISPN | 10.168.200.55:7600 | 1 | | uuid://00000000-0000-0000-0000-000000000046 | hkrhbk01-36089 | HKISPN | 10.168.208.184:7600 | 1 | | uuid://00000000-0000-0000-0000-000000000047 | hkrhbk02-30813 | HKISPN | 10.168.208.185:7600 | 0 | +---------------------------------------------+-----------------+--------------+---------------------+-------+ 4 rows in set (0.000 sec) MariaDB [keycloak]>
另外,你也可以通过如下命令查看日志确认,
grep -ai cluster /var/log/keycloak/keycloak.log
可见如下配置,
2026-08-12 09:25:08,437 INFO [org.infinispan.CLUSTER] (main) ISPN000078: Starting JGroups channel `HKISPN` with stack `jdbc-ping` 2026-08-12 09:25:14,676 INFO [org.infinispan.CLUSTER] (main) ISPN000094: Received new cluster view for channel HKISPN: [hkrhbk01-36089|1] (2) [hkrhbk01-36089, hkrhbk02-30813] 2026-08-12 09:25:14,717 INFO [org.infinispan.CLUSTER] (main) ISPN000079: Channel `HKISPN` local address is `hkrhbk02-30813`, physical addresses are `[10.168.208.185:7600]`
没有评论