我们正在尝试使用docker在AWS EC2上设置带有HA的KeyCloak 1.9.3,群集启动时没有错误,但是登录失败并出现以下错误:
WARN [org.keycloak.events](默认任务-10)type = LOGIN_ERROR,realmId = master,clientId = null,userId = null,ipAddress = 172.30.200.171,error = invalid_code
我们已经关注了这个(http://lists.jboss.org/pipermail/keycloak-user/2016-February/004940.html)帖子但是使用了S3_PING而不是JDBC_PING。
似乎节点互相检测到了:
INFO [org.infinispan.remoting.transport.jgroups.JGroupsTransport](Incoming-2,ee,6dbce1e2a05a)ISPN000094:收到频道密钥泄露的新集群视图:[6dbce1e2a05a | 1](2)[6dbce1e2a05a,75f2b2e98cfd] < / p>
当我们查询jboss mbean&#34; jboss.as.expr:subsystem = jgroups,channel = ee&#34;时,我们怀疑节点之间没有相互通信。第一个节点的结果是:
jgroups,channel=ee = [6dbce1e2a05a|1] (2) [6dbce1e2a05a, 75f2b2e98cfd]
jgroups,channel=ee receivedMessages = 0
jgroups,channel=ee sentMessages = 0
对于第二个节点:
jgroups,channel=ee = [6dbce1e2a05a|1] (2) [6dbce1e2a05a, 75f2b2e98cfd]
jgroups,channel=ee receivedMessages = 0
jgroups,channel=ee sentMessages = 5
我们还验证了TCP端口57600和7600已打开。
知道可能导致什么吗?
以下是相关的standalone-ha.xml配置,下面是启动命令:
<subsystem xmlns="urn:jboss:domain:jgroups:4.0">
<channels default="ee">
<channel name="ee" stack="tcp"/>
</channels>
<stacks>
<stack name="udp">
<transport type="UDP" socket-binding="jgroups-udp"/>
<protocol type="PING"/>
<protocol type="MERGE3"/>
<protocol type="FD_SOCK" socket-binding="jgroups-udp-fd"/>
<protocol type="FD_ALL"/>
<protocol type="VERIFY_SUSPECT"/>
<protocol type="pbcast.NAKACK2"/>
<protocol type="UNICAST3"/>
<protocol type="pbcast.STABLE"/>
<protocol type="pbcast.GMS"/>
<protocol type="UFC"/>
<protocol type="MFC"/>
<protocol type="FRAG2"/>
</stack>
<stack name="tcp">
<transport type="TCP" socket-binding="jgroups-tcp">
<property name="external_addr">200.129.4.189</property>
</transport>
<protocol type="S3_PING">
<property name="access_key">AAAAAAAAAAAAAA</property>
<property name="secret_access_key">BBBBBBBBBBBBBB</property>
<property name="location">CCCCCCCCCCCCCCCCCCCC</property>
</protocol>
<protocol type="MERGE3"/>
<protocol type="FD_SOCK" socket-binding="jgroups-tcp-fd">
<property name="external_addr">200.129.4.189</property>
</protocol>
<protocol type="FD"/>
<protocol type="VERIFY_SUSPECT"/>
<protocol type="pbcast.NAKACK2"/>
<protocol type="UNICAST3"/>
<protocol type="pbcast.STABLE"/>
<protocol type="pbcast.GMS"/>
<protocol type="MFC"/>
<protocol type="FRAG2"/>
</stack>
</stacks>
</subsystem>
<socket-binding name="jgroups-tcp" interface="public" port="7600"/>
<socket-binding name="jgroups-tcp-fd" interface="public" port="57600"/>
我们使用以下内容启动服务器(INTERNAL_HOST_IP是容器内部IP地址):
standalone.sh -c=standalone-ha.xml -b=$INTERNAL_HOST_IP -bmanagement=$INTERNAL_HOST_IP -bprivate=$INTERNAL_HOST_IP
任何帮助将不胜感激。
答案 0 :(得分:2)
显然设置没有问题,问题在于我们在每个实例的内存数据库中意外配置的数据库而不是我们的共享数据库。
答案 1 :(得分:-1)
您必须启用AWS负载均衡器的粘性才能成功登录。