2016-08-17 33 views
1

我们正在尝试使用Docker在AWS EC2上将HA设置为KeyCloak 1.9.3,但群集没有错误,但登录失败,出现以下错误:带有Docker的AWS EC2上的KeyCloak HA - 群集已启动,但登录失败

WARN [org.keycloak.events](默认任务-10)类型= LOGIN_ERROR,realmId =主人,的clientId = NULL,用户id = NULL,ip地址= 172.30.200.171,误差= invalid_code

我们遵循此(http://lists.jboss.org/pipermail/keycloak-user/2016-February/004940.html)后,但使用S3_PING,而不是JDBC_PING。

看来,节点检测到彼此:

INFO [org.infinispan.remoting.transport.jgroups.JGroupsTransport](来电-2,EE,6dbce1e2a05a)ISPN000094:通道keycloak收到新集群视图: [6dbce1e2a05a | 1](2)[6dbce1e2a05a,75f2b2e98cfd]

当我们查询jboss mbean“jboss.as.expr:subsystem = jgroups,channel = ee时,我们怀疑节点之间没有互相通信“第一个节点的结果是:

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是开放的。

任何想法可能会导致它?

下面是相关独立-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 

任何帮助将不胜感激。

回答

2

显然这个设置没有问题,问题出在我们意外地在内存DB中为每个实例配置的数据库,而不是我们的共享数据库。

-1

您必须启用AWS负载平衡器的粘性才能成功登录。