我的应用程序使用Hazelcast缓存。我在两台不同的机器上有两个Jboss节点。每个节点有两个部署。每个部署文件都有自己的榛子缓存。
我想为每个应用程序在两个节点之间集群,下面是我的配置,
Config config = new Config();
config.setClusterName("uniqueClusterName");
config.getNetworkConfig().getJoin().getTcpIpConfig().addMember("10.100.101.82,10.100.101.83").setEnabled(true);
config.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(false);
manager = Hazelcast.newHazelcastInstance(config);
我上面的配置运行良好,两个节点都在每个应用程序上进行集群。
但我发现了以下日志,这些日志正在连续打印
INFO [com.hazelcast.internal.cluster.impl.operations.SplitBrainMergeValidationOp] (hz.cocky_jackson.priority-generic-operation.thread-0) [10.100.101.82]:5702 [losce_qa] [4.1] Ignoring join check from [10.100.101.83]:5702, because this node is not master...
INFO [com.hazelcast.internal.cluster.impl.operations.SplitBrainMergeValidationOp] (hz.hungry_hofstadter.priority-generic-operation.thread-0) [10.100.101.82]:5701 [losce_qa] [4.1] Ignoring join check from [10.100.101.83]:5702, because this node is not master...
INFO [com.hazelcast.internal.cluster.impl.operations.SplitBrainMergeValidationOp] (hz.cocky_jackson.generic-operation.thread-1) [10.100.101.82]:5702 [losce_qa] [4.1] Ignoring join check from [10.100.101.83]:5702, because this node is not master...
周围有工作吗?如何避免这些日志,或者我在这里做错了什么?
TIA-
两个集群共享相同的硬件并不理想,因为它们会争夺机器资源。
但如果您这样做,您不希望它们发生冲突,默认端口分配会发生这种情况。默认情况是尝试在端口5701上侦听,如果忙,请尝试5702,依此类推。如果其他集群成员也在5701上,则尝试查找它们。
让它发挥作用:
(1( 给他们唯一的名字,就像你做一样
config.setClusterName("uniqueClusterName");
&
config.setClusterName("uniqueClusterName2");
由于它们有不同的集群名称,来自一个集群的成员将无法加入另一个。这不会阻止他们尝试,这会导致不需要的日志消息。
(2( 分配可预测端口
尝试
config.getNetworkConfig().setPort(6701);
&
config.getNetworkConfig().setPort(7701);
他们都将尝试从不同的偏移量开始寻找端口,这将允许可预测性。
如果没有这一点,两个集群都将尝试使用默认的5701作为第一个端口,无论哪个集群首先启动都将成功。
这样,第一个集群的成员将尝试并应该成功获得6701。第二个集群的成员将尝试并应该成功获得7701。
(3( 指定连接尝试的地址和端口
尝试
config.getNetworkConfig().getJoin().getTcpIpConfig()
.addMember("10.100.101.82:6701,10.100.101.83:6701")
和
config.getNetworkConfig().getJoin().getTcpIpConfig()
.addMember("10.100.101.82:7701,10.100.101.83:7701")