【发布时间】:2020-03-28 19:45:57
【问题描述】:
在我的项目中,我使用的是 Hazelcast 3.7.8,但应用程序和节点之间的数据分布存在问题。
我有 2 个节点,对于每个节点,我有 4 个 Spring 应用程序部署在具有单个 JVM 进程的 WAS 上。
这些应用程序在它们之间共享一个地图。每个应用程序都有一个 hazelcast-configuration.xml 文件,但所有文件都相同,除了网络端口(5701、5702、5703、5704)。
通常但并非总是如此,在每个节点上同时部署其中一个应用程序后,分布式数据并不相同。部署的应用程序(在每个节点上)有一个数据集,另一个应用程序有另一个。
<cache:annotation-driven cache-manager="cacheManager" />
<bean id="cacheManager" class="com.hazelcast.spring.cache.HazelcastCacheManager">
<constructor-arg ref="hazelcastInstance" />
</bean>
<hz:hazelcast id="hazelcastInstance">
<hz:config>
<hz:instance-name>myCacheInstance</hz:instance-name>
<hz:group name="qualification" password="qualification"/>
<hz:properties>
<hz:property name="hazelcast.health.monitoring.level">OFF</hz:property>
<hz:property name="hazelcast.health.monitoring.delay.seconds">3600</hz:property>
</hz:properties>
<hz:network port="5701" port-auto-increment="true">
<hz:join>
<hz:multicast enabled="false" />
<hz:tcp-ip enabled="true">
<hz:member>NODE1</hz:member>
<hz:member>NODE2</hz:member>
</hz:tcp-ip>
</hz:join>
</hz:network>
<hz:partition-group enabled="false"/>
<hz:map name="my-map"
backup-count="1"
async-backup-count="1"
time-to-live-seconds="7200"
max-idle-seconds="0"
eviction-policy="LRU"
max-size="15"
max-size-policy="USED_HEAP_PERCENTAGE"
eviction-percentage="25"
min-eviction-check-millis="100"
merge-policy="com.hazelcast.map.merge.PassThroughMergePolicy">
</hz:map>
<hz:services enable-defaults="true"/>
</hz:config>
</hz:hazelcast>
[LOCAL] [qualification] [3.7.8] You configured your member address as host name. Please be aware of that your dns can be spoofed. Make sure that your dns configurations are correct.
[LOCAL] [qualification] [3.7.8] Resolving domain name 'NODE1' to address(es): [192.237.154.88]
[LOCAL] [qualification] [3.7.8] You configured your member address as host name. Please be aware of that your dns can be spoofed. Make sure that your dns configurations are correct.
[LOCAL] [qualification] [3.7.8] Resolving domain name 'NODE2' to address(es): [192.237.155.244]
[LOCAL] [qualification] [3.7.8] Interfaces is disabled, trying to pick one address from TCP-IP config addresses: [NODE2/192.237.155.244, NODE1/192.237.154.88]
[LOCAL] [qualification] [3.7.8] Prefer IPv4 stack is true.
[LOCAL] [qualification] [3.7.8] Picked [NODE2]:5705, using socket ServerSocket[addr=/0:0:0:0:0:0:0:0,localport=5705], bind any local is true [NODE2]:5705 [qualification] [3.7.8] Hazelcast 3.7.8 (20170525 - 4e820fa) starting at [NODE2]:5705 [NODE2]:5705
[qualification] [3.7.8] Copyright (c) 2008-2016, Hazelcast, Inc. All Rights Reserved. [NODE2]:5705
[qualification] [3.7.8] Configured Hazelcast Serialization version : 1 [NODE2]:5705
[qualification] [3.7.8] Backpressure is disabled [NODE2]:5705
[qualification] [3.7.8] Creating TcpIpJoiner [NODE2]:5705
[qualification] [3.7.8] Starting 8 partition threads [NODE2]:5705 [qualification] [3.7.8] Starting 5 generic threads (1 dedicated for priority tasks) [NODE2]:5705
[qualification] [3.7.8] [NODE2]:5705 is STARTING [NODE2]:5705 [qualification] [3.7.8] TcpIpConnectionManager configured with Non Blocking IO-threading model: 3 input threads and 3 output threads [NODE2]:5705
[qualification] [3.7.8] Connecting to NODE1/192.237.154.88:5703, timeout: 0, bind-any: true [NODE2]:5705 [qualification] [3.7.8] Connecting to NODE1/192.237.154.88:5704, timeout: 0, bind-any: true [NODE2]:5705
[qualification] [3.7.8] Connecting to NODE2/192.237.155.244:5703, timeout: 0, bind-any: true [NODE2]:5705
[qualification] [3.7.8] Connecting to NODE1/192.237.154.88:5705, timeout: 0, bind-any: true [192.237.155.244]:5703
[dev] [3.7.8] Accepting socket connection from /192.237.155.244:37105 [NODE2]:5705
[qualification] [3.7.8] Connecting to NODE2/192.237.155.244:5704, timeout: 0, bind-any: true [192.237.155.244]:5703
[dev] [3.7.8] Established socket connection between /192.237.155.244:5703 and /192.237.155.244:37105 [NODE2]:5704
[qualification] [3.7.8] Accepting socket connection from /192.237.155.244:50221 [NODE2]:5704
[qualification] [3.7.8] Established socket connection between /192.237.155.244:5704 and /192.237.155.244:50221 [NODE2]:5705
[qualification] [3.7.8] Established socket connection between /192.237.155.244:37105 and NODE2/192.237.155.244:5703 [NODE2]:5705
[qualification] [3.7.8] Established socket connection between /192.237.155.244:49809 and NODE1/192.237.154.88:5704 [NODE2]:5705
[qualification] [3.7.8] Established socket connection between /192.237.155.244:37358 and NODE1/192.237.154.88:5703 [NODE2]:5705
[qualification] [3.7.8] Established socket connection between /192.237.155.244:50221 and NODE2/192.237.155.244:5704 [NODE2]:5705
[qualification] [3.7.8] Established socket connection between /192.237.155.244:45740 and NODE1/192.237.154.88:5705 [192.237.155.244]:5703
[dev] [3.7.8] Wrong bind request from [NODE2]:5705! This node is not requested endpoint: [NODE2]:5703 [192.237.155.244]:5703
[dev] [3.7.8] Connection[id=2, /192.237.155.244:5703->/192.237.155.244:37105, endpoint=null, alive=false, type=MEMBER] closed. Reason: Wrong bind request from [NODE2]:5705! This node is not requested endpoint: [NODE2]:5703 [NODE2]:5705
[qualification] [3.7.8] Connection[id=2, /192.237.155.244:49809->NODE1/192.237.154.88:5704, endpoint=[NODE1]:5704, alive=false, type=MEMBER] closed. Reason: Connection closed by the other side [NODE2]:5705
[qualification] [3.7.8] Connection[id=1, /192.237.155.244:37105->NODE2/192.237.155.244:5703, endpoint=[NODE2]:5703, alive=false, type=MEMBER] closed. Reason: Connection closed by the other side [NODE2]:5705
[qualification] [3.7.8] Connecting to NODE1/192.237.154.88:5704, timeout: 0, bind-any: true [NODE2]:5705
[qualification] [3.7.8] Connecting to NODE2/192.237.155.244:5703, timeout: 0, bind-any: true [192.237.155.244]:5703
[dev] [3.7.8] Accepting socket connection from /192.237.155.244:59036 [NODE2]:5705
[qualification] [3.7.8] Established socket connection between /192.237.155.244:59036 and NODE2/192.237.155.244:5703 [NODE2]:5705
[qualification] [3.7.8] Established socket connection between /192.237.155.244:33775 and NODE1/192.237.154.88:5704 [192.237.155.244]:5703
[dev] [3.7.8] Established socket connection between /192.237.155.244:5703 and /192.237.155.244:59036 [192.237.155.244]:5703
[dev] [3.7.8] Wrong bind request from [NODE2]:5705! This node is not requested endpoint: [NODE2]:5703 [192.237.155.244]:5703
[dev] [3.7.8] Connection[id=3, /192.237.155.244:5703->/192.237.155.244:59036, endpoint=null, alive=false, type=MEMBER] closed. Reason: Wrong bind request from [NODE2]:5705! This node is not requested endpoint: [NODE2]:5703 [NODE2]:5705
[qualification] [3.7.8] Connection[id=6, /192.237.155.244:59036->NODE2/192.237.155.244:5703, endpoint=[NODE2]:5703, alive=false, type=MEMBER] closed. Reason: Connection closed by the other side [NODE2]:5705
[qualification] [3.7.8] Connection[id=7, /192.237.155.244:33775->NODE1/192.237.154.88:5704, endpoint=[NODE1]:5704, alive=false, type=MEMBER] closed. Reason: Connection closed by the other side [NODE2]:5705
[qualification] [3.7.8] Ignoring master response [NODE1]:5703 from [NODE1]:5703 since this node has an active master [NODE2]:5704 [NODE2]:5705
[qualification] [3.7.8] Ignoring master response [NODE1]:5703 from [NODE1]:5703 since this node has an active master [NODE2]:5704
怎么了?
提前致谢
【问题讨论】:
-
您似乎没有足够的 CPU 在一台机器上有效地运行 4 个实例,并且分区组设置也不理想。但是,这些不会是您的问题的原因。列出了端口 5705 上的
Connecting to NODE1/192.237.154.88:5705的事实表明该机器上运行了 5 个 Hazelcast,而应该只有 4 个。尝试确保一切都已关闭,并且它们都使用相同的配置文件——端口 5701 是第一个一个它会尝试,如果不可用,请尝试 5702 ......所以它不需要改变,这只是起点。 -
只是一个问题,每个节点的端口不一样。如果 Node1 上的 AppX 使用端口 5701,则 Node2 上的同一个应用程序会使用另一个端口启动。似乎两个不同节点上的端口不能相同。
-
port="5701" port-auto-increment="true"表示尝试 5701 端口。所有节点都应尝试相同的端口。第一个开始的人会认领它。自动增量标志意味着如果 5701 正在使用中,请尝试 5702,然后尝试 5703,依此类推,直到 5802,然后再放弃。如果您只希望每个主机有一个实例,请将 auto-increment 设置为 false,然后如果正在使用 5701,它会立即放弃——这不是您想要的,因为您正在每个主机运行四个实例。 -
我会将其转换为答案...