Windows Server群集节点和资源监视

群集节点监视

如果把群集资源比作鸡蛋,那么群集节点就好比装鸡蛋的篮子,篮子的完整性决定了鸡蛋的安全。首先,群集节点需要判断自身是否存活,因此群集节点之间会定期通过心跳信号来评估所有节点的健康状况。群集的可用性目标取决于所提供服务的需求,不同服务等级的应用对故障恢复时间和健康检测的严格程度要求各不相同。同样,高可用性服务对节点故障的检测和恢复速度要求更高,而低可用性服务对故障恢复时间的容忍度较大。因此,Windows Server群集初始设置了两种不同严格程度的默认检测策略:

严格监控(Aggressive Monitoring):提供最快的检测和恢复策略,确保最高的可用性。群集对故障的容忍度较低,即使是短暂的故障也会避免,导致群集节点出现短暂网络故障时,群集会将该节点上的应用迁移到正常节点。宽松监控(Relaxed Monitoring):提供相对宽松的检查策略,群集对故障的容忍度较高,允许短暂的群集节点故障。严格监控和宽松监控是相对的,可以通过两个具体参数来衡量,一个是心跳频率(Delay),另一个是心跳失败阈值(Threshold)。

心跳间隔(Delay):定义节点之间发送心跳检测信号的时间间隔,单位为秒。心跳失败阈值(Threshold):定义在群集采取恢复行动之前能够容忍的心跳失败次数,比如心跳检测失败一次,群集不会立即采取恢复措施,而是继续发送下一个心跳检测信号,直到达到设定次数。Windows Server不同版本的群集默认心跳频率和心跳失败阈值汇总如下:

参数 Windows Server 2012 R2 Windows Server 2016 最大值

SameSubnetDelay1 秒1 秒2 秒SameSubnetThreshold5 次心跳10 次心跳120 次心跳CrossSubnetDelay1 秒1 秒4 秒CrossSubnetThreshold5 次心跳20 次心跳120 次心跳CrossSiteDelayN/A1 秒4 秒CrossSiteThresholdN/A20 次心跳120 次心跳

可以使用命令PS C:>Get-Cluster |fl *Subnet*查询跨子网和相同子网的心跳间隔和尝试阈值,命令输出的结果的心跳间隔单位为毫秒,结果如下示例所示。

| PS C:> Get-Cluster |fl subnet ||——————————-|| CrossSubnetDealy | 1000 || CrossSubnetThreshold | 20 || PlumbAllCrossSubnetRoutes | 0 || SameSubnetDelay | 1000 || SameSubnetThreshold | 10 |

调整心跳检测

严格的检查手段适用于一些高服务等级要求的应用,这些群集通常在一个高速连接的子网内。由于Windows Server群集支持节点跨子网和站点部署,在群集节点相隔数公里且连接不稳定的子网里,可以考虑稍微宽松的设置。同样,随着服务器硬件冗余程度的提高和操作系统的成熟,服务器节点的可用性已经非常可靠,整体故障几率大大降低,在这种情况下可以根据实际情况将检测策略调整得宽松一些。

可以使用如下PowerShell命令调整相同子网的心跳间隔,如下示例所示,将心跳间隔时间调整为2秒:

| PS C:> (get-cluster).SameSubnetDelay=2000 |

使用如下PowerShell命令调整相同子网的心跳失败阈值,如下示例所示,将心跳失败阈值设置为20次:

| PS C:> (get-cluster).SameSubnetThreshold=20 |

群集资源监视

除了要保证装鸡蛋的篮子的完整和可靠性,鸡蛋自身也会因各种因素变坏。因此,群集除了要监视群集节点的健康状态,还需要监控构成群集及应用的资源健康状况。群集通常包含若干资源和资源组,群集运行并处理不同的资源,有时候群集资源发生故障,虽然可以通过群集事件进行分析,但对于深入的问题,必须通过分析DUMP日志这个“黑匣子”才能找到根本原因。如果对群集资源故障了解不够深入,解决起来会无从下手,但作为维护人员,需要为群集资源故障分析留一道门,这道门通往更加深入的资源监视通道,这道监视通道将帮助我们获取深入故障分析报告,将故障分析报告提交给微软,让微软帮助定位问题所在。那么群集是如何检测群集资源并向系统报告事件的呢?接下来我们将带着这个疑问介绍群集的资源管理系统以及工作方式。

