通过 bash 检查 Hazelcast 集群是否准备好接受请求

Check whether Hazelcast cluster is ready for requests via bash

我正在使用 Docker with Hazelcast 3.6。 我启动 Hazelcast 实例并希望仅在集群准备好接受请求后启动我的应用程序。

我在 documentation 中了解到可以通过 curl 访问 Hazelcast,但它对我不起作用。 当尝试 POST 到已启动并准备就绪的 Hazelcast 实例时,我得到 (52) Empty reply from server

有没有办法检查Hazelcast是否准备好? 例如,对于 Cassandra I 运行 wget --spider 0.0.0.0:9042 对于 RabbitMQ,这个非常有用 netcat -z -w 2 rabbit 5672。 Hazelcast 有类似的解决方案吗?

您可以使用REST API for cluster management,这在文档中有描述。 另一个提示,您可以使用 bin 目录中的 cluster.sh 脚本与管理端点进行交互。

您正在尝试点击 REST client API(用于访问地图和队列),默认情况下它是禁用的。

如果您有任何问题,请告诉我。

谢谢

(代表OP发帖).

注意使用public时不要忘记隐藏组名和密码CIand/or 代码存储库,如果您不需要所有人都能看到此数据。

  • 首先我必须在配置中添加集群组,请参阅文档中的 Creating Cluster Groups
  • 然后使用 curl --data "${GROUPNAME}&${PASSWORD}" http://${ADDRESS}:${PORT}/hazelcast/rest/management/cluster/state 等待集群准备就绪。

例如,在我的例子中,当 Hazelcast 使用组名 app1 和密码 app1-pass 监听 0.0.0.0:5701 时,它看起来如下

curl --data "app1&app1-pass" \
     http://0.0.0.0:5701/hazelcast/rest/management/cluster/state

备注

据我了解,它不会显示所有节点是否准备就绪,因此我需要单独检查它们。 当我将 hazelcast.initial.min.cluster.size 设置为 2 时,主节点显示消息 HazelcastInstance waiting for cluster size of 2curl returns {"status":"success","state":"active"}.