【问题标题】:Best Practice for Load Balancing Strategy in 3 Tier Architecture3 层架构中负载均衡策略的最佳实践
【发布时间】:2018-10-05 13:44:03
【问题描述】:

在提问之前,请先澄清一下我的术语。

3 层架构 - 不是 Web 应用程序中讨论的普通客户端、逻辑和数据访问层。它更多地是指基础设施(或系统)级别。 3 层由 Web、应用程序和数据库层组成。

Web 层 - 由执行代理工作的 Web 服务器组成。例如。 IIS 重写

应用程序层 - 由具有应用程序实际源代码的应用程序服务器组成。例如。 ASP.NET 应用程序

数据库层 - 由存储数据的数据库服务器组成。例如。 MS SQL 服务器。

如下所示,我有两个整体架构。 diagram

图 1 和图 2 之间的更好做法是什么(或者可能是利弊)。我正在考虑高可用性 (HA)、可维护性、复杂性、关注点分离等方面。

【问题讨论】:

    标签: architecture system load-balancing 3-tier infrastructure


    【解决方案1】:

    如果您需要支持会话状态,那么额外的负载平衡层将相当昂贵。如果您的应用程序真的是无状态的,那么它不会有很大的不同。

    我的问题是,为什么不将您的应用程序层和代理层组合到同一个硬件,并在冗余池中拥有 4 个节点而不是两个节点。这将增加您的实际冗余,并消除网络跃点。你的攻击面已经被你的硬件负载均衡器减小了。

    【讨论】:

    • 拥有两个层,web 和 app 的主要原因之一是出于安全考虑。在 web 层使用反向代理,客户端将不知道资源来自哪里。这就是多层的原因。
    • 您是否使用在您的反向代理层中从根本上更安全的软件?您是否打算不盲目代理,而是以某种方式限制 url 路径以某种方式提高您的安全性?我以前见过有人在没有完全了解他们的 HTTP 堆栈的情况下这样做,以及为什么反向代理只有在您使用比他们的应用层更坚固的东西时才能提供更好的安全性。
    • 申请时当然要注意安全。但是,我认为 Web 应用程序的安全性不仅使应用程序安全。这是因为应用程序运行在操作系统之上并通过网络进行通信。这就是为什么有单独的反向代理服务器以提高安全性的原因。
    • 而且反向代理不仅仅是过滤HTTP请求。代理服务器的角色是肯定的。但是“反向”这个词增加了隐藏原始请求来源的额外功能。更详细的可以参考这个链接,httpd.apache.org/docs/2.0/mod/mod_proxy.html#forwardreverse
    猜你喜欢
    • 2021-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 2014-06-12
    相关资源
    最近更新 更多