我的开发团队为我们正在开发的即将到来的项目建议了一种服务器结构。我们的结构是“逻辑的”,这意味着应用程序的各种逻辑组件(它是分布式的)依赖于不同的服务器。一些组件比其他组件更关键,将承受更多负载。
我们的建议是每个组件有一台服务器,但硬件人员建议用一台更大的虚拟服务器替换各种机器。他们将使用刀片服务器。
现在,我根本不是专家,但我对这些人的问题是:所以如果我们需要,例如,3 台 2GHz CPU / 2GB RAM 机器,你给我 1 台具有 3 2GHz CPU 和 6GB RAM 的机器是一样的吗?他们告诉我是的。
这是准确的吗?这两种解决方案的优点或缺点是什么?普遍接受的最佳实践是什么?您能否指出一些处理该问题的 URL 参考?
编辑:
更多信息。(互联网/内部网)应用程序已经分层。我们在 DMZ 上有一些服务器,它们会将页面暴露给 Internet,并且数据库在它们自己的机器上。我们想要拆分(并且他们想要加入)的是一些主要暴露 Web 服务的 Web 服务器。一个是与数据库层通信的 DAL,一个是我们的单点登录/用户配置文件应用程序,每页调用一次,一个是在 Internet 上看到的内容的克隆,用于我们的局域网。
鉴于他们的要求听起来有点“毛骨悚然”并且实际上相当低,我很想将其虚拟化。我会从两个刀片和一些共享存储开始,然后您可以根据需要创建、修改和删除它们的虚拟机,您将失去非常多的性能并获得极大的灵活性,而且您可以线性横向扩展而无需用户影响。
我认为理智的方法是确定关键瓶颈在哪里或可能发生在哪里。虚拟机非常适合隔离,并且根据所使用的管理程序类型,它可能对实际性能影响不大。虚拟网络也可能比物理网络更好。
但是,由于冗余,我建议使用一些物理机器。如果您有一台物理服务器,其中包含一百万个虚拟机,那么当该物理服务器死亡(并且它会)时,它会关闭一百万个虚拟机。
永远不要把所有的鸡蛋都放在一个篮子里!
他们是否在谈论为您提供单个刀片机箱?因为如果是这样,那仍然是许多单独的服务器,只是包含在一个住房单元中。如果他们实际上是在谈论一台功能强大的服务器来运行大量服务器,那么他们(可能)不会谈论刀片服务器。
无论如何忽略刀片的事情,这是我的观点:如果您的应用程序可以在多个较小的服务器上愉快地扩展,那么就这样做。较小的服务器购买成本更低,您可以通过添加更多服务器轻松横向扩展,并且如果单个应用程序几乎拥有自己的服务器,它们往往会更可靠地工作。
但是,也有极端情况。将架构拆分为至少 2 层(前端和数据库)或 3 层(前端、应用程序、数据库)是很常见的,但除非您正在创建一个绝对的系统怪物,否则您不会经常这样做需要超越这一点。
您能否提供有关您正在开发的系统的更多信息?您正在使用什么样的平台、操作系统、语言、用户群、开发生命周期?
编辑:根据您的编辑,出现了另一个问题 - 您当前配置的限制因素是什么?您是否用完了 RAM,或者磁盘读取速度不够快,或者您是否无法足够快地将记录从数据库中提取出来?用尽CPU?你现在拥有的限制因素应该是你需要去哪里的主要指导。
不,不一样。取决于虚拟化平台,管理程序层会产生开销(5-30% 不等)。
没有更多细节很难,但这里有一些一般性
优点:
缺点:
在您的特定情况下,如果这些系统中的任何一个出现故障,如果您的服务将失效,则1 系统可能会正常。在这种情况下,您没有增加任何风险。听起来这些系统也不需要 6Ghz 的处理能力,在这种情况下,整合肯定会节省资金,因为您不会只为这 3 台机器购买 6ghz。您需要注意的另一件事是(当然不是最不重要的)是 I/O 要求和潜在的 I/O 争用。
作为替代方案,如果这些 Web 服务可以在同一台机器上共存,您还可以考虑创建 2 个具有相同服务的虚拟机,并使用集群或仅在出现问题时让其中一个处于待机状态。
对于 URL,请查看
Windows Server 虚拟化指南
在小型环境中实施虚拟化的快捷指南
单个服务器设置可能是有益的,也可能是非常糟糕的。维护一台服务器比维护 3 台服务器更容易,当它出现故障时,一切都会随之下降。
通过多服务器设置,您可以进行划分,但如果您的 3 台服务器中的一台出现故障而另外两台依靠它运行,这可能是无用的,因为您将在同一个位置。
它们可能是错误的,具体取决于:
建筑不像数学那么简单。但是如果没有更多详细信息,我们无法为您提供更多建议
容量需求最好通过负载测试和经验数据来确定。不要依赖预测或受启发的猜测。
可用性是另一回事。当然,多台服务器总比一台好。可能还有其他因素会影响架构。主要是成本,特别是如果这不是开源的并且有每台服务器的许可费用,或者您正在使用需要支付版税的第三方组件。
刀片服务器不能制造好的虚拟服务器。您在带宽和内存方面受到严重限制,这是虚拟环境中的两个最大需求。我们倾向于每个核心运行大约 4 个虚拟机。即使使用最好的刀片机箱,每个刀片的网络连接也仅限于 40Gb。如果您正在运行 32 个高性能 Web 虚拟机,即使订阅过多,您仍将最大限度地利用每个虚拟机的连接。如果您确实获得了到刀片的 40Gb 连接,您将需要牺牲存储网络并使用融合结构,这会占用所需的 Web 带宽。戴尔 910 或 HP 585 是很好的虚拟化平台。1 台 24 核服务器,140GB 网络,运行 96 个虚拟机。
接下来,您要正确调整虚拟对象的大小。永远不要给虚拟超过 1 个核心,总是向外扩展。如果添加额外的核心,CPU 轮询会导致人为负载和锁定。对于一个好的 apache 虚拟,我们运行 1 个核心、1.8Gb 内存和约 4gb 的网络。在大约 2ghz 的负载下,服务器报告负载为 1.28。我们的虚拟数据库运行 1 个核心、6gb 的内存和约 4gb 的网络。
始终分开应用程序;如果您不断添加变量,您将无法正确调整虚拟。一个虚拟应该有一个角色。它应该很好地执行一件事。非军事区。DMZ 应位于单独的物理虚拟平台上。用于监管要求和保护。