我有时会听到这样的话:“我们有 5 台服务器,有 20 个虚拟 xen 实例”。为什么要这样做?这样做有什么好处?是不是这样你就可以只用一台机器就获得多台服务器的冗余性,还是其他什么?
答案1
主要优点有:
0)如果这20台服务器中的大部分时间都处于空闲状态,那么它们在5台实际硬件服务器上共存就没有问题了,而你又节省了15台硬件服务器的成本。
1) 如果服务器需要一直可用,您可以使用 VM 系统的“实时迁移”功能将虚拟服务器从一台硬件服务器迁移到另一台。这样,如果您需要关闭服务器以升级操作系统内核,或安装更多 RAM 等,您可以一边工作一边将虚拟服务器从一台机器迁移到另一台机器;您可以关闭所有五台服务器,然后再启动它们,而不会中断虚拟服务器的服务。
2) 安全性。如果您提供的每项服务(电子邮件、Web、打印、数据库等)都位于各自的虚拟机中,那么攻击者就很难一次性将它们全部关闭。如果攻击者设法在运行大量程序的服务器上获得 root 权限,他就可以破坏所有程序;如果他设法在仅包含 Web 服务器的虚拟服务器上获得 root 权限,他只能破坏 Web 服务器。
3) 如果您的虚拟服务器突然变得非常繁忙,您可以实时将其迁移到更强大的硬件服务器。虚拟服务器让您更好地平衡更快的硬件和更便宜的硬件。
4) 如果您的软件对操作系统设置非常敏感,或者难以安装,则可以将其安装在虚拟机映像中,然后即使周围的世界发生变化,也可以继续运行同一映像。您可以升级操作系统,升级硬件,继续升级东西,但虚拟机保持不变。我怀疑这对在桌面 VM 系统上运行旧桌面软件(尤其是非常老的游戏)的人来说更有优势。
只要在 Google 上搜索“虚拟化的优势”,您就会很快找到几篇讨论该技术的长篇文章。
答案2
这样做的原因有多种。
- 未来的灵活性。如果您一开始将每种类型的服务器都作为虚拟实例,那么以后当您需要扩展其中一种类型时,将其剥离到其他服务器上就很容易了。如果您一开始将所有服务都运行在一台常规服务器上,那么将某项服务分开可能很困难。哪项服务又需要进行一次特殊调整?
- 冲突。有些软件无法与其他软件很好地兼容。例如,任何需要特殊内核调整的软件。
- 让每个虚拟机/系统都有单一任务可有助于降低复杂性。
- 根据您的设置,冗余可以是其中之一。如果您有 5 个物理系统运行 20 个虚拟机/实例,而这些虚拟机/实例实际上可以安装在 4 个物理系统上,那么您可能能够将虚拟机全部从一个系统迁移出去,然后关闭该系统以进行维护。循环执行此操作,您可能不会出现停机时间,或者停机时间以毫秒为单位。或者,如果您的 20 个虚拟实例提供 5 种不同的服务,因此一切都是冗余的,那么如果物理服务器发生故障,您的服务不会受到影响(或仅会受到影响几毫秒)。
虚拟化还有许多其他原因,但这些是我能想到的。
答案3
你为什么要这样做?
我同意其他大多数的回应。但我认为最大除了技术原因之外,另一个原因纯粹是财务原因。更便宜从购买角度和长期成本(维护、电力、零件等)的角度来虚拟运行机器。如果你算一下,你实际上是在消除很多硬件,同时仍然保持可靠的正常运行时间/冗余度取决于所有因素。既然更少的硬件也能发挥同样的作用,为什么要花更多的钱购买更多的硬件呢?在这种经济条件下……你会希望IT部门非常聪明,能够迈向虚拟化。
这有什么好处呢?
除了成本之外,它比 1:1 主机/操作系统比率更灵活。如果您有 5 台非虚拟化服务器,其中一台发生故障或需要维修/维护,则该服务器将无法提供服务。这可能是批判的对于需要高正常运行时间的企业。如果 2-3 个虚拟化服务器需要维修/维护,您可以这样做没有通过将虚拟机客户机(操作系统本身)移动到另一台主机来减少停机时间,而无需任何停机时间。尝试使用非虚拟化服务器执行此操作。
举个例子:“我们有 5 台服务器,有 20 个虚拟 xen 实例”。假设每台服务器有 4 个虚拟实例(客户机)。那么,如果其中两台服务器因维护或紧急情况而停机,虚拟化可以自动地无需干预即可将这些客户机移至未发生故障的主机。这样就将 8 个客户机移至其他 3 台服务器。避免了灾难。无需中断服务即可进行更改和修复。硬件成本更低。用户完全不知道发生了什么。系统管理员笑了,因为麻烦事被避免了。
这样是不是就可以从一个盒子中获得多个服务器的冗余了呢?
不是“一个*盒子。你需要至少两台或更多主机。如果你在一个盒子里做所有事情,你就已经消除了虚拟化的一个关键功能:实时迁移/故障转移。如果你是企业主,你宁愿花更多的钱在硬件上,还是仍然是否需要担心可能出现的正常运行时间问题?或者您是否愿意购买虚拟化解决方案,在硬件上花费更少的钱(以及总体成本),同时在发生紧急情况/灾难时享受实时迁移的好处?
答案4
比什么有优势?
- 超过 20 台物理服务器?成本。
- 超过 5 台物理服务器?更多服务器。