如何将多台机器聚集在一起,在这台看似单台的机器上运行多个虚拟机?

如何将多台机器聚集在一起,在这台看似单台的机器上运行多个虚拟机?

如何让多台计算机像一台计算机一样运行,这样所有的处理器和内存现在都结合在一起,您可以运行任何应用程序,就像在一台非常快的计算机上运行它们一样。这样它就可以用于运行虚拟机(在 vmware 等软件上)。

哪些操作系统可以实现此目的?或者需要哪些软件?

答案1

集群类型表现为具有大量内存、多个 CPU 的单一操作系统,并且可以运行通常在非集群版本的操作系统上运行的任何程序,这种类型的集群称为单一系统映像。这需要多个集群节点并按照您所说的操作,将它们合并为单个操作系统实例。

这种情况并不常见,因为这样的系统极难正确设计,而且在应用程序级别而不是操作系统级别设置起来更容易,而且性能通常也更好。

性能差异的原因与假设有关。在操作系统上运行的进程假设其所有可用资源都是本地的。集群就绪进程(例如渲染农场)假设某些资源是本地的,某些资源是远程的。由于假设不同,资源的分配方式也有很大不同。

将 Linux 等通用单节点操作系统转换为 SSI 样式集群需要对内核进行大量重新设计。诸如内存局部性等概念(另请参阅:) 在这样的系统上非常重要,将进程切换到不同 CPU 的成本可能会高得多。其次,Linux 中实际上不存在的概念,即 CPU 局部性,也非常重要;如果您有一个多线程进程,那么在一个节点上运行两个进程,在另一个节点上运行两个进程,其性能会比在同一个节点上运行所有四个进程慢得多。对于可能对这种区别视而不见的进程,操作系统将决定是选择本地进程还是远程进程。

但是,如果您有一个集群就绪的应用程序(例如 Chopper 列出的应用程序),该应用程序本身将做出本地/远程决策。该应用程序完全了解操作对本地和远程的影响,并将采取相应的行动。

答案2

注意:我不是这个主题的专家。

据我了解,你对高性能计算机集群感兴趣(而不是其他集群方法,如高可用性或者负载均衡)你可能想要的是极好的-,网格- 或者分散式-计算。

如何让多台计算机像一台计算机一样运行,以便将它们的所有处理器和内存组合在一起,并且您可以运行任何应用程序,就像在一台非常快的计算机上运行它们一样。

无需专门的硬件(例如参见环面互连或者无限带宽)您只能使用以太网连接计算机(这意味着您可以进行分布式或网格计算)。但您不应忘记或低估本地高速计算机总线与以太网的速度差异!

现在,您是否应该努力实现网格或分布式计算,这个问题在很大程度上取决于您想要完成的任务。由于存在以太网这样的瓶颈,网格或分布式计算只对不需要非常灵敏且需要执行计算密集型任务的节拍/应用程序有意义。这(广义上讲)使任何非科学性质的应用程序都不符合要求。此外,应用程序可能应该以某种方式进行编程,以便它能够充分利用其主机的分布式特性。

如果您仍然感兴趣,这里是兼容操作系统的列表:单一系统映像

答案3

没有一种非常常见的“集群”方式,它是一个用于使多台服务器执行一项功能的术语,但您可能需要执行数千种不同的功能。

例如,有数据库集群(例如 Oracle RAC 或 MSSQL 集群)仅用于数据库加载可以配置为一个整体 - 通常是为了性能和/或弹性目的。

其他类型的集群也是如此,比如 CGI 渲染农场,它们共同为下一部皮克斯大片或其他作品渲染帧。用于科学计算(基因研究、粒子物理学,甚至核衰变)的集群也是如此。

因此,当我们谈论“集群”时,我们真正的意思是“执行 xxxxx 的集群”。

因此,如果您有一个想要分布在多台服务器上的功能,请告知我们,我们会尝试为该用例推荐一些选项。

相关内容