0

I am trying to form a jet cluster(not in client-server deployment strategy, but embedded one).

Tried both Multicast and TCP discovery, but still not successful. when i try to scale multiple container using docker-compose file, both container comes up but never forms cluster.

I am passing cluster member information in programmatic way.

JetConfig cfg = new JetConfig();
        Configuration jsonObject = getJetConfigs();
        cfg.getHazelcastConfig().getNetworkConfig().setPortAutoIncrement(true);
        cfg.getHazelcastConfig().getNetworkConfig().setPort(jsonObject.getInteger("port"));
        if(jsonObject.getBoolean("multicastEnabled")){
            LOGGER.info("multicast is enabled");
            cfg.getHazelcastConfig().getNetworkConfig().getJoin().getTcpIpConfig().setEnabled(false);
            cfg.getHazelcastConfig().getNetworkConfig().getJoin().getMulticastConfig().setEnabled(true);
            cfg.getHazelcastConfig().getNetworkConfig().getJoin().getMulticastConfig().setMulticastGroup(jsonObject.getString("multicastGroup"));
            cfg.getHazelcastConfig().getNetworkConfig().getJoin().getMulticastConfig().setMulticastPort(jsonObject.getInteger("multicastPort"));
        }

        if(jsonObject.getBoolean("tcpIpEnabled")){
            LOGGER.info("TcpIP is enabled");
            cfg.getHazelcastConfig().getNetworkConfig().getJoin().getMulticastConfig().setEnabled(false);
            cfg.getHazelcastConfig().getNetworkConfig().getJoin().getTcpIpConfig().setEnabled(true);
            String tcpIpMembers = jsonObject.getString("tcpIpMemberList");
            List<String> tcpIpMemberList = tcpIpMembers != null ? Arrays.asList(tcpIpMembers.split(",")) : Collections.emptyList();
            LOGGER.info("trying for members {}", tcpIpMemberList);
            cfg.getHazelcastConfig().getNetworkConfig().getJoin().getTcpIpConfig().setMembers(tcpIpMemberList);
        } 

Container 1 logs

Feb 28, 2020 1:53:31 AM com.hazelcast.cluster.impl.TcpIpJoiner
INFO: [172.19.0.3]:5701 [jet] [3.1] [172.18.0.4]:5703 is added to the blacklist.
Feb 28, 2020 1:53:32 AM com.hazelcast.internal.cluster.ClusterService
INFO: [172.19.0.3]:5701 [jet] [3.1]

Members {size:1, ver:1} [
    Member [172.19.0.3]:5701 - 6482ff63-1d76-4029-98bb-562fc094e44e this
]

Feb 28, 2020 1:53:32 AM com.hazelcast.core.LifecycleService
INFO: [172.19.0.3]:5701 [jet] [3.1] [172.19.0.3]:5701 is STARTED

Container 2 logs

Feb 28, 2020 1:54:30 AM com.hazelcast.internal.cluster.ClusterService
INFO: [172.18.0.4]:5701 [jet] [3.1]

Members {size:1, ver:1} [
    Member [172.18.0.4]:5701 - 9a655237-c8fb-48c5-a57e-39b9ea877ccb this
]

Feb 28, 2020 1:54:30 AM com.hazelcast.core.LifecycleService
INFO: [172.18.0.4]:5701 [jet] [3.1] [172.18.0.4]:5701 is STARTED

1 Answers1

0

Have you tried hazelcast.local.publicAddress?

Jet uses the same clustering as IMDG, so the instructions here https://hub.docker.com/r/hazelcast/hazelcast-jet should help.

Neil Stevenson
  • 3,060
  • 9
  • 11
  • I believe hazelcast.local.publicAddress is required if you want to connect to the cluster through some client. I dont have any client in my case. – mahendra yadav Feb 28 '20 at 14:31
  • It needs it for both client and server. If it doesn't work for you, can you post your Dockerfile and the command line you use to start the Docker images. It should just be a case of making the IP address and ports available. – Neil Stevenson Feb 28 '20 at 16:13