【问题标题】:What the best/correct way to setup a load balanced environment for a web application?为 Web 应用程序设置负载平衡环境的最佳/正确方法是什么?
【发布时间】:2008-12-17 19:45:31
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: .net web-applications load-balancing


    【解决方案1】:

    阅读Scalable Internet Architectures

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • 只有登录界面可以在没有数据库连接的情况下运行。除此之外,其他一切都需要连接。
        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-10-25
          • 2021-04-20
          • 1970-01-01
          • 1970-01-01
          • 2012-11-28
          • 2023-03-21
          • 2010-10-23
          • 2023-04-02
          相关资源
          最近更新 更多