Windows Cluster 投票权问题

news2024/11/15 15:33:37

在日常运维中,如果你的 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 故障转移群集遵循相同的设计,同时也引入了云见证。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/759075.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++ 重要知识点总结】STL字符串向量

字符串、向量和数组 这里讲的是 C中的处理,置于 C 中的字符串向量和数组,可以自己去复习。 1 命名空间的 using 声明 基本使用 //独立使用名字 using namespace::name; //声明空间 using namespace使用规则 头文件中不应包含 using 声明。因为会破坏包…

组合数学相关知识总结(适合复习用)

全排列 例子: n n n 个数取 m m m 个数有序排放 通项公式: A n m ( P n m ) n ∗ ( n − 1 ) ∗ ( n − 2 ) ∗ ⋅ ⋅ ⋅ ∗ ( n − m 1 ) n ! ( n − m ) ! A_n^m(P_n^m)n*(n-1)*(n-2)**(n-m1) \frac{n!}{(n-m)!} Anm​(Pnm​)n∗(n−1)∗(n−2)∗…

[QT编程系列-12]:QT快速学习 - 0 - 主要内容

第0章 主要内容 0.1 QT的主要内容 附录: Qt 是一个功能强大的应用程序开发框架,涵盖了广泛的知识点。以下是一些常见的 Qt 知识点: 基本概念和特性:了解 Qt 的基本概念,如信号和槽、事件处理、对象模型、元对象系统等…

Python基础合集 练习27 (turtle函数使用)

import turtle as t 画笔控制工具 t.penup() 表示画笔抬起 海龟在天上飞 不能直接形成图形 t.pendown() 画笔落下 海龟降下来 t.pensize(15) 也可以用 t.width() 画笔宽度 t.pencolor(“red”) 画笔颜色 为颜色字符串或rgb值 运动控制函数 控制行进方向、走曲线或…

二进制文件的Python写入

二进制文件的Python编写 这么基础的东西,必然用内置的就好 二进制文件的Python读写 重要提示 p.s. 1 >>> bHello World.decode() "Hello World" True >>> example import struct with open(binary_file.bin, wb) as file:data b…

【cfengDB】自己实现数据库第0节 ---整体介绍及事务管理层实现

LearnProj 内容管理 MySQL系统结构一条SQL执行流程 cfengDB整体结构事务管理TM模块TID文件规则定义文件读写 -- NIORandomAccessFile、FileChannel、ByteBuffer接口实现文件合法检测begin()commit(tid)rollback(tid)tid文件创建 本文作为数工底层的项目CfengDB开始篇章&#xf…

vue 升级3 +vite+antdv4

目录 一、安装包相关升级 二、vite.config 三、 入口文件修改 四、App.vue 及相关升级 五、路由 六、状态管理VUEX 一、安装包相关升级 升级pakage.json相关安装包 vue2插件vue3替换插件vue2使用vue3使用vue-ls vuex-persistedstate或vuex-persistVue.ls.get() Vue.ls.…

C++ 多线程学习总结

C 多线程 创建线程 thread jion与detach方式的区别 jion方式&#xff1a;必须等待创建并启动的子线程任务执行完毕&#xff0c;才会继续往下执行。 示例&#xff1a; #include <stdio.h> #include <unistd.h> #include <iostream> #include <string&g…

【企业架构实践】要避免的 7 个企业架构错误

颠覆性时代需要有弹性、前瞻性的企业架构。不要让错误的框架破坏您的组织实现当前和未来目标的能力。 企业架构为成功的业务 IT 计划奠定了基础。如果设计和实施得当&#xff0c;企业架构将帮助业务领导者实现他们的目标&#xff0c;使组织变得更具响应性、效率和竞争力。 不幸…

matlab使用教程(2)—数组索引、工作区与字符

1数组索引 MATLAB 中的每个变量都是一个可包含许多数字的数组。如果要访问数组的选定元素&#xff0c;请使用索引。 例如&#xff0c;假设有 44 矩阵 A &#xff1a; A [1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16] A 44 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 引…

