【问题标题】:Planning server infrastructure when hosting duplicated web-product over multiple servers在多台服务器上托管重复的 Web 产品时规划服务器基础架构
【发布时间】:2011-09-09 13:11:24
【问题描述】:

我们有一个 Web 应用程序产品,我们出售给托管在我们服务器上的公司。 该产品包含几个 Web 应用程序、Windows 服务和 SQL Server 数据库。 现在我们只有一个客户使用我们的产品。我们有两台服务器 - 一台用于 Web 应用程序和服务,另一台用于数据库。

为了将产品添加到另一个客户端,我们必须“复制”所有应用程序和数据库并单独运行。

随着我们开始扩张,一些公司将需要比其他公司更多的服务器能力,我需要规划服务器基础架构。

为每个客户端设置两台服务器听起来很荒谬。托管成本将是巨大的。当我有 10 个客户时会发生什么?并且可能有些服务器会比其他服务器消耗更多的电量,使服务器使用 30% 的容量,而其他服务器则使用 70%。

我真正关心的一件事是将数据库与每个产品分开,以便在服务器受损的情况下,只有一个数据库会处于危险之中。

所以...我想到了虚拟机... 听起来对吗? 我需要两台超级服务器来保存虚拟机实例吗? (一个用于网络,另一个用于数据库?) 负载平衡/等等呢? 是否会因为我使用虚拟机而需要更多的维护时间? 有硬件推荐吗?

任何帮助将不胜感激

非常感谢

【问题讨论】:

  • 您可能还希望将多租户视为一种长期选择;这可能意味着重新设计您的整个应用程序,但如果您还不熟悉它,绝对值得了解以供将来参考。
  • 一些网络应用程序可以在同一个操作系统上运行,但是数据库呢?因为我想将它与每个客户端的服务器分开。

标签: asp.net architecture production-environment infrastructure


【解决方案1】:

虚拟机绝对是分离客户端的最安全方式,并且可以让您灵活地将特定百分比的资源分配给特定客户端。

但是,在同一台物理机器上使用单独的进程会表现更好(但并不总是显着),并且可以更动态地使用资源(即,如果一个峰值,它将使用它需要的资源)。但是,此设置不允许您轻松控制资源分配。您还必须构建自己的监控工具来查看和分析哪些进程(客户端)正在使用哪些资源(搭载 perfmon)。

如果您的应用程序不是为此而设计的,那么使用单独的进程也是危险的。应用程序在文件系统上缓存数据或访问内存以外的任何内容的任何地方都需要彻底清理数据库,以确保来自客户端的数据不会混合或共享。

单独的虚拟机需要更多的管理工作——每个虚拟机都非常像自己的计算机。所以你必须管理所有的虚拟机和物理机。

您可能还想考虑在 Amazon AWS 或 Microsoft 的 Azure 等更具动态性的环境中托管,与传统主机上的 VM 相比,这将允许您根据需要更轻松地进行扩展/缩减。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    相关资源
    最近更新 更多