我正在考虑购买一台新的基于服务器的开发机用于开发(我知道,冗余度很高 ;))。理想情况下,我想在最低级别运行 ESXi 或 Xen Hypervisor 之类的东西。然后我想添加(至少)5 个 Linux VM 用于以下用途:
2 个 Web 服务器 2 个应用服务器 1 个数据库服务器
我想要对 2 台 Web 服务器和 2 台应用程序服务器进行负载平衡,并且(显然)它们需要全部联网在一起以模拟生产环境。
此外,以前的建议是将每个虚拟机放在自己的硬盘上,但我不确定这是否还站得住脚。有什么建议吗?
有人能给点建议吗?Gotchya's、LookOuts! 等?
谢谢!
答案1
我在 VMware ESX 4.0 下运行生产 SQL Server 环境
您必须了解虚拟化技术是如何工作的。如果这只是测试环境,那么所有服务器都不需要 4 GB RAM。Web 服务器可能每个 512MB 就可以很好地运行,App 也是如此,数据库至少需要 1 GB。我是 PASS 虚拟分会的成员,专门研究此类设置,您应该查看一下。它位于http://virtualization.sqlpass.org,无需注册。我们整合了当今该领域一些顶级虚拟化专家的博客,并针对各种主题提供免费网络广播。
另一个很好的资源是 Brent Ozar 关于虚拟化的帖子(他领导虚拟章节)。您可以在以下网址找到这些帖子http://www.brentozar.com/sql/virtualization-best-practices/
答案2
它们都可以通过网络互相看到,因为它们都有自己的网络 IP 等,但我认为您也可以为它们设置虚拟 NIC,以便直接互相通信。
至于硬盘问题,我认为您必须考虑冗余。我的意思是,如果您的硬件坏了,您不会失去一台计算机。您会失去 5 台。硬盘故障相当常见,因此通常您会在 VMWare 服务器上运行 RAID 10 或至少 RAID 1,具体取决于您要多努力提高系统的吞吐量。
也就是说,即使您有单独的驱动器,您仍可能会在控制器级别遇到争用,因为您的机器将从同一台机器中提取数据。
如果您将系统推向需要考虑拆分每个虚拟机的驱动器的程度,则可能需要重新考虑使用虚拟化,或者您需要考虑使用多台机器和全面的 VMWare 来实现机器级平衡和监控(这并不便宜)。
我们在 16 GB 内存的单个 RAID 5 阵列上运行了大约 7 台服务器,运行正常,没有任何问题,但我们不会对虚拟机施加太大的压力。如果磁盘、网络或内存已饱和,则只需两台服务器即可使虚拟机服务器超载。这完全取决于您使用它的目的。
我的建议是尝试 VM 解决方案,如果不行,您至少有一个非常好的系统来开始您的开发农场,或者如果您发现一个特别有问题的系统,您可以为一些服务器使用 VMWare 系统,并为第二个独立的 VMWare 系统使用另一个盒子,或者为特定目的使用一个单独的盒子(虚拟化 4 个服务器,为有问题的系统使用一个)。您最终还是应该会领先。
如果不估计您对系统所做的事情或您将对系统的流量/吞吐量等造成多大影响,就很难给您提供更多的建议。
答案3
我想要对 2 台 Web 服务器和 2 台应用程序服务器进行负载平衡,并且(显然)它们需要全部联网在一起以模拟生产环境。
有人能给点建议吗?Gotchya's、LookOuts! 等?
现在,您没有解释您正在使用什么设备/服务器,因此从抽象的角度讲,我会说“模拟”生产环境在磁盘 I/O 方面将非常困难。我不知道您打算构建/部署哪种 Web 应用程序,但我已经这样做了(本质上)您要做的事情,尽管与您的一般规范并不完全一致。磁盘子系统是一个容易被忽视的重要因素,对于数据库服务器来说,推动硬盘并不困难。就内存和 CPU 而言,只要有足够的空间,您就可以模拟生产环境相当好吧,但与非虚拟机解决方案相比,您的虚拟机环境总体上可能会更慢。但磁盘子系统能最终会影响内存和 CPU,具体取决于您预期的负载类型或计划如何测试。
此外,以前的建议是将每个虚拟机放在自己的硬盘上,但我不确定这是否还站得住脚。有什么建议吗?
就你的情况而言,这很难说。我会将 VM 路由视为配置测试,而不是其他任何事情。尝试获得负载平衡正确地并且不要太担心总吞吐量。无论你选择哪家供应商,在虚拟环境中尝试优化性能都是非常棘手的。每个虚拟机只有一个硬盘会是理想的,但即使你能做到这一点,你也可能无法获得“真实世界”的结果。
很明显,你要么试图为这个应用程序准备一个更新的环境,要么希望使用虚拟机服务器直到您需要或有预算来采用非虚拟机解决方案。任何一个场景中,为了测试配置而构建虚拟机服务器是非常有意义的,但在尝试用它来衡量任何现实世界的性能/容量是不准确的。虚拟化是操作系统和硬件资源之间的权衡。你不可能从虚拟化世界和非虚拟化世界获得相同的性能。