我使用 SQL Server 2005 和 IIS6。我将每个都放在单独的盒子上(四核 CPU,4G)。客户希望合并到一个盒子上。这是一个拥有 400 个用户的企业应用程序。现在性能很好,但我质疑任何与性能变化、服务管理相结合的节省。所以对于 1)未来的功能/增长,2)性能,3)模块化,其他?,移动到 1 个盒子或继续 2。
我使用 SQL Server 2005 和 IIS6。我将每个都放在单独的盒子上(四核 CPU,4G)。客户希望合并到一个盒子上。这是一个拥有 400 个用户的企业应用程序。现在性能很好,但我质疑任何与性能变化、服务管理相结合的节省。所以对于 1)未来的功能/增长,2)性能,3)模块化,其他?,移动到 1 个盒子或继续 2。
我几乎 100% 基于 Linux,但我认为一些通用原则适用。
如果您希望扩展,即使只使用虚拟化软件,将服务器分开也可以让您根据需要轻松添加节点并在它们之间进行负载平衡 - 它还提供更好的安全性,因为您只打开所需的端口。
我发现在盒子上安装一个数据库服务器对于邮件服务器或其他使用后端数据库的配置工具之类的补充服务很有用……这些占用空间相对较小,可伸缩性也不那么重要。
没有足够的信息来告诉您要采取的方向,这实际上取决于您的环境。为了做出正确的调用,您需要在两台服务器上收集当前状态的指标并分析您所拥有的。无论哪种方式,您都需要真实的数据来证明这一点。除了“它可能很大”之外,“企业应用程序”并没有真正说明其他指标。您也许可以组合,但如果您必须购买具有更大马力的新硬件,那么您可能会在脚下开枪。
几个想法(主要从数据库的角度):
一种安全理论是,如果攻击者获得对您的 Web 服务器的访问权限,那么他们就获得了对数据库服务器的访问权限。这不一定正确,也可能不一定正确,具体取决于攻击者如何获得访问权限、您如何在 Web 服务器上设置安全性以及您的连接字符串是如何存储的。不过,这当然值得关注。
默认情况下,SQL 将尽可能多地消耗服务器上的内存。当在同一个盒子上托管 Web 和 SQL Server 时,要找到它们都可以接受的令人满意的地方,需要一些计划和一些调整。这将随着您的数据库增长和应用程序使用量的增加而不断变化。并不是说它不会不断变化,只是有时很难在两种服务之间找到平衡
您不会有从 Web 服务器到 SQL 服务器的网络连接开销。
合并的假定好处是什么?
如果您想要两全其美,您可以在一台主机上设置两个虚拟机。当它们中的任何一个变得太大时,您可以将其移至新主机(或者可能移至新的专用机器)。
一般来说,我建议不要在生产环境中的同一个盒子上运行它们。除了安全隐患之外,配置和维护也不会那么容易,因为这两个角色总是在争夺资源。
一些安全人员不喜欢在同一台机器上拥有 Web 服务器和数据库服务器。如果我们将 IIS 安装在单独的分区上,我们就让它滑动。
我想说,在您的系统的非生产副本上试一试,然后看看。
任何受到积极支持的重要应用程序都应该能够进行性能测试。获取生产级硬件盒(与您现在部署到生产中的规格相同 - 没有过时)并用一个盒子和两个盒子对其进行测试。
我的猜测是,如果数据库+应用程序适合 ram,将数据库放在同一台机器上性能会更好——否则会更糟。这实际上意味着将它们放在同一台机器上可以提高性能,但会降低可扩展性。这种性能与可扩展性的权衡是典型的。
但一定要试试看。请务必使用生产级硬件和一些软件来模拟至少您的生产级使用情况。
(使用单台机器)的鲁棒性也有影响。但是您可以将其他备份作为温(ish)备份,而不会对生产产生太大影响(取决于您使用的复制/集群等类型)。