我试图了解各种虚拟化供应商(特别是 Amazon EC2,还有 VMware 和 Xen)如何使软件供应商能够在服务器虚拟化的环境中提供真正的 HA 解决方案。
具体来说,如果我正在运行任何 HA 应用程序(交换、数据库等),我需要确保我的冗余虚拟“服务器”不位于同一物理服务器上。
使用内部虚拟化解决方案(VMware、Xen 等),我可以进行相应的配置,并检查虚拟 -> 物理安排。但是,我可能会意外地“vmotion”到相同的物理硬件。
使用 EC2,我甚至无法在配置时选择不同的物理服务器。由于其集群计算实例是每个物理服务器 1 个虚拟服务器,因此这似乎是保证我不会产生虚假冗余感的唯一方法。
任何想法或意见都会有所帮助。其他人对这个问题做了什么?如果供应商提供了一个 API,我可以从中获得一些简单的东西,比如唯一的物理系统标识符,我至少可以知道我是否会遇到问题。
—蒂姆
答案1
我只能说说 VMWare。如果您使用 DRS,您可以创建规则,将机器保留在同一物理机箱上,或将它们保留在单独的物理机箱上。即使您不小心 vmotion 到有另一台机器的机箱,它也会立即撤回。
答案2
如果您使用的是托管解决方案,那么您只需了解合同内容即可。在这种情况下,您不是在管理机器,而是在购买服务。了解您购买的是什么。如果您购买的套餐说没有单点故障,那么您所能做的就是假设他们将您的虚拟机放在不同的硬件上。如果他们没有这样做,并且失败了,希望您的合同说您可以退还一些钱,免费使用一个月,诸如此类。
如果您无法管理系统,他们为什么会给您任何权限来告诉您虚拟机位于哪台物理机器上?您对此无能为力。即使您可以确保它们不在同一台物理主机上,您如何确定 SAN 具有双重结构?
对于来自信誉良好的供应商的托管解决方案,只需关注您购买的内容。
编辑-来自EC2页面:如果您在一个区域购买机器,您将获得 99.95% 的正常运行时间。您可以购买不同可用区域的机器以获得更好的可靠性。
答案3
这些通常运行在共享存储设备(SAN 或类似设备)上,物理主机都连接到该设备。因此,两台能够运行虚拟机的服务器都使用集群文件系统连接到共享存储。当其中一台服务器发生故障时,另一台服务器会被告知开始运行 - 它会拾取存储中的文件,因此不会中断。
如果其中一台服务器崩溃了,那么将 30Gb 客户的数据从一台服务器迁移到另一台服务器就会很困难。
共享存储本身通常设置为完全冗余、RAID 磁盘和冗余光纤通道/iScsi 交换机。