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