裂脑恢复 NCache 100% 正常运行时间

NCache 是一个非常快速且可扩展的内存中分布式缓存,适用于 .NET / .NET Core. 大多数时候, NCache 在关键任务应用程序的生产环境中运行。 因此, 高可用性 100% 的正常运行时间是非常重要的要求 NCache。 和, NCache 通过各种功能在这方面表现出色。

这些高可用性功能之一是裂脑检测和恢复,以防止任何停机。

什么是缓存集群中的裂脑?

NCache 创造一个 自愈动态缓存集群 由多个通过 TCP 相互通信的服务器组成。 所有缓存服务器在集群中相互连接,集群成员在运行时维护,不仅传播到所有缓存服务器,还传播到所有缓存客户端。

然而,像任何分布式系统一样, NCache 集群可能面临这样一种情况,即一个或多个缓存服务器与集群中的其余服务器断开连接,但两组服务器仍在继续运行。 这通常是由于网络故障或问题而发生的。

发生这种情况时,每组缓存服务器都将自己视为原始缓存集群的幸存服务器,并假设另一组缓存服务器已关闭(因此术语裂脑在医学术语中意味着左脑没有'不知道大脑的右侧)。 缓存客户端也可以以类似的方式拆分,或者它们可以根据原始集群成员继续与所有缓存服务器通信。

这显然不是健康和正常的情况,会导致错误 缓存操作 最重要的是数据完整性问题。 每个“拆分集群”现在都有自己的数据副本,由客户端独立更新。 而且,您最终会在没有任何同步的情况下更新相同数据的两个或多个副本。

如何检测裂脑?

NCache 能够自动检测何时发生裂脑。 在集群中的所有缓存服务器上维护集群成员。 因此,每当一个集群由于脑裂情况被分成两个或多个子集群时,每个子集群都认为它是幸存的集群并继续处理其数据。

但同时,它知道还有其他的缓存服务器以异常的方式离开了集群。 一种正常的方式是当缓存管理员使用 NCache 工具 从集群中删除缓存服务器。 因此,每个子集群都在不断尝试与“丢失的服务器”重新连接。 同时,每个子集群 记录事件 到 Windows 事件日志,表明它的一些原始成员已经离开。 所以,在脑裂的情况下, NCache 管理员几乎可以看到所有缓存服务器的“节点离开”事件。

只有当分裂的子集群之间的网络连接恢复时,他们才发现实际上发生了裂脑的事实。 直到此时,他们一直认为他们的一些成员已经离开了集群。

在意识到发生了脑裂时,每个子集群都会在 Windows 事件日志中记录事件,并且还可以通过以下方式通知缓存管理员 电子邮件通知 发生了脑裂。

裂脑自动恢复如何工作?

NCache 允许您从裂脑配置自动恢复。 如果你这样做,那么无论何时 NCache 检测到裂脑,它会自动从中恢复。 通过启用裂脑恢复 配置文件 通过添加 标签下 标签。 然后,您可以将启用标志更改为 true,并以秒为单位设置裂脑的检测间隔。

<cache-settings...>
  <split-brain-recovery enable="True" detection-interval="60"/>
</cache-settings>

当一个集群被分裂成两个或多个子集群,然后它们的网络连接恢复时,他们终于意识到发生了裂脑。 此时,如果用户配置了自动恢复,那么所有的子集群相互协商,确定哪个子集群应该成为“主集群”,其余的子集群加入这个“主集群”集群”通过丢弃它们的数据并表现得好像它们是加入现有集群的新节点一样。

用于确定哪个子集群应成为“主集群”的规则很简单。 它是成员节点数最多的子集群。 并且,如果多个子集群的成员节点数量相同,那么协调者IP地址最小的将成为“主集群”。 并且,子集群的其余部分加入它,最终结果是一个与原始集群大小相当的大集群。

接下来做什么?

联系我们

联系电话
©版权所有 Alachisoft 2002 - 版权所有。 NCache 是 Diyatech Corp. 的注册商标。