当前位置: 首页 > 知识库问答 >
问题:

带Zookeeper的集群监视器

颜永怡
2023-03-14

我正在尝试用CuratorFramework创建一个基于动物园管理员的应用程序。该应用程序必须能够在更多的节点上以仲裁的方式运行。应用程序的每个实例都嵌入了动物园管理员服务器和客户端的实例。节点在仲裁中被成功地删除。每个节点都向 /workers/active/node1写入一个EPHEMERAL节点(“活动”是由领导者创建的PERSISTENT znode)。因为当客户端连接到动物园管理员服务器的实例时,动物园管理员非常缓慢地检测到节点的故障,并且短暂的节点在会话到期后消失localhost,所以我决定用连接字符串“NodeB,NodeC”将NodeA的客户端连接到集群。NodeB与连接字符串“NodeA,Node C”和NodeC与“NodeA,NodeB”。它导致,该群集在检测节点故障方面要快得多。我在每个节点上添加了监视器,以检测节点 /workers/active.上的节点事件。这个监视器有一个特殊的CuratorFramework客户端实例,连接到localhostzooManager服务器。我已经这样做了,因为回调只注册到客户端注册它的服务器上。问题是,这个解决方案不稳定,我不知道为什么。有时一切都正常工作,但在那之后,我在 /workers/active中松动了znode,但所有节点都在运行或 /workers/active中的状态是正确的,但NodeChildren回调即使在几秒钟前正常工作也不起作用...我能做错什么?我已经尝试了一切...

共有1个答案

茹建茗
2023-03-14

我找到了解决办法。

在我的例子中,使用CuratorFramework recipes中的PersistentEphemeral节点进行节点注册是最好的选择。

对于检测添加/删除节点的回调,最好使用CuratorFramework recipes中的PathChildrenCache,并对其进行预处理和回调

 类似资料:
  • 本文向大家介绍ZooKeeper 集群 ?相关面试题,主要包含被问及ZooKeeper 集群 ?时的应答技巧和注意事项,需要的朋友参考一下 为了保证高可用,最好是以集群形态来部署 ZooKeeper,这样只要集群中大部分机器是可用的(能够容忍一定的机器故障),那么 ZooKeeper 本身仍然是可用的。通常 3 台服务器就可以构成一个 ZooKeeper 集群了。ZooKeeper 官方提供的架构

  • 本文向大家介绍ZooKeeper 集群角色 ?相关面试题,主要包含被问及ZooKeeper 集群角色 ?时的应答技巧和注意事项,需要的朋友参考一下 但是,在 ZooKeeper 中没有选择传统的 Master/Slave 概念,而是引入了 Leader、Follower 和 Observer 三种角色。如下图所示 ZooKeeper 集群中的所有机器通过一个 Leader 选举过程 来选定一台称为

  • 集群运行起来后,你可以用 ceph 工具来监控,典型的监控包括检查 OSD 状态、监视器状态、归置组状态和元数据服务器状态。 交互模式 要在交互模式下运行 ceph ,不要带参数运行 ceph ,例如: ceph ceph> health ceph> status ceph> quorum_status ceph> mon_status 检查集群健康状况 启动集群后、读写数据前,先检查下集群的健

  • 集群监控的本质是一个聚合功能。 单台机器的监控指标难以反应整个集群的情况,我们需要把整个集群的机器(体现为某个HostGroup下的机器)综合起来看。比如所有机器的qps加和才是整个集群的qps,所有机器的request_fail数量 ÷ 所有机器的request_total数量=整个集群的请求失败率。 我们计算出集群的某个整体指标之后,也会有“查看该指标的历史趋势图” “为该指标配置报警” 这种

  • 本文向大家介绍ZooKeeper 集群中的服务器状态?相关面试题,主要包含被问及ZooKeeper 集群中的服务器状态?时的应答技巧和注意事项,需要的朋友参考一下 LOOKING :寻找 Leader。 LEADING :Leader 状态,对应的节点为 Leader。 FOLLOWING :Follower 状态,对应的节点为 Follower。 OBSERVING :Observer 状态,对

  • 图 2-2 在同一个znode上执行多次读 图2-3 利用通知来告知znode的变化 当使用通知时,有些事情需要注意。因为通知是一次性操作,有可能新的变化正好发生在接收通知和设置监视器之间(放心,你不会错过状态的变化)。让我们看一个例子来了解它是如果工作的。假设以下事件按顺序发生: 通知一个重要的保证是在任何发生在znode上的变化生效之前它会传递到客户端。如果一个客户端在一个znode上设置了监