Hazelcast在运行时添加成员

时间:2017-06-19 18:29:04

标签: java cluster-computing hazelcast

我创建了一个群集

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;
}

当我尝试连接客户端时,我在输出

后成为客户端
  

2017年6月19日下午8:19:51 com.hazelcast.core.LifecycleService   信息:[192.168.0.116]:5701 [dev] [3.7.8] [192.168.0.116]:5701   即将开始2017年6月19日下午8:19:56   com.hazelcast.nio.tcp.SocketAcceptorThread信息:   [192.168.0.116]:5701 [dev] [3.7.8]接受来自的套接字连接   /192.168.0.116:60200六月19,2017 8:19:56 PM   com.hazelcast.nio.tcp.TcpIpConnectionManager信息:   [192.168.0.116]:5701 [dev] [3.7.8]建立套接字连接   介于/192.168.0.116:5701和/192.168.0.116:60200 2017年6月19日之间   晚上8:19:56   com.hazelcast.client.impl.protocol.task.AuthenticationMessageTask   信息:[192.168.0.116]:5701 [dev] [3.7.8]收到身份验证   连接[id = 1,/192.168.0.116:5701-> /192.168.0.116:60200,   endpoint = null,alive = true,type = JAVA_CLIENT],成功   经过认证的校长:   ClientPrincipal {UUID = 'adaf4c23-a708-489b-9480-dfc7edf960ce',   ownerUuid ='02d591cc-b572-4e6e-8904-92bd0d8c3610'},所有者连接:   true,客户端版本:3.7.8 Jun 19,2017 8:20:07 PM   com.hazelcast.internal.partition.impl.PartitionStateManager   信息:[192.168.0.116]:5701 [dev] [3.7.8]初始化集群   分区表安排...

表示 - >新成员已连接到群集。这是对的吗?

但是当我要求群集上的成员数量时,它总是1

我哪里有错? 如何将新成员(HazelcastInstances)添加到群集?

2 个答案:

答案 0 :(得分:1)

正如您自己提到的,您将Hazelcast客户端连接到(单节点)群集。客户端只是一个客户端,而不是一个集群节点。想象它是连接到数据库的JDBC客户端。要扩展群集,您需要启动其他Hazelcast成员。

HazelcastInstance hz = Hazelcast.newHazelcastInstance(); // <- creates nodes

HazelcastInstance client = HazelcastClient.newHazelcastClient(); // <- creates a client

答案 1 :(得分:0)

它真的很难理解,但很多时候都是执行

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);

会有:

  • 首次执行 - 创建一个集群并向其添加一个节点
  • 每次下一次执行 - 将节点添加到现有集群