资源主机子系统

群集资源主机子系统(Resources Host Subsystem-RHS)负责监视群集资源,一个群集化的应用是以资源组形式存在的。群集可以运行多个资源,这些资源同时被群集监视系统监控,群集监视系统除了RHS,还有资源控制管理器(Resource Control Manager,简称为RCM),RCM和RHS协调工作以完成群集资源的监视和操作,如图1所示。RHS和RCM都是群集服务的一部分,主要职责是监视群集资源的状态。

Windows Server群集节点和资源监视

资源控制管理器

具体来说,RCM具有两个关键职责:一个是为群集服务执行故障转移机制和策略,另一个是建立和维护每个资源的依赖关系。以高可用文件服务器为例说明,群集文件服务器资源和磁盘以及访问名称、访问IP地址处于同一个资源组的依赖关系树,这个依赖关系树由RCM维护,如图2所示。RCM维持单个资源和资源组的在线、离线、失败、在线挂起、离线挂起等各种状态,并负责资源组的移动、故障转移的操作。

Windows Server群集节点和资源监视

造点AI 造点AI

夸克 · 造点AI

造点AI 325 查看详情 造点AI

资源监视器检测

为了保证群集应用正常工作,RHS时刻监视着资源情况并定期检查群集资源的健康状态。每个不同的资源的检查频率略有不同,检查频率由不同的群集资源DLL定义。RHS采用IsAlive和LooksAlive两个探测器进行周期性资源健康检测,LooksAlives检查比较粗糙,但检查频率较高,默认情况下每5秒钟进行一次检查,而IsAlive检查更为仔细,但检查频率较低,默认情况下每60秒检查一次。LooksAlives不停检查资源健康情况,一旦资源返回失败结果给LooksAlive,考虑到资源会出现“假死”状态,这时候,RHS会立即启用更全面的检查并调用IsAlive检查资源是否真正出现问题。

在检测到群集资源故障后,RHS便会等待资源响应,如果在既定时间内没有响应,则会按照策略执行恢复操作。由于RHS只能判断资源不响应但不能判断具体发生了什么故障,唯一的办法就是通过重启RHS进程尝试恢复资源。这个等待时间在群集资源的DeadLockTimeout属性里定义,等待一次为300000毫秒,也就是5分钟,可以使用PowerShell命令查看和修改DeadLockTimeout值。

使用以下PowerShell命令查看群集资源的RHS等待时间。下面以Hyper-V群集(配置了群集复制代理角色)为例,命令输出的结果如下。

| PS C:> Get-ClusterResource |ft Name, ResourceType, DeadlockTimeOut ||——————————————————————|| Name | ResourceType | DeadLockTimeout ||———————–|————————|—————–|| Cluster IP Address | IP Address | 300000 || Cluster Name | Network Name | 300000 || File Share Witness | File Share Witness | 300000 || Cluster-HRB | Network Name | 300000 || IP Address 192.168.1.5 | IP Address | 300000 || Hyper-V Replica Broker Cluster-HRB | Virtual Machine Replication Broker | 300000 |

要修改某个群集资源的DeadlockTimeout时间可以参考如下命令,这个命令修改类型为Network Name的DeadlockTimeout为10分钟。

| PS C:> (Get-ClusterResourceType “Network Name”).DeadlockTimeout = 1000000 |

虽然可以任意定义DeadlockTimeout时间,但不建议将这个值改成比5分钟更大,试想IsAlive和LookAlive检查时间往往在几百毫秒内完成,而DeadlockTimeout的时间为5分钟,已经大大超出了IsAlive和LookAlive检查时间。

除此以外,群集为了做到准确监控,默认启用了一层保护机制,当群集发送结束RHS指令时,不会立即重启RHS进程,而是等待4次DeadlockTimeout时间(20分钟),如果资源仍然没有响应才采取结束RHS进程的措施。如果RHS进程在等待4次(20分钟)资源仍未响应,群集判断服务器可能出现严重的问题,进而强制重启群集节点。

