首页 > 解决方案 > Hazelcast 就绪探针

问题描述

我知道 /hazelcast/health/ready 在端口 5701 上有一个可用的探针。

但是,我需要通过代码以编程方式执行此操作,因为我使用的是部署在 kubernetes 集群上的嵌入式 hazelcast,并且所有通信都应该通过主应用程序(这意味着 hazelcast 不能公开该端点,通过 localhost 使用 http 请求是不够的)。我尝试查看文档,但没有找到任何帮助。

我发现的唯一一件事就是使用instance.getServer().getPartitionService().isLocalMemberSafe(),但我没有证据表明这实际上与检查就绪探测相同。

任何帮助将不胜感激,谢谢!

标签: securitykuberneteshazelcast

解决方案


端点的确切逻辑是:/ready

node.isRunning() && node.getNodeExtension().isStartCompleted()

我猜你不能在代码中使用完全相同的,但相当好的近似值是:

  1. instance.getLifecycleService().isRunning()(唯一的区别是它不会等待准备加入其他成员)
  2. instance.getPartitionService().isClusterSafe()(不同的是它将等待所有 Hazelcast 迁移完成)

你可以使用它们中的任何一个。如果您想真正确定 Hazelcast 成员可以在准备好时接收流量,那么第二个选项是完全安全的。


推荐阅读