我在使用Neo4j 3.1.2。我正在尝试自动监视因果集群以获得适当的冗余,最好是通过http接口,dbms.cluster.overview是最明显的调用。但是当它们死亡时,服务器会从这个列表中删除而不考虑它们如何退出。 The operations manual说清洁停工和不干净停工之间存在差异。如何确定服务器是干净利落还是不干净?有没有一个程序来清理一个永远不会回来的不洁的失败?
总的来说,我想知道Neo4j正在检查达成共识的核心服务器的数量。我没有看到找到该号码的API。这样我就可以知道我们有多接近失败。
答案 0 :(得分:1)
在第一次编队时引导群集时使用expected_core_cluster大小设置。如果没有配置的核心数量,集群将不会形成,这通常应配置为完整和固定的数量。
此设置也可用作最低共识组大小。共识组的规模(核心机器成功投入木筏)可以动态缩小和增长,但在这个数字的下端有界。
几乎在所有情况下,用户都希望单独保留此设置。如果您有5台机器,那么您可以在故障情况下存活至少3台,例如有2名死亡成员。剩下的三个仍然可以成功投票给另一个替换成员,共计6个(其中2个仍然死亡)然后在此之后,其中一个多余的死亡成员将立即自动投票(所以你剩下5个共识组中的成员,其中1人目前已死亡)。在操作上,您现在可以通过引入另一个更换或修复死机来启动最后一台机器。
如果真的要将expected_core_cluster大小降低到3,那么今天你必须更新设置并进行滚动重启。这被认为是一种不常见的情况。因果聚类优化操作以进行修复/替换。
干净和不干净关闭之间的唯一区别是,前者导致更快发现核心成员消失,因为这是基于超时。