最重要的是,RHS产生Windows错误报告给群集系统并把错误写入DUMP文件,因为不同应用的群集涉及的群集资源也是千变万化的,一般出现严重的问题需要进一步的分析,笔者曾经遇到群集节点发生I/O Request Packet队列过多导致服务器使用Bugcheck自动重启的情况,最后通过分析DUMP发现了问题的根本原因,因此说,RHS打开了一扇通往深入分析群集的门。

资源监视器调整

群集将资源DLL加载到资源主机监控进程(RHS.exe),RHS进程是循环使用的。早期的设计里,默认情况下所有的资源在一个RHS进程里运行,这种情况的问题是如果一个资源故障,那么整个RHS进程和所有由这个RHS加载的资源都会出现故障。考虑到这种设计的不足,在后期Windows Server群集里做了改良,重要的资源都加载到各自独立的RHS进程里。但是仍然有可能不同的群集资源加载到了同一个RHS进程里,如果多个资源共享一个RHS进程,那么某个资源出现故障时,群集会重启RHS进程,这样其他加载到RHS进程的正常资源也会跟着重启。

为了避免这类问题发生,可以酌情为不同的资源分配独立的资源监视器RHS进程。在群集资源里,有一个属性代表着使用独立还是共享的RHS进程,这个属性是SeparateMonitor。这个属性定义为0或者1,0和1代表False和True,定义为0,代表群集资源使用共享的RHS进程,定义为1,代表群集资源使用独立的RHS进程。

可以使用Get-ClusterResource查看哪些资源使用独立的RHS进程监控。下面以两个SQL Server数据库群集为例,运行如下命令查看RHS监视器情况。

| PS C:> Get-ClusterResource | ft name, SeparateMonitor, MonitorProcessID ||————————————————————————-|| Name | SeparateMonitor | MonitorProcessID ||———————–|—————–|——————|| Cluster Disk 1 | False | 3144 || Cluster Disk 2 | False | 3144 || Cluster IP Address | False | 3020 || Cluster Name | False | 3020 || File Share Witness | False | 3020 || SQL IP Address 1(MSSQLSERVER) | False | 3020 || SQL IP Address 2(Test) | False | 3020 || SQL Network Name(MSSQLSERVER) | False | 3020 || SQL Network Name(Test) | False | 3020 || SQL Server | True | 3188 || SQL Server(Test) | True | 3224 || SQL Server Agent | True | 3272 || SQL Server Agent(Test) | True | 3308 |

可以使用Get-ClusterResource修改资源使用独立的RHS进程监控。下面以数据库群集磁盘资源为例,将群集磁盘Cluster Disk1设置为使用独立的监视器,运行如下命令设置Cluster Disk 1使用独立的RHS监视器。

| PS C:> (Get-ClusterResource “Cluster Disk 1”).SeparateMonitor = 1 |

再次运行如下命令查看群集资源监视器情况。

Name SeparateMonitor

Cluster Disk 1TrueCluster Disk 2FalseCluster IP AddressFalseCluster NameFalseFile Share WitnessFalseSQL IP Address 1(MSSQLSERVER)FalseSQL IP Address 2(Test)FalseSQL Network Name(MSSQLSERVER)FalseSQL Network Name(Test)FalseSQL ServerTrueSQL Server(Test)TrueSQL Server AgentTrueSQL Server Agent(Test)True

要注意的是,如果群集资源过多的情况下启用为每个资源配置独立的RHS进程,将会导致系统里同时运行多个RHS进程,因此会过多开销系统内存和CPU资源。而且群集已经可以把有问题的资源隔离加载到独立的RHS进程,从而避免有问题的资源影响到其他健康的资源,通常建议为群集资源保持默认设置。

以上就是Windows Server群集节点和资源监视的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/436299.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月7日 16:21:32
下一篇 2025年11月7日 16:23:01

