数据库应该和 Web 服务器放在同一个机器上还是分开

数据库应该和 Web 服务器放在同一个机器上还是分开

我使用的是 SQL Server 2005 和 IIS6。我将它们分别放在不同的机器上(四核 CPU,4G)。客户希望将它们合并到一个机器上。这是一个拥有 400 个用户的企业应用程序。现在的性能不错,但我怀疑通过性能变化和服务管理进行合并是否能节省成本。因此,对于 1) 未来功能/增长、2) 性能、3) 模块化等,是转移到 1 个机器还是继续使用 2 个机器。

答案1

我基本上 100% 基于 Linux,但我认为有一些通用原则适用。

如果您希望扩展,即使仅使用虚拟化软件将服务器分开,也可以让您根据需要轻松添加节点并在它们之间进行负载平衡 - 它还可以提供更好的安全性,因为您只打开所需的端口。

我发现,在机器上配备数据库服务器对于邮件服务器之类的补充服务或者使用后端数据库的其他配置工具来说非常有用......这些占用空间相对较小,并且可扩展性也不是什么大问题。

答案2

没有足够的信息来告诉你应该采取哪个方向,这实际上取决于你的环境。为了做出正确的决定,你需要收集两台服务器当前状态下的指标并分析你所得到的。无论哪种方式,你都需要真实的数据来证明这一点。“企业应用程序”除了“它可能很大”之外,并没有真正说明指标方面的问题。你也许可以合并,但如果你必须购买具有更大马力的新硬件,那么你可能会搬起石头砸自己的脚。

一些想法(主要从数据库的角度):

  • 一个安全理论是,如果攻击者获得了对您 Web 服务器的访问权限,那么他们就获得了对数据库服务器的访问权限。这可能是也可能不一定是真的,这取决于攻击者如何获得访问权限、您如何在 Web 服务器上设置安全性以及您的连接字符串如何存储。不过,这当然值得注意。

  • 默认情况下,SQL 会尽可能多地消耗服务器上的内存。当在同一台机器上托管 Web 和 SQL Server 时,找到一个让它们都能以可接受的速度运行的最佳位置需要进行一些规划和调整。随着数据库的增长和应用程序使用量的增加,这种情况会不断发生变化。并不是说它不会不断变化,只是有时很难在两种服务之间找到平衡

  • 您不需要承担从 Web 服务器到 SQL 服务器的网络连接开销。

答案3

合并可能带来哪些好处?

  • 维护?几乎不可能,最多也就是稍微困难一点。
  • 成本?也许吧……就目前而言。

如果您想两全其美,您可以在一台主机上设置两个虚拟机。当其中一个虚拟机变得太大时,您可以将其移动到新主机(或者可能是新的专用机器)。

一般来说,我不建议在生产环境中的同一个机器上运行它们;除了安全隐患之外,配置和维护也不会那么容易,因为两个角色总是在争夺资源。

答案4

我想说,在系统的非生产副本上尝试一下看看。

任何积极支持的重要应用程序都应该能够进行性能测试。获取生产级硬件盒(与您现在部署到生产中的规格相同 - 并非过时)并使用一个盒子和两个盒子进行测试。

我的猜测是,如果数据库+应用程序适合内存,那么将数据库放在同一台机器上性能会更好,否则会更差。这实际上意味着将它们放在同一台机器上可以提高性能,但会降低可扩展性。这种性能与可扩展性的权衡很常见。

但请尝试一下。务必使用生产级硬件和一些软件来至少模拟您的生产使用水平。

这也会影响到(使用单台机器的)稳健性。但你可以将其他机器作为热备份,而不会对生产造成太大影响(取决于你使用的复制/集群类型等)。

相关内容