群集未知应用程序的群集/负载平衡

原谅我,如果我使用任何这些条款不正确。

我想知道是否有任何一种软件可以让我的两台“join”两台计算机在一起,使群集未知的应用程序可以利用他们的联合计算资源? “群集不知道”我的意思是一个应用程序不旨在跨多个服务共享工作。 我的理解是,集群是由特定的应用程序通过它的体系结构来支持的,例如应用程序的多个实例的消息传递协调工作的共享。 相反,我正在寻找一些能够在操作系统或虚拟化级别进行集群的应用程序,以便任何应用程序都可以基本上集群化。

否则,我也想知道以下情况:我们有3个不同的应用程序,我们将称为A,B和C.我们有2个单核电脑。 在任何时候,可以说任何这些应用程序的组合都是CPU密集型的。 如果其中只有两个应用程序非常活跃,则将其中一个移到另一个服务器上。 简而言之,就是对应用程序的负载进行某种dynamic的自动洗牌。

我听说过可以在物理机器上迁移的虚拟机,但是我想知道这是否可以自动完成以响应应用程序或虚拟机的CPU活动?

您可以虚拟化整个操作系统映像,并在这些不同的虚拟化操作系统中运行您的应用程序,并移动这些操作系统以适应您的负载。 这是ESX /虚拟化模型。 它可能可以追溯到IBM虚拟化机器的大型机操作系统,而不是一次性运行多个程序的操作系统。

硬件到硬件的迁移并不是非常快,你将在每个虚拟实例上耗费大量的操作系统内存。

另一个select是使用一些向客户端程序呈现单个操作系统映像的实例,但实际上可以一次运行在大量计算机上。 这个模型的一个例子是mosix 。 Mosix扩展了linux,使得正在运行的程序在某些情况下可以从一个硬件移到另一个硬件。 程序本身并没有意识到这一点(正如它通常不关心在一台普通的具有2个CPU的计算机上从一个CPU移动到另一个CPU一样)。 这将有一些开销,但它可能是值得研究。

如果您将每个应用程序安装在不同的虚拟机上,那么可以使用任何特定的企业级虚拟机技术进行实时迁移

如果您正在寻找故障转移群集,则可以对非可聚集软件进行群集。 使用虚拟机,如果主机死亡,将虚拟机迁移到另一台主机,或使用XOsoft WANsync,NeverFail,DoubleTake等软件。

资源共享有点棘手,软件通常必须是集群感知的,而且更应该能够在负载平衡集群中工作,而不仅仅是故障切换。

由于MOSIX似乎与MPI有关,所以提到有一种称为PVM(并行虚拟机)的竞争技术似乎是适当的。 探索是否有任何基于PVM的MOSIX类聚类操作系统也是有用的。 我曾经使用PVM将多个Linux服务器并行运行C ++任务作为单个集群硬件。 例如,在stream行的RDBMS行上运行SQL查询可以跨越分区。

除了提供消息传递接口之外,PVM还使networking通信变得透明,并支持异构集群系统中的灵活的并行计算。

如果您正在使用Myrinet交换机硬件,可以使用PVM的优化版本; 见http://www.huaxiaspace.net/research/wed930.pdf

我已经看到一些幻灯片暗示Mosix可以使用MPI或PVM技术,但不能确定。