【发布时间】:2019-05-20 04:03:42
【问题描述】:
我们正在更改我们的一个应用程序以使用 Hazelcast 3.11 社区版,并在几个主机上运行的多个 JVM 之间进行一些锁定。 我们按照如下语法配置我们的集群:
public class HazelcastBuilder {
private final String name;
private final String password;
private final String members;
private final String hostName;
private final String applicationName;
public HazelcastInstance getHazelcastInstance() {
Config hazelcastConfig = new Config();
GroupConfig groupConfig = new GroupConfig(name, password);
hazelcastConfig.setGroupConfig(groupConfig);
TcpIpConfig tcpIpConfig = new TcpIpConfig();
tcpIpConfig.setEnabled(true);
for (String member : members.split(",")) {
tcpIpConfig.addMember(member.trim());
}
hazelcastConfig.getNetworkConfig().getJoin().setTcpIpConfig(tcpIpConfig);
// By default the multicast config is enabled. Disable it here.
hazelcastConfig.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(false);
String instanceName = applicationName + "-" + hostName;
hazelcastConfig.setInstanceName(instanceName);
logger.info("Creating hazelcast instance: " + instanceName);
return Hazelcast.getOrCreateHazelcastInstance(hazelcastConfig);
}
}
一切正常,集群被正确创建并按预期工作。
但是,我创建了一个单元测试并配置了一个与应用程序同名的本地集群,然后我将我的开发人员机器添加到其中。一切正常,我的本地主机毫无问题地加入了应用程序集群。
在生产环境中当然不能接受这样的事情,这是我的问题:
鉴于我们有一个可以运行我们的应用程序的主机名列表,防止未经授权的成员加入给定 hazelcast 集群的最佳方法是什么。
提前感谢您的帮助。
【问题讨论】: