Windows Cluster 投票权问题

2023-11-14

在日常运维中,如果你的 Windows Cluster 需要升级、重启、意外宕机、网络中断等,你知道该怎么操作才能保证集群的可用性吗?按什么样的顺序怎样关闭或启动集群节点吗?怎么快速恢复你的集群呢?

接下来,我们就以实践操作来解决这几个疑问。首先要知道,Windows Server 2012 R2 提供了动态仲裁功能,以保证集群(投票权)为奇数节点。现在,假设一个Windows Server 故障转移集群 (WSFC) 有三个节点A、B、C(A为当前主节点),我们根据不同的见证(即仲裁)类型做以下测试。

多数节点

  1. 关闭节点A,节点上的所有资源都故障转移到节点B,由于动态仲裁作用投票为0。(数字为投票权)

  2. 关闭节点B,节点上的所有资源都故障转移到节点C。

  3. 关闭节点C,所有节点都已关闭,集群即关闭,无人可访问。

图片

此时,当我们启动节点A时,发现集群报错并未恢复。当我们继续启动节点B时,集群仍然报错并未恢复。两个节点都在尝试连接到节点 C,即使我们有两个节点(A 和 B)并且配置为 Node Majority,集群也没有恢复。最后我们启动节点 C,集群则恢复,集群 Paxos Tag 的Epoch则发生改变并记录下来(集群算法请看上一篇文章)。

为什么会发生这种情况呢?

当一个节点A关闭时,它在集群注册表中的投票变为 0。当一个节点去启动集群服务时,它会检查它的投票。如果为0,则只会加入一个Cluster。如果为1,则首先尝试加入一个Cluster,如果无法连接到该Cluster加入,则自己恢复Cluster。当然,如果节点C永远无法恢复,启动节点A或B集群服务时,使用 ForceQuorum (FQ)开关来强制恢复集群。恢复后,其他节点都可以不考虑顺序加入了。

net start clussvc /forcequorum

磁盘见证

与上面的测试一样,按顺序关闭节点A、B、C,由于动态仲裁的作用,集群会保留为奇数投票节点。结果如下图。

图片

此时首先恢复节点B或C,集群都能正常恢复,因为磁盘仲裁存储有集群配置信息。你可以通过命令查看节点投票权 (Get-Cluster).WitnessDynamicWeight,因为它有投票权,所以集群恢复。虽然磁盘存储集群数据,但是节点A无投票权,所以无法恢复集群。

文件共享见证

与上面的测试一样,按顺序关闭节点A、B、C,由于动态仲裁的作用,集群会保留为奇数投票节点。结果如下图。

图片

在之前的磁盘见证情况下,我们可以启动节点B、C并恢复集群,这是因为节点有投票权,并且磁盘存储着群集数据库副本。但文件共享见证不同,它不持有集群数据库的副本。当剩下C节点的时候,C节点的集群数据是最新的。即使B、C、文件共享见证都有投票权,但节点A和B都没有新集群数据,这是因为文件共享见证不存储集群数据。若启动了节点A和B,集群都是无法正常恢复的。正常恢复集群只能先启动节点C(或者直到启动到节点C)。当然,启动节点A或B时,也可以使用 ForceQuorum (FQ) 开关来强制恢复集群。若使用ForceQuorum启动集群,当节点C启动时,发现已有了集群,则加入到集群中。

当我们在集群中启动一个节点以恢复集群时,节点将比较它的 paxos 与见证磁盘上的 paxos。如果节点 paxos 早于在磁盘见证上的数据,则它将最新副本下载到节点并使用它。如果本地节点较晚,它会将集群数据上传到磁盘见证。所以,了解了这些启动问题,当集群出现意外的时候,你就可以知道如何处理以快速恢复了。这对于安装有 SQL Server 高可用的集群非常重要。

附加说明:Windows Server 2016 故障转移群集遵循相同的设计,同时也引入了云见证。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows Cluster 投票权问题 的相关文章

