Fed*_*jdu 4 sql-server clustering
我在stackoverflow上提出了这个问题,但被要求在这里重新发布,所以这里是:
我有一个在集群环境中设置的数据库。这将是两台共享存储的服务器。ServerA 是我设置数据库的服务器,ServerB 是 SQLServer 集群中的一个节点。
如果我强行关闭 ServerB,一切都会按预期工作,但如果我关闭 ServerA,则实例不再可用。
Windows 集群仍处于活动状态(我可以通过共享名称远程桌面到集群上),但 SQL 不可见,并且集群管理器将资源报告为离线。
这有点违背了集群的目的,我需要解决它,但这并不是我的专业领域,我不知道从哪里开始。
提前致谢。
编辑(评论中询问的其他信息):安装了 Windows 我为 DTC 和 SQL Server 添加了集群功能。访问方面,机器的IP地址为*.101为主;*.102 为第二台服务器;*.99 用于接入点 SQL 服务器实例,*.111 用于集群管理器。我可以从两台机器访问 99 但不能从任何一台访问 101 或 102 的数据库。
编辑 #2 - 我尝试增加故障转移阈值(为了测试目的,在 24 小时内增加到 50),但是在切断 server1 的网络后服务器仍然没有唤醒。群集在大约 20 秒左右恢复,但 SQL Server 保持关闭。在日志中,我有几个错误和一条可能导致失败的严重级别消息。讯息是:
由于仲裁丢失,群集服务正在关闭。这可能是由于集群中某些或所有节点之间的网络连接丢失,或者见证磁盘的故障转移。运行验证配置向导以检查您的网络配置。如果这种情况仍然存在,请检查与网络适配器相关的硬件或软件错误。还要检查节点所连接的任何其他网络组件(例如集线器、交换机或网桥)中的故障。
不查看集群日志或任何其他形式的错误报告,我所能做的就是在这里猜测。
但我最初的想法是您可能已经达到了故障转移阈值。默认情况下,这将设置为在 6 小时内最多发生n - 1 次故障(其中n是节点数)。是的,那是一段很长的时间,尤其是在故障不是很多(仅等于一次故障)的 2 节点集群中。设置此阈值是为了防止集群组的乒乓效应。
在生产中,这可能是一件好事。但是在测试/开发/非生产中,遇到这个最初令人困惑的问题是很常见的,因为您可能会尝试连续故障转移。值得注意的是,这些参数是 100% 可配置的。您需要做的就是进入集群组的属性,在“故障转移”选项卡中,您可以选择更改这两个参数(指定时间段内的最大故障数和时间段(小时))。这是它的外观就像在故障转移群集管理器中一样:
注意:在我的屏幕截图中,阈值设置为 2 因为我有一个 3-node cluster。
同样,这可以通过 PowerShell 看到(访问 FailoverClusters 模块)。
# you may need to set your cluster group name to whatever it is named
# in your environment
#
Get-ClusterGroup -Name "SQL Server (MSSQLSERVER)" |
Select-Object Name, FailoverThreshold, FailoverPeriod
Run Code Online (Sandbox Code Playgroud)