我们正在更改应用程序之一以使用Hazelcast 3.11 Community Edition,并在运行于少数主机上的多个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群集的最佳方法。
预先感谢您的帮助。
答案 0 :(得分:0)
如果要搜索安全功能,则应使用Hazelcast Enterprise版本。检查功能列表:
如果只需要防止任意计算机连接到群集,则开源版本中有几个选项:
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity"
android:background="@color/backPrimary"
android:layout_width="match_parent"
android:layout_height="match_parent">
...
content
...
<com.google.android.material.bottomappbar.BottomAppBar
android:id="@+id/bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
style="@style/Widget.MaterialComponents.BottomAppBar"
app:navigationIcon="@drawable/ic_burger_menu"
app:fabAlignmentMode="end"
/>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/start_project_day"
app:srcCompat="@drawable/ic_next"
app:layout_anchor="@id/bar"
/>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Hazelcast属性(或系统属性)-有关详细信息,请查看reference manual hazelcast.application.validation.token
属性设置为hazelcast.socket.bind.any
来禁用对所有本地接口的绑定。通常,您的生产群集在受信任的LAN环境中运行,因此您希望使其只能在该LAN内访问。false
配置,可以为您提供帮助。您正在使用TCP发现,因此它不适用于您的情况。最后说明:在Hazelcast开源版本中未选中组密码字段!