相关推荐

  • CSS元素设置em和transition后,为何载入页面无放大效果?

    css元素设置em和transition后,为何载入无放大效果 很多开发者在设置了em和transition后,却发现元素载入页面时无放大效果。本文将解答这一问题。 原问题:在视频演示中,将元素设置如下,载入页面会有放大效果。然而,在个人尝试中,并未出现该效果。这是由于macos和windows系统…

    2025年12月24日
    200
  • 如何模拟Windows 10 设置界面中的鼠标悬浮放大效果?

    win10设置界面的鼠标移动显示周边的样式(探照灯效果)的实现方式 在windows设置界面的鼠标悬浮效果中,光标周围会显示一个放大区域。在前端开发中,可以通过多种方式实现类似的效果。 使用css 使用css的transform和box-shadow属性。通过将transform: scale(1.…

    2025年12月24日
    200
  • 如何用HTML/JS实现Windows 10设置界面鼠标移动探照灯效果?

    Win10设置界面中的鼠标移动探照灯效果实现指南 想要在前端开发中实现类似于Windows 10设置界面的鼠标移动探照灯效果,有两种解决方案:CSS 和 HTML/JS 组合。 CSS 实现 不幸的是,仅使用CSS无法完全实现该效果。 立即学习“前端免费学习笔记(深入)”; HTML/JS 实现 要…

    2025年12月24日
    000
  • 如何用前端实现 Windows 10 设置界面的鼠标移动探照灯效果?

    如何在前端实现 Windows 10 设置界面中的鼠标移动探照灯效果 想要在前端开发中实现 Windows 10 设置界面中类似的鼠标移动探照灯效果,可以通过以下途径: CSS 解决方案 DEMO 1: Windows 10 网格悬停效果:https://codepen.io/tr4553r7/pe…

    2025年12月24日
    000
  • 如何用前端技术实现Windows 10 设置界面鼠标移动时的探照灯效果?

    探索在前端中实现 Windows 10 设置界面鼠标移动时的探照灯效果 在前端开发中,鼠标悬停在元素上时需要呈现类似于 Windows 10 设置界面所展示的探照灯效果,这其中涉及到了元素外围显示光圈效果的技术实现。 CSS 实现 虽然 CSS 无法直接实现探照灯效果,但可以通过以下技巧营造出类似效…

    2025年12月24日
    000
  • 苹果浏览器网页背景图色差问题:如何解决背景图不一致?

    网页背景图在苹果浏览器上出现色差 一位用户在使用苹果浏览器访问网页时遇到一个问题,网页上方的背景图比底部的背景图明显更亮。 这个问题的原因很可能是背景图没有正确配置 background-size 属性。在 windows 浏览器中,背景图可能可以自动填满整个容器,但在苹果浏览器中可能需要显式设置 …

    2025年12月24日
    400
  • 苹果浏览器网页背景图像为何色差?

    网页背景图像在苹果浏览器的色差问题 在不同浏览器中,网站的背景图像有时会出现色差。例如,在 Windows 浏览器中显示正常的上层背景图,在苹果浏览器中却比下层背景图更亮。 问题原因 出现此问题的原因可能是背景图像未正确设置 background-size 属性。 解决方案 为确保背景图像在不同浏览…

    2025年12月24日
    500
  • 苹果电脑浏览器背景图亮度差异:为什么网页上下部背景图色差明显?

    背景图在苹果电脑浏览器上亮度差异 问题描述: 在网页设计中,希望上部元素的背景图与页面底部的背景图完全对齐。而在 Windows 中使用浏览器时,该效果可以正常实现。然而,在苹果电脑的浏览器中却出现了明显的色差。 原因分析: 如果您已经排除屏幕分辨率差异的可能性,那么很可能是背景图的 backgro…

    2025年12月24日
    000
  • Bear 博客上的浅色/深色模式分步指南

    我最近使用偏好颜色方案媒体功能与 light-dark() 颜色函数相结合,在我的 bear 博客上实现了亮/暗模式切换。 我是这样做的。 第 1 步:设置 css css 在过去几年中获得了一些很酷的新功能,包括 light-dark() 颜色函数。此功能可让您为任何元素指定两种颜色 &#8211…

    2025年12月24日
    100
  • 如何在 Web 开发中检测浏览器中的操作系统暗模式?

    检测浏览器中的操作系统暗模式 在 web 开发中,用户界面适应操作系统(os)的暗模式设置变得越来越重要。本文将重点介绍检测浏览器中 os 暗模式的方法,从而使网站能够针对不同模式调整其设计。 w3c media queries level 5 最新的 web 标准引入了 prefers-color…

    2025年12月24日
    000
  • 如何使用 CSS 检测操作系统是否处于暗模式?

    如何在浏览器中检测操作系统是否处于暗模式? 新发布的 os x 暗模式提供了在 mac 电脑上使用更具沉浸感的用户界面,但我们很多人都想知道如何在浏览器中检测这种设置。 新标准 检测操作系统暗模式的解决方案出现在 w3c media queries level 5 中的最新标准中: 立即学习“前端免…

    2025年12月24日
    000
  • 如何检测浏览器环境中的操作系统暗模式?

    浏览器环境中的操作系统暗模式检测 在如今科技的海洋中,越来越多的设备和软件支持暗模式,以减少对眼睛的刺激并营造更舒适的视觉体验。然而,在浏览器环境中检测操作系统是否处于暗模式却是一个令人好奇的问题。 检测暗模式的标准 要检测操作系统在浏览器中是否处于暗模式,web 开发人员可以使用 w3c 的媒体查…

    2025年12月24日
    200
  • 浏览器中如何检测操作系统的暗模式设置?

    浏览器中的操作系统暗模式检测 近年来,随着用户对夜间浏览体验的偏好不断提高,操作系统已开始引入暗模式功能。作为一名 web 开发人员,您可能想知道如何检测浏览器中操作系统的暗模式状态,以相应地调整您网站的设计。 新 media queries 水平 w3c 的 media queries level…

    2025年12月24日
    000
  • 如何在 VS Code 中解决折叠代码复制问题?

    解决 VS Code 折叠代码复制问题 在 VS Code 中使用折叠功能可以帮助组织长代码,但使用复制功能时,可能会遇到只复制可见部分的问题。以下是如何解决此问题: 当代码被折叠时,可以使用以下简单操作复制整个折叠代码: 按下 Ctrl + C (Windows/Linux) 或 Cmd + C …

    2025年12月24日
    000
  • 我在学习编程的第一周学到的工具

    作为一个刚刚完成中学教育的女孩和一个精通技术并热衷于解决问题的人,几周前我开始了我的编程之旅。我的名字是OKESANJO FATHIA OPEYEMI。我很高兴能分享我在编码世界中的经验和发现。拥有计算机科学背景的我一直对编程提供的无限可能性着迷。在这篇文章中,我将反思我在学习编程的第一周中获得的关…

    2025年12月24日
    000
  • CSS 中的网格和 Flex 布局

    介绍 flexbox 和网格布局都是强大的布局。 弹性盒: flexbox 是一种一维布局模型,最适合在单行或单列中排列元素。当元素的大小或容器的大小未知时,flexbox 特别有用。它非常适合水平和垂直对齐项目,并且对于创建导航栏、侧边栏或工具栏非常有用。 css 网格: 网格是一种二维布局模型,…

    2025年12月24日
    000
  • css怎么设置超出显示省略号

    css设置超出显示省略号的方法:1、使用“overflow:hidden;”语句把超出的部分隐藏起来;2、使用“text-overflow:ellipsis;”语句在文本溢出包含元素时,显示省略符号来代表被隐藏的部分。 本教程操作环境:windows7系统、CSS3&&HTML5版、…

    2025年12月24日
    000
  • 如何使用纯CSS实现Windows启动界面的动画效果

    本篇文章给大家带来的内容是关于如何使用纯css实现windows启动界面的动画效果 ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 效果预览 源代码下载 https://github.com/comehope/front-end-daily-challenges 代码解读 定义 d…

    2025年12月24日
    000
  • 360怎么装html5_360浏览器默认支持HTML5无需额外安装设置【说明】

    HTML5是网页标准,非独立软件,360浏览器7.0+已原生支持;需确认内核为Blink/Chromium、关闭兼容模式、禁用强制兼容策略、重置Flash插件、清除HTML5本地存储、检查系统Media Foundation组件。 如果您在使用360浏览器时发现HTML5网页功能异常(如视频无法播放…

    2025年12月23日
    000
  • html5怎么设置月份_HTML5用input type=”month”让用户选择年月月份【设置】

    HTML5的input type=”month”提供原生年月选择器,格式为“YYYY-MM”,支持value默认值、min/max范围限制、name表单提交,并需JavaScript降级兼容旧浏览器。 如果您希望在网页中提供一个简洁的年月选择控件,HTML5 的 input …

    2025年12月23日
    200

发表回复

登录后才能评论
关注微信