Cloud Foundry上的Keycloak独立群集

时间:2019-04-25 14:30:59

标签: cloudfoundry keycloak

如何在Cloud Foundry上配置Keycloak独立群集?

我尝试将docker image jboss/keycloak:4.5.0.Final用于内部路由:

  • env:
    • JGROUPS_DISCOVERY_PROTOCOL: dns.DNS_PING
    • JGROUPS_DISCOVERY_PROPERTIES: dns_query=keycloak-cluster-poc.apps.internal
  • 打开了应用程序实例之间的所有udp和tcp端口:
    cf add-network-policy keycloak-cluster-poc --destination-app keycloak-cluster-poc --protocol tcp/udp --port 1-65535
    

不起作用。我应该公开其他端口吗?

<socket-binding name="jgroups-mping" interface="private" port="0" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45700"/>
<socket-binding name="jgroups-tcp" interface="private" port="7600"/>
<socket-binding name="jgroups-tcp-fd" interface="private" port="57600"/>
<socket-binding name="jgroups-udp" interface="private" port="55200" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45688"/>
<socket-binding name="jgroups-udp-fd" interface="private" port="54200"/>
<socket-binding name="modcluster" port="0" multicast-address="224.0.1.105" multicast-port="23364"/>

1 个答案:

答案 0 :(得分:1)

我终于找到了自己的问题的答案。

如果您正在寻找快速解决方案,请转到此keycloak4cf存储库。


我必须面对的主要问题:

Keycloak最低版本

使用jboss/keycloak:5.0.0或更高/最新

已删除hardcodedJGRP-2295 .svc.cluster.local DNS查询后缀。

此修补程序已在JGroups 4.0.15.Final中发布,并在Infinispan Core 9.4.0.Final.中使用,并与Keycloak 5.0.0(包含inifnispan-core 9.4.3.Final)一起发布。

集群

必须使用TCP而不是multicast UDP进行群集(Cloud Foundry上没有多播-谢谢@DanielMikusa的提示)。

要更改此配置,请使用dns.DNS_PING.cli

embed-server --server-config=standalone-ha.xml --std-out=echo
batch
/subsystem=jgroups:write-attribute(name=default-stack,value=tcp)
/subsystem=jgroups/channel=ee:write-attribute(name=stack,value=tcp)
/subsystem=jgroups/stack=udp/protocol=PING:remove()
/subsystem=jgroups/stack=udp/protocol=$keycloak_jgroups_discovery_protocol:add(add-index=0, properties=$keycloak_jgroups_discovery_protocol_properties)
/subsystem=jgroups/stack=tcp/protocol=MPING:remove()
/subsystem=jgroups/stack=tcp/protocol=$keycloak_jgroups_discovery_protocol:add(add-index=0, properties=$keycloak_jgroups_discovery_protocol_properties)
run-batch
stop-embedded-server

添加网络策略以允许群集节点之间的连接:

cf add-network-policy keycloak-cluster-poc --destination-app keycloak-cluster-poc --protocol tcp --port 7600