随机推荐

  • 输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符,或者填充字符间包含非法字符。

    消息 6522 级别 16 状态 2 第 2 行 在执行用户定义例程或聚合 AESDecrypt 期间出现 NET Framework 错误 System FormatException 输入的不是有效的 Base 64 字符串 因为它包含
  • 多方安全计算-隐私信息检索(PIR)

    隐私信息检索 Private Information Retrieval PIR 技术是由Chor B等提出解决保护用户查询隐私的方案 主要目的是 保证查询用户在向服务器上的数据库提交查询请求 在用户查询隐私信息不被泄漏的条件下完成查询 即
  • Java之缓冲流、转换流、节点流、包装流

    文章目录 一 BufferedRead 带有缓冲的字符输入流 1 节点流和包装流 2 readline 读一行字符 二 转换流 InputStreamReader与OutputStreamWriter 三 BufferedWrite 带有缓
  • 编译原理实验二:Bison

    编译原理实验二 Bison 实验要求 1 了解Bision基础知识 如何将文法产生式转换为Bison语句 2 阅读 src common SyntaxTree c 对应头文件 include SyntaxTree h 理解分析树生成的过程
  • 你对C++头文件了解多少?——盘点C++的常用头文件

    相信大家在编写C C 程序时 最必不可少的部分之一就是头文件了 然而 由于不同的函数所对应的头文件各不相同 就导致一部分人 尤其是我 写代码的时候常常遇到忘记所需头文件的窘境 为了解决这个问题 今天我特意搜集了C 中常用的头文件及其包含的库
  • FICO F.27 Customer statement 打印

    需求 定制化打印 替换标准的F 27打印 类似于采购订单的打印 但是略有不同 查阅资料之后步骤如下 T code F 27 is SAP standard program to produce customer vendor corresp
  • 数据结构简述,时间、空间复杂度,学习网站推荐

    目录 IT 学习路线 相关坚韧大厚书 相关有趣 耐看书或视频 数据结构与算法学习网站推荐 刷题 时间 空间复杂度 数据结构简述 基本概念 数据结构与算法简述和CS综述整理 本文非基础的教程 本文会列出大量学习和参考网站 老惯例 一个文章是一
  • 2022 PostgreSQL 数据库生态大会:拓数派资深工程师 王淏舟将发表主题演讲

    由中国开源软件推进联盟PostgreSQL分会 中科院软件所 CSDN联合举办的 中国PostgreSQL数据库生态大会 将于2月17 19日召开 本届大会以 协同共进 为主题 邀请专家学者 厂商和用户代表 就PostgreSQL在行业和区
  • Vue3开发教程(一、学习Vue前需要了解的内容)

    前言 本文是笔者学习vue前端技术过程的总结 其中包括vue开发需要了解的相关技术如 node ES6 TypeScript vite ElementUI 以vue作为主线来介绍相关技术 最后通过一个典型的前端应用来体会vue的开发 希望笔
  • 最长子序列 JAVA 2019国赛试题F

    试题 F 最长子序列 时间限制 1 0s 内存限制 512 0MB 本题总分 15 分 问题描述 我们称一个字符串 S 包含字符串 T 是指 T 是 S 的一个子序列 即可以从 字符串 S 中抽出若干个字符 它们按原来的顺序组合成一个新的字
  • [SQL]yyyymmdd类型与yyyy-mm-dd日期类型的相互转换

    法1 from unixtime unix timestamp 20171205转成2017 12 05 select from unixtime unix timestamp 20171205 yyyymmdd yyyy mm dd fr
  • 树结构,二叉树,hash树

    目录 1 树的概念 2 二叉树基本操作 3 hash树 1 树的概念 1 树的特性 1 一棵树中的任意两个结点有且仅有唯一的一条路径连通 2 一棵树如果有n个结点 则它一定有n 1条边 3 在一棵树中加一条边将会构成一个回路 2 二叉树 1
  • hibernate注解反向生成表结构

    直接上源码 package com gxy pojo model import java util Date import javax persistence Column import javax persistence Entity i
  • EVE部署

    EVE NG 镜像导入 IOL 镜像位置 opt unetlab addons iol bin qemu 镜像位置 opt unetlab addons qemu 设备图标位置 opt unetlab html images icons E
  • Mac :谷歌浏览器 NET::ERR_CERT_INVALID 此证书已被撤消。网络错误和攻击行为通常是暂时的,因此,此网页稍后可能会恢复正常

    1 美图 2 背景 今天突然访问一个https 1x 5x x xx 网站 然后无法访问 谷歌浏览器访问地址报错如下 XXX 通常会使用加密技术来保护您的信息 Google Chrome 此次尝试连接到 XXX 时 此网站发回了异常的错误凭
  • 安卓使用SQLite数据库

    目录 理论 SQLite构成 SQLite的整体结构图 SQLite数据类型 创建安卓应用 基于Empty Activity模板创建安卓应用CreateDeleteDB 将背景图片拷贝到drawable目录 打开字符串资源文件 string
  • 利用DSP实现ADC采集数据以及DAC输出

    1 解决方案 必要的公式 文字等 在课外实验中 我们选择利用ADC对输入的信号进行采集 然后利用串口控制DAC的输出 实现通过串口控制DAC输出采集到的波形的功能 在本实验中 是通过判断串口发送的数据来实现对相应DAC的控制的 为了方便 我
  • 有些运行符不能重载为友元函数,它们是:=,(),[]和->。

    原因 有人说是因为 C 规定赋值运算符 只能重载为类的非静态成员函数 而不可以重载为类的友元函数 不能重载为类的静态成员应该比较容易理解 因为静态成员函数是属于整个类的 不是属于某个对象的 它只能去操作类静态数据成员 而赋值运算符 是基于对
  • Calendar类获取月份时月份加一而星期数减一

    Java中Calendar MONTH返回的数值其实是当前月距离第一个月有多少个月份的数值 JANUARY在Java中返回 0 所以我们需要 1 Java 中Calendar DAY OF WEEK中返回的是一周中的第几天 所以他会受到 第
  • Windows Cluster 投票权问题

    在日常运维中 如果你的 Windows Cluster 需要升级 重启 意外宕机 网络中断等 你知道该怎么操作才能保证集群的可用性吗 按什么样的顺序怎样关闭或启动集群节点吗 怎么快速恢复你的集群呢 接下来 我们就以实践操作来解决这几个疑问