我已经build立了两台运行相同服务的服务器(节点)的NLB。 过滤是单个主机,因为我不希望它们同时运行,因为高速caching数据库中有数据,所以每当有新数据或故障转移时,我都需要重新启动第二个服务来更新它。
我如何知道群集中的哪个服务器正在应答? (我不介意这是使用命令,脚本,C#还是其他什么,我还没有决定使用什么:我只是想要什么是最简单的。)
我正在使用SQL Server 2008 R2。
其次(也不太重要):为此目的是否有一个好的监测工具? 我正在调查Spiceworks,Zabbix或Nagios。
不知道你是如何“调用集群”,我们不能回答这个问题。
如果您正在使用可以获得本地shell的东西,则可以请求系统variablesCOMPUTERNAME。 然后,您可以这样做,您可以configuration您的监控解决scheme以相同的方式连接并发出相同的查询。
有些协议在连接时会返回一个名称(通常是可configuration的,通常默认情况下是主机名),就像SMTP一样。 所以如果这是你所做的自定义连接,也许你可以在协议本身中join一些诊断。
我的观点依然存在 – 如果你使用NLB来对SQL进行集群化,那么你做错了。 如果您使用的是实际的Windows群集服务,则可以确保特定服务始终在主动节点上运行,而不是在被动节点上运行,因此了解哪个主机不应该成为客户需要问的问题。