【问题标题】:Not able to form embedded Hazelcast jet cluster in docker无法在 docker 中形成嵌入式 Hazelcast 喷气机集群
【发布时间】:2020-02-28 12:25:14
【问题描述】:

我正在尝试形成一个喷气机集群(不是在客户端-服务器部署策略中,而是嵌入式)。

尝试了多播和 TCP 发现,但仍然不成功。当我尝试使用 docker-compose 文件扩展多个容器时,两个容器都会出现但从未形成集群。

我正在以编程方式传递集群成员信息。

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);
        } 

容器 1 日志

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

容器 2 日志

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

【问题讨论】:

    标签: docker docker-compose docker-swarm hazelcast hazelcast-jet


    【解决方案1】:

    你试过hazelcast.local.publicAddress吗?

    Jet 使用与 IMDG 相同的集群,所以这里的说明 https://hub.docker.com/r/hazelcast/hazelcast-jet 应该会有所帮助。

    【讨论】:

    • 如果你想通过一些客户端连接到集群,我相信 hazelcast.local.publicAddress 是必需的。我没有任何客户。
    • 客户端和服务器都需要它。如果它不适合您,您可以发布您的 Dockerfile 和用于启动 Docker 映像的命令行。应该只是让 IP 地址和端口可用。
    猜你喜欢
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多