我正在使用hazelcast缓存进行我的应用程序。我在两台不同的机器上有两个jboss节点。每个节点有两个展开。每个部署文件都有自己的hazelcast缓存。
我想为每个应用程序在两个节点之间进行集群,下面是我的配置,
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...
有工作吗?如何避免这些日志或我做错了什么?
短暂性脑缺血发作
1条答案
按热度按时间31moq8wy1#
共享同一硬件的两个集群并不理想,因为它们争夺机器资源。
但是如果这样做了,就不希望它们发生冲突,这是默认端口分配的结果。默认情况下,尝试在端口5701上侦听,如果忙,则尝试5702,依此类推。并尝试寻找其他集群成员,假设他们也在5701上。
要使其工作:
(1) 给他们起个独特的名字,就像你做的那样
&
由于它们具有不同的集群名称,来自一个集群的成员将无法加入另一个集群。这不会阻止他们尝试,这会导致不需要的日志消息。
(2) 分配可预测端口
尝试
&
他们都会尝试从不同的偏移量开始寻找港口,这将考虑到可预测性。
否则,两个集群都将尝试使用默认的5701作为第一个端口,并且无论哪个集群首先启动,都将成功。
这样,第一个集群的成员将尝试并应该成功地获得6701。第二个集群的成员将尝试并应成功获取7701。
(3) 为连接尝试指定地址和端口
尝试
和