Windows NLB 工作得很好,当计算机死机时,它会从群集中删除计算机。
但是,如果应用程序死了,但服务器仍然可以正常工作,会发生什么?你是如何解决这个问题的?
谢谢
Windows NLB 工作得很好,当计算机死机时,它会从群集中删除计算机。
但是,如果应用程序死了,但服务器仍然可以正常工作,会发生什么?你是如何解决这个问题的?
谢谢
通过不使用 NLB。
硬件负载平衡器通常具有可配置的“探测”功能,以确定服务器是否响应请求。这可以通过访问真正的应用程序端口/URL,或某些特定的“健康检查”URL,只有在应用程序健康时才返回。
这些上的其他选项查看响应请求所花费的队列/时间
思科是这样说的:
Cisco CSM 使用各种探测、带内健康监控、返回代码检查和动态反馈协议 (DFP) 持续监控服务器和应用程序的可用性。当真正的服务器或网关发生故障时,Cisco CSM 会将流量重定向到不同的位置。在不中断服务的情况下添加和删除服务器——系统可以轻松扩展或缩减。
(从这里:http ://www.cisco.com/en/US/products/hw/modules/ps2706/products_data_sheet09186a00800887f3.html#wp1002630 )
网络应用程序有多个级别的健康检查。
我在 NLB 方面的经验可能不完整,但我会描述一下我所知道的。NLB 可以做 1 和 2。使用自定义编码,您可以添加不同难度的其他级别。对于某些网络架构,这可能非常困难。
来自 Cisco 或 F5 等供应商的大多数硬件负载均衡器都可以轻松配置为执行 3 或 4。5 级测试仍然需要自定义编码。
大概使用 Windows NLB 有一些方法可以以编程方式设置节点的权重?节点应该自我监控,如果出现问题(例如,特定节点的磁盘空间不足),将其权重设置为零,这样它就不会接收更多流量。
但是,这需要仔细设计并进行进一步的人工监控,以确保您最终不会遇到一个故障导致整个集群宣布自己关闭的情况。
您不能真正希望处理网络负载平衡中的“拜占庭将军”情况;一个适当损坏的节点可能认为它很好,看起来很好,但完全无法做任何实际工作。诀窍是尽量减少这些情况在生产中发生的可能性。
我们从所有节点都是集群的一部分但不活动的情况开始。我们运行一个自定义服务监视器,它通过外部接口在本地对服务发出请求。如果响应成功,我们启动节点(允许它开始处理 NLB 流量)。如果响应失败,我们将停止节点接收流量。
Darron 描述的所有中间步骤都是无关紧要的。它是否有效是我们唯一关心的事情。如果机器不可访问,则 NLB 集群的其余部分会将其视为失败。