维护模式
NCache 支持维护模式 分区副本 拓扑,这是最常用的缓存拓扑。
引入维护模式是为了适应缓存服务器上的硬件/软件的修补或升级。 典型的升级工作流程包括一次停止一个缓存节点、升级服务器并重新启动其上的缓存。 此升级过程可避免应用程序停机。 然而,停止缓存节点会触发整个缓存集群内的状态转移,从而导致网络和CPU等资源的过度使用。
NCache 如果要暂时停止节点进行维护,维护模式会通过停止状态传输来解决此问题。 一旦节点专门停止进行维护,它就会通知正在运行的缓存集群在给定的超时时间内停止状态传输。 当集群处于维护模式时,已停止节点的客户端数据请求由其副本节点提供服务。 一旦停止的节点重新加入集群,它就会从其副本节点传输数据。
维护模式的工作原理
考虑一个由三个节点组成的集群,如下所示。 如果节点 3 被标记为维护,则状态传输将暂停特定超时,同时从节点 1 上的副本提供任何操作。在维护期间,维护节点的副本充当其活动分区。 这种情况无需任何客户端干预即可发生,并确保客户端操作顺利进行,即使节点因维护而停止也是如此。
超时和状态转移
超时时间由用户配置,作为状态转移线程的等待时间。 该线程通过重新加入节点或不加入来等待集群退出维护模式。 在这种情况下有两种结果:
节点 3 未在超时内重新加入集群:
在这种情况下,状态转移任务将在剩余节点(节点 1 和节点 2)之间启动,并且它们将恢复正常状态。
请注意,如果在这种情况下节点 2 突然离开集群,则可能会发生数据丢失,因为它的副本存在于节点 3 上。
节点 3 在超时内重新加入集群:
如果节点 3 在超时时间内重新加入,将启动状态转移以恢复集群的原始状态。 这种状态转移现在包括两个阶段:
- 节点 1(节点 3 的副本)--> 节点 3(节点 3 的活动分区)
- 节点 2(节点 2 的活动分区)--> 节点 3(节点 2 的副本)
宠物行为研究
将集群标记为需要维护至少需要 2 个节点。
如果集群已标记为维护,则无法通过以下方式在集群中添加或删除节点: NCache 管理中心或工具。
如果集群已标记为维护,则除已停止维护的节点外,其他节点均无法启动。 假设节点 3 已停止,节点 2 已标记为维护,您只能启动节点 2。
在停止/启动尚未停止维护的节点时,将抛出异常:“集群已在维护中”。
如果状态转移已通过节点关闭或启动进行,则无法将集群标记为进行维护。 将引发以下异常:“集群不可用于维护、状态传输或进程中的集群状态更改。”
用户可以通过状态转移计数器或者查看缓存日志文件来检查集群是否处于状态转移状态。
%NCHOME%/log-files
(Windows)或\opt\ncache\log-files
(Linux)。 “状态转移已完成”将记录在日志文件中。一旦集群被标记为维护,缓存日志中就会显示“集群被标记为节点维护:[IP]:[Port] for xx:xx:xx {HH:MM:SS)”的日志。
集群在以下情况下可以退出维护模式:
- 标记为维护的节点再次启动。
- 发生维护模式超时。
- 通过选择“退出维护模式”选项 NCache 管理中心.
- 一个节点突然离开集群。
一旦集群退出维护模式,就会启动状态转移。