我正在运行一个小型系统,它依赖于Hazelcast在多播模式下进行群集,分布式计算和消息传递(下载中提供标准配置)。我有许多服务器模块作为“核心”Hazelcast实例运行,Java Swing应用程序作为Hazelcast“Native Client”实现。这一切都很好,我现在想要在生产中调试系统,因此需要运行两个独立的集群(dev + prod),这就是我遇到问题的地方。
根据documentation 您需要的是为两个群集使用单独的群组名称+密码,我得到两个群集应该自动排序的印象!这似乎适用于服务器模块,但是当我尝试将“客户端”实例连接到prod环境时,我可以从prod中的一个服务器模块的日志中看到客户端似乎成功连接:
INFO: [prod] received auth from Connection [/192.168.0.2:55863 -> null] live=true,
client=true, type=JAVA_CLIENT, this group name:prod, auth group name:prod,
successfully authenticated
但是,客户永远不会成为prod的成员。相反,我发现客户已成为开发环境的成员,即使对生产进行了身份验证!
两个星团的随意混合对我来说显然是一个巨大的问题。有没有人知道我做错了什么或者我是否可以做任何配置更改来解决问题?
答案 0 :(得分:5)
当客户端连接到群集时,它永远不会成为群集的成员。
所以我怀疑你的客户端确实已连接到prod,但是在你的代码中你有某些东西像Hazelcat.getMap()这导致在该JVM中启动一个成员,因为该成员将使用的默认配置将与dev相同,这个新成员将加入您的开发群集。
所以实际上你有一个客户端,它连接到prod和另一个连接到dev集群的成员。
尝试通过客户端放置一些内容并查看这些条目出现在哪个群集中?
我有意义吗?