我其实是个程序员,但最近也参与了一些系统管理工作,因为我认为实际的管理员可能对他们的工作不太感兴趣。我相信他们正在使用 WhatsupGold 进行监控,尽管我也听说过 Tivoli。
无论如何,我们有一个 Windows Server 2008 环境(大惊喜),其中有 3 个 Web 服务器,它们位于 NLB 群集中。我们正在等待真正的负载平衡器,但至少要与 NLB 打交道半年或更长时间。
在这些 Web 服务器上,我们有 5 个以上的 ASP.NET Web 应用程序,每个应用程序上都有一个页面,如果一切正常,则显示 OK。问题是 NLB 不知道应用程序池是否已关闭,并乐意以那种方式发送数据,而检查该页面的监控工具最终可能会到达另一台显示正常状态的服务器。
这当然是不可接受的(即使他们似乎根本不关心)所以我想知道经验丰富的管理员将如何设置它,以便我可以直接解决特定服务器上的特定 Web 应用程序?
谢谢。
答案1
可能有几种方法可以做到这一点。负载平衡器有一个面向公众的 IP,我们将其称为 A,您的每台服务器都有一个 IP,我们将其称为 B、C 和 D。通常,最终用户指向 A,NLB 将请求转发到 B、C 或 D 并返回结果。您可以直接监控 B、C 和 D 以查找 OK 消息,假设您的网络配置为允许您直接访问 B、C 和 D。
Xymon (以前称为 Hobbit) 或 Nagios 是开源监控工具,可以监控 B、C 或 D 的问题并向您发出警报。
答案2
使用外部监视器的问题在于,您不知道通过访问集群 IP 会到达哪个集群节点。访问单个主机的 IP 并不总是与通过集群相同。例如,如果您运行 5 个网站,那就是 5 个集群 IP,而只有 1 个主机 IP。更不用说绑定到多个 IP 有时会导致某些应用程序出现问题,如果您也使用主机头,那就祝你好运了。
我和你的想法完全一样。我们最终会在每个节点上编写一个脚本来执行自己的健康检查(据我所知,从集群节点到集群的流量始终由本地主机处理)。这将是一项计划任务,如果检查失败,它可以调用 NLB 命令行工具将该节点从集群中删除。
Nagos 还可以通过普通主机管理 IP(使用 nrpe/NSClient++)检查此脚本,以告诉我们哪些节点已关闭,同时仍将集群视为启动状态。
这是非常基本的东西,我很困惑为什么微软不把它包含在他们的产品中。相比之下,故障转移群集可以检查各种资源。哦,好吧……