在 Oracle RAC 中,多个节点之间需要能够正常通信来保持集群的一致性。当一个节点发生故障或者发生脑裂,节点因网络等原因不能与其他节点互通时,很可能会在集群重新配置的过程中被驱逐出去。
RAC 的重新配置包含两个层面,一个是集群层面的,在发生脑裂的时候一般是基于编号做节点驱逐;另一个是实例层面的,这时候是根据节点获得的 RR 锁的权限判断的。在12.2之前,通过以上两种方式的重新配置,系统可以通过规则和计算自动决定哪个节点将会被驱逐出去。
而从12.2开始,引入了基于权重的节点驱逐。
在官网对该功能的介绍如下:
在 Oracle Clusterware 需要从集群中驱逐特定节点或一组节点的情况下,基于服务器权重的节点驱逐作为一种决胜机制,在这种情况下,所有节点代表驱逐的平等选择。 在这种情况下,基于服务器权重的节点驱逐机制有助于基于有关这些服务器上的负载的附加信息来识别要驱逐的节点或节点组。 存在两种主要机制,即系统固有的自动机制和基于用户输入的机制,以提供相应的指导。
使用基于服务器权重的节点驱逐允许在集群中的某些故障与业务需求之间调整哪个节点被逐出的选择,确保最重要的工作负载尽可能长时间保持活动,假设服务器之间的相等选择。
也就是说,12.2中的节点驱逐不是有系统自动决定的,而是可以根据业务关系,做更精细的控制。避免自动模式下的偏差对核心业务的影响。
特性介绍