[jgroups-users] How to find a valid bind address in docker

Questions/problems related to using JGroups <[email protected]> Tue, 8 Nov 2016 14:06:59 +0100
Newsgroups gmane.comp.java.javagroups.general
Message-ID <CAFvEW4baD7fPnz+js4EzoNf3mZqCQuFnVrk9wtmLmWbVgODM8Q@mail.gmail.com>
HI,

My attempts to accept TCPPING or any other connections from non-local peers
are blocked by org.jgroups.util.Util.checkIfValidAddress. See stack trace
below.

My easiest way out would be to bind to 0.0.0.0 but register a logical IP
address as the external bind address. Can that be done?

Background: I'm trying to run Keycloak 2.3.0 in Kubernetes. Each instance
will have its own Service, and the service gets an IP address that is not
the same as that returned by `hostname -i`. For example I have a resolvable
name keycloak-0 with an IP found in env var KEYCLOAK_0_SERVICE_HOST. I
can't bind to that address, but I want to use it for initial_hosts.

Can I somehow configure the socket-binding entries with 0.0.0.0 but pass
${env.KEYCLOAK_0_SERVICE_HOST} as bind_addr to JGroups? The source for
checkIfValidAddress indicates that only local addresses are valid.

regards
Staffan Olsson

12:17:32,979 INFO  [org.jboss.as.server.deployment] (MSC service thread
1-3) WFLYSRV0027: Starting deployment of "keycloak-server.war"
(runtime-name: "keycloak-server.war")
12:17:33,427 WARN  [org.jboss.as.clustering.jgroups] (MSC service thread
1-1) WFLYCLJG0006: property bind_addr for protocol
org.jgroups.protocols.TCP attempting to override socket binding value
0.0.0.0 : property value 10.0.0.170 will be ignored
12:17:33,582 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-1)
MSC000001: Failed to start service jboss.jgroups.channel.ee:
org.jboss.msc.service.StartException in service jboss.jgroups.channel.ee:
java.security.PrivilegedActionException: java.net.BindException: [TCP] /
0.0.0.0 is not a valid address on any local network interface
    at
org.wildfly.clustering.jgroups.spi.service.ChannelBuilder.start(ChannelBuilder.java:80)
    at
org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948)
    at
org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881)
    at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.security.PrivilegedActionException: java.net.BindException:
[TCP] /0.0.0.0 is not a valid address on any local network interface
    at
org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:640)
    at
org.jboss.as.clustering.jgroups.JChannelFactory.createChannel(JChannelFactory.java:98)
    at
org.wildfly.clustering.jgroups.spi.service.ChannelBuilder.start(ChannelBuilder.java:78)
    ... 5 more
Caused by: java.net.BindException: [TCP] /0.0.0.0 is not a valid address on
any local network interface
    at org.jgroups.util.Util.checkIfValidAddress(Util.java:3522)
    at
org.jgroups.stack.Configurator.ensureValidBindAddresses(Configurator.java:903)
    at
org.jgroups.stack.Configurator.setupProtocolStack(Configurator.java:118)
    at
org.jgroups.stack.Configurator.setupProtocolStack(Configurator.java:57)
    at org.jgroups.stack.ProtocolStack.setup(ProtocolStack.java:477)
    at org.jgroups.JChannel.init(JChannel.java:853)
    at org.jgroups.JChannel.<init>(JChannel.java:159)
    at
org.jboss.as.clustering.jgroups.JChannelFactory$1.run(JChannelFactory.java:95)
    at
org.jboss.as.clustering.jgroups.JChannelFactory$1.run(JChannelFactory.java:92)
    at
org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:636)
    ... 7 more

12:17:33,595 ERROR [org.jboss.as.controller.management-operation]
(Controller Boot Thread) WFLYCTL0013: Operation ("add") failed - address: ([
    ("subsystem" => "jgroups"),
    ("channel" => "ee")
]) - failure description: {"WFLYCTL0080: Failed services" => {"
jboss.jgroups.channel.ee" => "org.jboss.msc.service.StartException in
service jboss.jgroups.channel.ee: java.security.PrivilegedActionException:
java.net.BindException: [TCP] /0.0.0.0 is not a valid address on any local
network interface
    Caused by: java.security.PrivilegedActionException:
java.net.BindException: [TCP] /0.0.0.0 is not a valid address on any local
network interface
    Caused by: java.net.BindException: [TCP] /0.0.0.0 is not a valid
address on any local network interface"}}

This issue is similar to
http://stackoverflow.com/questions/33141426/activemq-cant-be-bound-to-0-0-0-0-in-wildfly-10-0-0-cr2-in-profile-standalone-f
but binding to an interface isn't a good solution in a docker context.

I've also tried to see if this is tested somehow in Keycloak:
http://lists.jboss.org/pipermail/keycloak-user/2016-November/008267.html

------------------------------------------------------------------------------
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today. http://sdm.link/xeonphi

_______________________________________________
javagroups-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/javagroups-users