web-dev-qa-db-ja.com

1つの複数のマシンを1つのクラスターとして機能させ、この単一のマシンで複数の仮想マシンを実行するにはどうすればよいですか?

どのようにして複数のコンピューターを取り、それらを1つのコンピューターとして機能させるか、つまりすべてのプロセッサーとメモリを今すぐ組み合わせて、単一の非常に高速なコンピューターでアプリケーションを実行できるようにする方法を説明します。 (vmwareなどのソフトウェア上で)仮想マシンを実行するために使用できるように。

これにより、どのオペレーティングシステムを実行できますか?または、どのソフトウェアが必要ですか?

11
user2387

大量のメモリと複数のCPUを備えた単一のオペレーティングシステムとして提示され、そのOSの非クラスター化バージョンで通常実行されるものを実行できるクラスターのタイプは、 単一システムイメージ と呼ばれます。これは、複数のクラスターノードを取り、あなたが言ったことと同じように、それらを単一のOSインスタンスにマージします。

このようなシステムは正しく設計することが非常に困難であり、OSレベルの代わりにアプリケーションレベルでクラスタリングするシステムは設定がはるかに簡単であるため、これは一般的に行われません多くの場合、パフォーマンスははるかに優れています。

パフォーマンスの違いの理由は、仮定に関係しています。 OSで実行中のプロセスは、使用可能なすべてのリソースがローカルであると想定します。クラスター対応プロセス(レンダリングファームなど)では、一部のリソースがローカルで、一部がリモートであると想定しています。リソースの割り当て方法は想定が異なるため、非常に異なります。

Linuxのような汎用の単一ノードオペレーティングシステムをSSIスタイルのクラスターに変換するには、カーネル内部の多くの再作業が必要です。このようなシステムでは、メモリの局所性(次も参照: numa )のような概念が非常に重要であり、プロセスを別のCPUに切り替えるコストははるかに高くなる可能性があります。第2に、Linuxには実際には存在しない概念、CPUの局所性も非常に重要です。マルチスレッドプロセスの場合、1つのノードで2つのプロセスを実行し、別のノードで2つのプロセスを実行すると、同じノードで4つすべてのプロセスを実行するよりもパフォーマンスが大幅に低下する可能性があります。そのような区別がつかない可能性のあるプロセスに対してローカルとリモートのどちらを選択するかは、オペレーティングシステム次第です。

ただし、クラスター対応のアプリケーション(Chopperによってリストされているアプリケーションなど)がある場合、アプリケーション自体がローカル/リモートの決定を行います。アプリケーションは、操作のローカルとリモートの関係を完全に認識しており、それに応じて動作します。

13
sysadmin1138

注:私はこのトピックの専門家ではありません。

私が理解しているように、高性能コンピュータクラスタに関心があります( High-Availability または Load-Balancing などの他のクラスタアプローチとは対照的です)。あなたがおそらく望んでいるのは Super -、 Grid -または Distributed -computingです。

どのようにして複数のコンピューターを1つのコンピューターとして動作させ、すべてのプロセッサとメモリを組み合わせて、単一の非常に高速なコンピューターでアプリケーションを実行するようにします。

特殊なハードウェアがないと(たとえば、 Torus interconnect または InfiniBand を参照)、イーサネットを使用したコンピューターの接続に制限されます(つまり、分散コンピューティングまたはグリッドコンピューティングを実行できます)。しかし、イーサネットとは対照的に、ローカル高速コンピューターバスの速度の違いを忘れたり、過小評価したりしないでください。

ここで、グリッドコンピューティングまたは分散コンピューティングのどちらを達成するために努力すべきかという問題は、達成したいタスクに大きく依存しています。イーサネットのようなボトルネックがある場合、グリッドコンピューティングまたは分散コンピューティングは、応答性が非常に高い必要がなく、非常に計算集約的なタスクを実行する必要があるタクト/アプリケーションに対してのみ意味があります。これは、(大まかに言えば、科学的な性質のものではないすべてのアプリケーションを失格にします。また、アプリケーションは、ホストの分散された性質を十分に活用できるような方法でプログラムする必要があります。

それでも興味がある場合は、互換性のあるオペレーティングシステムのリストを次に示します。 単一システムイメージ

3
Marco

「クラスタリング」の大きな一般的な方法は1つではありません。これは、複数のサーバーで1つの機能を実行するために使用される用語ですが、何千もの異なる機能を実行することができます。

たとえば、データベースクラスター(たとえば、Oracle RACまたはMSSQLクラスター)がありますデータベースの負荷の場合のみは、通常、パフォーマンスや復元力を目的として1つとして動作するように構成できます。

CGIレンダーファームなど、他のタイプのクラスターについても同じことが言えます。これらのクラスターは連携して、次のPixarブロックバスターなどのフレームをレンダリングします。科学計算(遺伝子研究、素粒子物理学、核崩壊さえ)に使用されるクラスターにも同じことが当てはまります。

したがって、「クラスター」について話すとき、私たちが実際に意味するのは、「xxxxxを実行するクラスター」です。

そのため、多数のサーバーに分散したい機能がある場合はお知らせください。そのユースケースで使用できるいくつかのオプションを提案します。

2
Chopper3