从从属键卢克节点上不立即可见在域KeyCloak服务器上创建领域/客户端



我们有2台以域模式运行Keycloak 4.8.3.Final (WildFly Core 6.0.2.Final)。首先,HOST1将运行域控制器,并将成为我们的主人。HOST2是我们的奴隶,并将其自身记载给主人。从我们的理解中,域模式通过提供存储和发布配置的中心地点来解决此问题。

第一个是通过执行命令开始的:

/opt/keycloak/bin/domain.sh -host -config host -master.xml -djboss.bind.address = 0.0.0.0.0.0.0.0.djboss.bind.address.management = 0.0.0.0.0.0.0-djava.security。egd = file:/dev/urandom -dkeycloak.profile.feature.token_exchange = enabled -djboss.node.name = host1

执行命令:

的第二个

/opt/keycloak/bin/domain.sh -host -config host -slave.xml -djboss.bind.address = 0.0.0.0.0.0.0.0.djboss.bind.address.management.Management = 0.0.0.0.0.0.0-djboss.domain。master.username = slave -djboss.domain.master.address = {host1_ip} -dkeycloak.profile.feature.token_exchange = enabled -djava.security.egd = file:/dev/dev/dev/dev/dev/dev/urandom -djboss.node.node.name = host2P>

他们俩都成功地开始了,奴隶设法将其连接到主人。我们使用的是服务器指向数据持久性的MySQL计算机。

首先,我们使用了KeyCloak发行版随附的默认domain.xml,我们最初的期望是,通过在host1上创建某些东西,更改将传播到host2。不幸的是,这没有发生。当我们创建用户时,用户将在一段时间后出现到host2。当我们从host1中创建一个领域或客户端时,直到我们重新启动服务器并强制强制使用信息同步之前,才能从host2看到这些更改。

下一步是更改domain.xml配置在infinispan指令处,并使缓存在所有计算机上复制。

<subsystem xmlns="urn:jboss:domain:infinispan:7.0">
    <cache-container name="keycloak">
        <transport lock-timeout="60000" />
        <replicated-cache name="authenticationSessions" />
        <replicated-cache name="clientSessions" />
        <replicated-cache name="offlineClientSessions" />
        <replicated-cache name="authorization" />
        <replicated-cache name="work" />
        <replicated-cache name="keys" />
        <replicated-cache name="actionTokens"></replicated-cache>
        <replicated-cache name="realms" />
        <replicated-cache name="users" />
        <replicated-cache name="sessions" />
        <replicated-cache name="offlineSessions" />
        <replicated-cache name="loginFailures" />
        <replicated-cache name="work" />
        <replicated-cache name="realmVersions" />
    </cache-container>
    <cache-container name="server" aliases="singleton cluster" default-cache="default" module="org.wildfly.clustering.server">
        <transport lock-timeout="60000" />
        <replicated-cache name="default">
            <transaction mode="BATCH" />
        </replicated-cache>
    </cache-container>
    <cache-container name="web" default-cache="dist" module="org.wildfly.clustering.web.infinispan">
        <transport lock-timeout="60000" />
        <distributed-cache name="dist">
            <locking isolation="REPEATABLE_READ" />
            <transaction mode="BATCH" />
            <file-store />
        </distributed-cache>
    </cache-container>
    <cache-container name="ejb" aliases="sfsb" default-cache="dist" module="org.wildfly.clustering.ejb.infinispan">
        <transport lock-timeout="60000" />
        <distributed-cache name="dist">
            <locking isolation="REPEATABLE_READ" />
            <transaction mode="BATCH" />
            <file-store />
        </distributed-cache>
    </cache-container>
    <cache-container name="hibernate" module="org.infinispan.hibernate-cache">
        <transport lock-timeout="60000" />
        <local-cache name="local-query">
            <object-memory size="10000" />
            <expiration max-idle="100000" />
        </local-cache>
        <invalidation-cache name="entity">
            <transaction mode="NON_XA" />
            <object-memory size="10000" />
            <expiration max-idle="100000" />
        </invalidation-cache>
        <replicated-cache name="timestamps" />
    </cache-container>
</subsystem>

但是,我们遇到了相同的问题,尤其是一个问题,即如果您将秘密重新生成秘密,那么秘密就不会传播给奴隶主持人或相反的方式。

其他人是否会遇到这个问题,您为解决它做了什么?任何帮助将不胜感激!

问题是我们的云提供商不支持多播,两个服务器无法找到并互相交谈!我对配置进行了更改,并开始使用TCPPPing而不是仅使用UDP的Ping。我花了很多时间试图弄清楚这一点,因此请确保您的提供商支持多播,以便只使用KeyCloak开箱即用。另外,我发现了以下文章,该文章提供了有关如何设置KeyCloak https://www.keycloak.org/2019/04/keycloak-cluster-setup.html。如果我试图解决这个问题时只创建了本文...

相关内容

最新更新