python selenium.webdriver 爬取政策文件

文章目录 获取文章链接批量爬取政策文件应用selenium爬取文件信息数据处理导出为excel 获取文章链接 获取中央人民政府网站链接&#xff0c;进入国务院政策文件库&#xff0c;分为国务院文件和部门文件&#xff08;发改委、工信部、交通运输部、市场监督局、商务部等&#xff…

JavaScript 中 五种迭代数组的方法 every some map filter forEach

JavaScript 中 五种迭代数组的方法 every some map filter forEach 1.every 和 some2.filter (重点常用)3.map (灵活常用&#xff09;4.forEach (重点常用) ECMAScript 提供了 5个对数组的迭代方法 1.every() 2.some() 3.filter() 4.forEach() 5.map() 1.every 和 some every…

串联型PI和并联型PI调节器的比较

一、PI调节器的种类 图3-4 仿真波形变化情况&#xff08;串联型PI调节器&#xff0c;1500r/min&#xff09; 从图3-1到3-4比较可知&#xff0c;与并联型PI调节器相比&#xff0c;串联型PI调节器的超调量很小&#xff08;速度环&#xff09;&#xff0c;且动态过程时间短&…

从新的角度看待大模型微调

一、前言 一切要从最近大火的Lora(《LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS》&#xff09;说起&#xff0c;该文章在ICLR2022中提出。说的是利用低秩适配(low-rank adaptation)的方法&#xff0c;可以在使用大模型适配下游任务时只需要训练少量的参数即可达到一…

【SQL应知应会】表分区(二)• MySQL版

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习&#xff0c;有基础也有进阶&#xff0c;有MySQL也有Oracle 分区表 • MySQL版 前言一、分区表1.非分区表2.分区…

【运维】第03讲(下):Nginx 负载均衡常见架构及问题解析

Nginx 负载均衡常见问题 那么,Nginx 负载均衡的通常配置会出现哪些问题呢?这里列出几种比较常见的问题: 客户端 IP 地址获取问题域名携带问题负载均衡导致 session 丢失问题动态负载均衡问题真实的 Realserver 状态检测接下来,我们就重点讲解下 Nginx 作为负载均衡的这几个…

从代码角度戳一下springMVC的运行过程-spring16

1、首先页面需要输入地址&#xff1a; 2、画张图------ 这个地址先找Tomcat,而Tomcat帮你找你的工程 3、 4、每次都要过这个地方 这句servlet代码 具体流程是&#xff1a; SpringMVC的执行流程 这个Handler干嘛&#xff1f;负责对你的请求进行解析&#xff0c;知道我最终要找…

WAIC2023丨AI图像内容安全“黑科技”如何助力科技发展?

〇、前言 7月7日下午&#xff0c;2023世界人工智能大会&#xff08;WAIC&#xff09;“聚焦大模型时代AIGC新浪潮—可信AI”论坛在上海世博中心红厅举行。人工智能等技术前沿领域的著名专家与学者、投资人和领军创业者汇聚一堂&#xff0c;共同探索中国科技创新的驱动力量。 在…

latex3【排版】

多行公式排版&#xff1a;&#xff08;gather、align、split、cases&#xff09; \section{多行公式}%gather环境\begin{gather} abba \\ abcbaccbacab\end{gather}\begin{gather*} abba \\ abcbaccbacab\end{gather*}​\begin{gather} abba \\ 123 \notag …

贪吃蛇游戏制作

目录 前言 游戏设计 游戏三部曲 函数说明 优化设计 1 前言 终极目标&#xff1a;打造酷炫贪吃蛇游戏 制作环境: VS2015(支持VC2010,VS各个版本) easyx图形库(稍微改下VC6.0也可以实现) 2 游戏设计 贪吃蛇的制作思路就是蛇头带动蛇尾移动&#xff0c;主要…