I am trying to connect two keycloak instances across separate servers, but I can not do this. Can somebody help me?
Here is my source code for docker containers and ifinispan config
INFINISPAN
<!--
~ Copyright 2019 Red Hat, Inc. and/or its affiliates
~ and other contributors as indicated by the @author tags.
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<infinispan
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:infinispan:config:14.0 http://www.infinispan.org/schemas/infinispan-config-14.0.xsd"
xmlns="urn:infinispan:config:14.0">
<jgroups>
<stack name="postgres-jdbc-ping-tcp" extends="tcp">
<TCP external_addr="${env.JGROUPS_DISCOVERY_EXTERNAL_IP:127.0.0.1}" />
<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_PORT:5432}/${env.KC_DB_URL_DATABASE}${env.KC_DB_URL_PROPERTIES:}"
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=?"
clear_sql="DELETE 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>
<cache-container name="keycloak">
<transport lock-timeout="60000" stack="postgres-jdbc-ping-tcp" />
<local-cache name="realms" simple-cache="true">
<encoding>
<key media-type="application/x-java-object" />
<value media-type="application/x-java-object" />
</encoding>
<memory max-count="10000" />
</local-cache>
<local-cache name="users" simple-cache="true">
<encoding>
<key media-type="application/x-java-object" />
<value media-type="application/x-java-object" />
</encoding>
<memory max-count="10000" />
</local-cache>
<distributed-cache name="sessions" owners="2">
<expiration lifespan="-1" />
</distributed-cache>
<distributed-cache name="authenticationSessions" owners="2">
<expiration lifespan="-1" />
</distributed-cache>
<distributed-cache name="offlineSessions" owners="2">
<expiration lifespan="-1" />
</distributed-cache>
<distributed-cache name="clientSessions" owners="2">
<expiration lifespan="-1" />
</distributed-cache>
<distributed-cache name="offlineClientSessions" owners="2">
<expiration lifespan="-1" />
</distributed-cache>
<distributed-cache name="loginFailures" owners="2">
<expiration lifespan="-1" />
</distributed-cache>
<local-cache name="authorization" simple-cache="true">
<encoding>
<key media-type="application/x-java-object" />
<value media-type="application/x-java-object" />
</encoding>
<memory max-count="10000" />
</local-cache>
<replicated-cache name="work">
<expiration lifespan="-1" />
</replicated-cache>
<local-cache name="keys" simple-cache="true">
<encoding>
<key media-type="application/x-java-object" />
<value media-type="application/x-java-object" />
</encoding>
<expiration max-idle="3600000" />
<memory max-count="1000" />
</local-cache>
<distributed-cache name="actionTokens" owners="2">
<encoding>
<key media-type="application/x-java-object" />
<value media-type="application/x-java-object" />
</encoding>
<expiration max-idle="-1" lifespan="-1" interval="300000" />
<memory max-count="-1" />
</distributed-cache>
</cache-container>
</infinispan>```
**KEYCLOAK-1**
docker run --rm --name keycloak-1 -p 8080:8080
-e KEYCLOAK_ADMIN=admin
-e KEYCLOAK_ADMIN_PASSWORD=admin
-e KC_DB_URL_HOST=192.168.178.91
-e KC_DB_URL_DATABASE=p-keycloak
-e KC_DB_USERNAME=keycloak
-e KC_DB_PASSWORD=password
-e JGROUPS_DISCOVERY_EXTERNAL_IP=192.168.178.88
-e KC_CACHE_CONFIG_FILE=cache-ispn-jdbc-ping.xml
-v ${PWD}/cache-ispn-jdbc-ping.xml:/opt/keycloak/conf/cache-ispn-jdbc-ping.xml
Quay start-dev
**KEYCLOAK-2**
docker run --rm --name keycloak-2 -p 8080:8080
-e KEYCLOAK_ADMIN=admin
-e KEYCLOAK_ADMIN_PASSWORD=admin
-e KC_DB_URL_HOST=192.168.178.91
-e KC_DB_URL_DATABASE=p-keycloak
-e KC_DB_USERNAME=keycloak
-e KC_DB_PASSWORD=password
-e JGROUPS_DISCOVERY_EXTERNAL_IP=192.168.178.88
-e KC_CACHE_CONFIG_FILE=cache-ispn-jdbc-ping.xml
-v ${PWD}/cache-ispn-jdbc-ping.xml:/opt/keycloak/conf/cache-ispn-jdbc-ping.xml
Quay start-dev
**POSTGRES**
docker run -d --rm --name p-keycloak
-p 5432:5432
-e POSTGRES_DB=p-keycloak
-e POSTGRES_USER=keycloak
-e POSTGRES_PASSWORD=password
postgres:latest



