Hazelcast 在运行时添加成员
Hazelcast add members at runtime
我创建了一个集群
private static final String IP_CLUSTER = "192.168.0.116:5701";
Config cfg = new Config();
// set IP of cluster
cfg.getNetworkConfig().getJoin().getTcpIpConfig().addMember(IP_CLUSTER).setEnabled(true);
cfg.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(false);
HazelcastInstance instance = Hazelcast.newHazelcastInstance(cfg);
现在我尝试使用 hazelcast-client
连接这个集群
HazelcastInstance clientInstance = null;
try {
ClientConfig cfg = new ClientConfig();
ClientNetworkConfig cnc = cfg.getNetworkConfig();
// ip of cluster that i want to connect
cnc.addAddress(IP_CLUSTER);
clientInstance = HazelcastClient.newHazelcastClient(cfg);
}
catch (Exception e) {
return;
}
当我尝试连接客户端时,我在输出后成为客户端
Jun 19, 2017 8:19:51 PM com.hazelcast.core.LifecycleService
INFORMATION: [192.168.0.116]:5701 [dev] [3.7.8] [192.168.0.116]:5701
is STARTED Jun 19, 2017 8:19:56 PM
com.hazelcast.nio.tcp.SocketAcceptorThread INFORMATION:
[192.168.0.116]:5701 [dev] [3.7.8] Accepting socket connection from
/192.168.0.116:60200 Jun 19, 2017 8:19:56 PM
com.hazelcast.nio.tcp.TcpIpConnectionManager INFORMATION:
[192.168.0.116]:5701 [dev] [3.7.8] Established socket connection
between /192.168.0.116:5701 and /192.168.0.116:60200 Jun 19, 2017
8:19:56 PM
com.hazelcast.client.impl.protocol.task.AuthenticationMessageTask
INFORMATION: [192.168.0.116]:5701 [dev] [3.7.8] Received auth from
Connection[id=1, /192.168.0.116:5701->/192.168.0.116:60200,
endpoint=null, alive=true, type=JAVA_CLIENT], successfully
authenticated, principal :
ClientPrincipal{uuid='adaf4c23-a708-489b-9480-dfc7edf960ce',
ownerUuid='02d591cc-b572-4e6e-8904-92bd0d8c3610'}, owner connection :
true, client version : 3.7.8 Jun 19, 2017 8:20:07 PM
com.hazelcast.internal.partition.impl.PartitionStateManager
INFORMATION: [192.168.0.116]:5701 [dev] [3.7.8] Initializing cluster
partition table arrangement...
表示-> 新成员已连接到集群。正确吗?
但是当我询问集群中的成员数量时,它总是 1
我哪里搞错了?
如何添加新成员(HazelcastInstances
)到集群?
正如您自己提到的,您将 Hazelcast 客户端连接到(单节点)集群。客户端只是客户端而不是集群节点。将其想象成连接到数据库的 JDBC 客户端。要扩展集群,您需要启动额外的 Hazelcast 成员。
HazelcastInstance hz = Hazelcast.newHazelcastInstance(); // <- creates nodes
HazelcastInstance client = HazelcastClient.newHazelcastClient(); // <- creates a client
理解起来真的很奇怪,但是多次执行
private static final String IP_CLUSTER = "192.168.0.116:5701";
Config cfg = new Config();
// set IP of cluster
cfg.getNetworkConfig().getJoin().getTcpIpConfig().addMember(IP_CLUSTER).setEnabled(true);
cfg.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(false);
HazelcastInstance instance = Hazelcast.newHazelcastInstance(cfg);
会有:
- 第一次执行 - 创建一个集群并向其中添加一个节点
- 每次下一次执行 - 向现有集群添加一个节点
我创建了一个集群
private static final String IP_CLUSTER = "192.168.0.116:5701";
Config cfg = new Config();
// set IP of cluster
cfg.getNetworkConfig().getJoin().getTcpIpConfig().addMember(IP_CLUSTER).setEnabled(true);
cfg.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(false);
HazelcastInstance instance = Hazelcast.newHazelcastInstance(cfg);
现在我尝试使用 hazelcast-client
连接这个集群
HazelcastInstance clientInstance = null;
try {
ClientConfig cfg = new ClientConfig();
ClientNetworkConfig cnc = cfg.getNetworkConfig();
// ip of cluster that i want to connect
cnc.addAddress(IP_CLUSTER);
clientInstance = HazelcastClient.newHazelcastClient(cfg);
}
catch (Exception e) {
return;
}
当我尝试连接客户端时,我在输出后成为客户端
Jun 19, 2017 8:19:51 PM com.hazelcast.core.LifecycleService INFORMATION: [192.168.0.116]:5701 [dev] [3.7.8] [192.168.0.116]:5701 is STARTED Jun 19, 2017 8:19:56 PM com.hazelcast.nio.tcp.SocketAcceptorThread INFORMATION: [192.168.0.116]:5701 [dev] [3.7.8] Accepting socket connection from /192.168.0.116:60200 Jun 19, 2017 8:19:56 PM com.hazelcast.nio.tcp.TcpIpConnectionManager INFORMATION: [192.168.0.116]:5701 [dev] [3.7.8] Established socket connection between /192.168.0.116:5701 and /192.168.0.116:60200 Jun 19, 2017 8:19:56 PM com.hazelcast.client.impl.protocol.task.AuthenticationMessageTask INFORMATION: [192.168.0.116]:5701 [dev] [3.7.8] Received auth from Connection[id=1, /192.168.0.116:5701->/192.168.0.116:60200, endpoint=null, alive=true, type=JAVA_CLIENT], successfully authenticated, principal : ClientPrincipal{uuid='adaf4c23-a708-489b-9480-dfc7edf960ce', ownerUuid='02d591cc-b572-4e6e-8904-92bd0d8c3610'}, owner connection : true, client version : 3.7.8 Jun 19, 2017 8:20:07 PM com.hazelcast.internal.partition.impl.PartitionStateManager INFORMATION: [192.168.0.116]:5701 [dev] [3.7.8] Initializing cluster partition table arrangement...
表示-> 新成员已连接到集群。正确吗?
但是当我询问集群中的成员数量时,它总是 1
我哪里搞错了?
如何添加新成员(HazelcastInstances
)到集群?
正如您自己提到的,您将 Hazelcast 客户端连接到(单节点)集群。客户端只是客户端而不是集群节点。将其想象成连接到数据库的 JDBC 客户端。要扩展集群,您需要启动额外的 Hazelcast 成员。
HazelcastInstance hz = Hazelcast.newHazelcastInstance(); // <- creates nodes
HazelcastInstance client = HazelcastClient.newHazelcastClient(); // <- creates a client
理解起来真的很奇怪,但是多次执行
private static final String IP_CLUSTER = "192.168.0.116:5701";
Config cfg = new Config();
// set IP of cluster
cfg.getNetworkConfig().getJoin().getTcpIpConfig().addMember(IP_CLUSTER).setEnabled(true);
cfg.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(false);
HazelcastInstance instance = Hazelcast.newHazelcastInstance(cfg);
会有:
- 第一次执行 - 创建一个集群并向其中添加一个节点
- 每次下一次执行 - 向现有集群添加一个节点