当keycloak在wildfly上运行时,我们可以使用jgroups在standalone-ha.xml中指定集群配置
我们如何在 keycloak 17 的 quarkus 发行版中做同样的事情?
我尝试在 keycloak.conf 中设置下面给出的属性
cache-config-file=conf/cache-ispn.xml
Run Code Online (Sandbox Code Playgroud)
当两个keycloak实例在同一台机器上运行时,成功建立集群。
但是,如果两个keycloak实例运行在不同的服务器(分布式集群)中,那么服务器之间相互发现需要什么配置呢?
小智 5
设置集群时有几个选项。
如此处所述: https: //www.keycloak.org/2019/05/keycloak-cluster-setup.html,您可以使用以下内容:
感谢:https://gist.github.com/xgp/768eea11f92806b9c83f95902f7f8f80我找到了一个使用 JDBC_PING 的解决方案。
您的配置中有一个堆栈,如下所示:
<jgroups>
<stack name="jdbc-ping-tcp" extends="tcp">
<TCP external_addr="${env.JGROUPS_DISCOVERY_EXTERNAL_IP}" bind_port="7600" />
<JDBC_PING connection_driver="org.postgresql.Driver"
connection_username="${env.KC_DB_USERNAME}" connection_password="${env.KC_DB_PASSWORD}"
connection_url="jdbc:postgresql://${env.KC_DB_URL_HOST}/${env.KC_DB_URL_DATABASE}"
initialize_sql="CREATE SCHEMA IF NOT EXISTS ${env.KC_DB_SCHEMA:public}; CREATE TABLE IF NOT EXISTS ${env.KC_DB_SCHEMA:public}.JGROUPSPING (own_addr varchar(200) NOT NULL, cluster_name varchar(200) NOT NULL, bind_addr varchar(200) NOT NULL, updated timestamp default current_timestamp, ping_data BYTEA, constraint PK_JGROUPSPING PRIMARY KEY (own_addr, cluster_name));"
insert_single_sql="INSERT INTO ${env.KC_DB_SCHEMA:public}.JGROUPSPING (own_addr, cluster_name, bind_addr, updated, ping_data) values (?, ?, '${env.JGROUPS_DISCOVERY_EXTERNAL_IP:127.0.0.1}', NOW(), ?);"
delete_single_sql="DELETE FROM ${env.KC_DB_SCHEMA:public}.JGROUPSPING WHERE own_addr=? AND cluster_name=?;"
select_all_pingdata_sql="SELECT ping_data, own_addr, cluster_name FROM ${env.KC_DB_SCHEMA:public}.JGROUPSPING WHERE cluster_name=?"
info_writer_sleep_time="500"
remove_all_data_on_view_change="true"
stack.combine="REPLACE"
stack.position="MPING" />
</stack>
</jgroups>
Run Code Online (Sandbox Code Playgroud)
请注意,您需要确保定义了此处使用的环境变量:
注意:
| 归档时间: |
|
| 查看次数: |
5051 次 |
| 最近记录: |