关于故障检测和检测的八卦,我想了解一些东西。
我编写的多jvm测试似乎表明,已被检测为失败但仍可通过其他节点访问的成员将不会收到UnreachableMember(self)
事件,告诉他某些人将其检测为无法访问成员。
测试如下:
在3节点群集中,node2
检测到node3
不可达,node3
检测到node2
不可达。然后node1
收到node2
和node3
无法到达的信息(通过闲聊)。但是,node2
和node3
从未收到以下事实:它们本身被检测为不可访问。
在深入研究GossipSpec
之后,我发现即使被标记为Unreachable
,“错误地”不可达的成员也将达到收敛(请参见测试"not reach convergence when unreachable"
)。
这是为什么我没有看到UnreachableMember(self)
事件的原因吗?
我要达到的最终目标是检测到一个成员被错误地发现是不可到达的,因为由于两者之间的通道错误,该成员无法从该给定的成员到达。