这是一个多步骤的问题,所以请耐心等待。
我正在考虑构建一个小型(10 - 20 个节点)集群。但是,我希望普通程序(不是为集群设计的)能够利用额外的处理速度。在最理想的情况下,我希望能够在整个集群上运行单个管理程序。据我所知,对于这个问题,没有一个好的解决方案可以让一个普通的程序在集群上运行得更快。
因此,我正在集思广益,我将如何设计这样一个系统,以及尝试是否可行。似乎集群的固有问题是移动数据比处理数据需要更多时间。(即,将问题从一个节点转移到另一个节点需要 2 秒,但在第一个节点上解决它只需要 1 秒。)但是,我已经想到了一个可能的解决方案。
我们只是说理论上集群中的所有节点都可以从同一个磁盘启动。因此,他们都可以直接访问相同的数据和相同的程序。其次,让我们假设可以修改 Linux 内核以将每个新命令发送到不同的从节点,无限循环通过所有节点。鉴于这两个条件,用户可以登录到主节点的终端并以正常(非面向集群)格式运行命令,但命令的负载将或多或少均匀地分布在整个集群中。
因此,通过介绍,这是我的两个问题:
- 是否有可能创建一个所有计算机都从一个磁盘(可能是 NAS)启动的环境? (我知道 PXE,但据我所知,它不提供持久存储,它只托管操作系统。)如果目前可能,怎么做?
- 是否可以修改内核以将每个新命令委托给单独的节点? (这可以通过修改 bash 二进制文件而不是内核本身来完成 - 我不确定。)如果是这样,请说明如何。
这是我在 Stack Exchange 上尝试过的最复杂的问题,所以我希望人们在评论中提出问题。然而,如果这个解决方案能够真正实施,它可能会彻底改变虚拟化。