2

我开发了一个需要在 4 个网络服务器之间进行负载平衡的网络应用程序。我的公司正在购买负载均衡器硬件 (Cisco)。关于如何告诉负载均衡器 Web 服务器应该在轮换中存在混淆。

IT 硬件支持团队希望我创建一个单页 Web 应用程序,该应用程序将位于主 Web 应用程序旁边。有人告诉我,这个小的单页应用程序应该调用数据库并在表上执行 INSERT、UPDATE 和 DELETE。然后应用程序应该返回一个状态码,然后负载均衡器将能够读取并确定是否让这个网络服务器保持轮换。此应用程序必须驻留在所有负载平衡服务器上。然后,负载均衡器将每 5 秒轮询一次单页应用程序。

我认为这听起来像是一个绝对的 HACK。这听起来像是数据库上不必要的工作和开销。硬件团队试图让我相信这是正确的方法。我完全不同意!我的论点是负载均衡器不应该关心数据库连接。我们只是试图在 4 个网络服务器之间分配负载。需要注意的一件事是主 Web 应用程序没有数据库连接就毫无用处。

负载均衡器本身是否有办法确定服务器是否应该在轮换中?这样做的正确方法是什么?

4

4 回答 4

2

阅读可扩展的互联网架构

平衡器只能看到 Web 服务器。如果 Web 服务器出现,但无法与数据库通信(例如,Apache 正在运行但您的应用程序已损坏),那么当应用程序损坏时,您将遇到无响应服务器获取请求的问题.

我们有一个返回某些状态的自测应用程序。目前用于调试。将来,将与其他 HA 和负载分担解决方案一起使用。

于 2008-12-17T19:51:30.343 回答
1

我总是在网络服务器上放置一个真正简单的 html 页面。如果 status.html 中的 HTTP 状态返回 200,则保持服务器轮换,如果不是,则暂停 Web 服务器。

如果您的数据库严重崩溃怎么办?在恢复时,您应该能够放置一条状态消息,上面写着“抱歉,很快回来”。您也不想重新配置负载均衡器。没有数据库可以运行您的应用程序的任何部分吗?

于 2008-12-17T19:51:17.473 回答
1

这不是黑客攻击,而是一种检查Web 服务器心跳的常用方法。但是,在该页面中查询数据库是有争议的。例如,在数据库超时的情况下,您最终可能会在集群中没有 Web 服务器。

于 2008-12-17T20:29:23.310 回答
1

我相信这是一个黑客。负载均衡器应该只使用一个简单的 html 页面来返回负载均衡器,就像 JWMiller 说的那样。我们在所有应用程序中都使用这种方法。检查数据库连接、远程服务等是应用程序健康检查的工作,应该是一个单独的功能。

于 2008-12-17T20:41:19.433 回答