オープンソースのクラスター管理システム

コンピュータの世界では、「クラスター」という言葉はソフトウェアとネットワークで結ばれた独立したコンピュータ群を指す。計算量の極めて大きい処理に使われることが多く、比較的低速のシステムを数百から数千台接続して高速スーパーコンピュータに匹敵する性能を実現することができる。容易に使えるようクラスター管理ソフトウェアが用意されており、ジョブの待ち行列を自動処理する。ジョブの実行に必要な条件とクラスター内で利用可能なリソースを突き合わせ、またジョブをクラスター内の適切なシステムに移動させる。本稿では、そうしたオープンソースCMSアプリケーションを5つ紹介する。

openMosixは、オープンソース・クラスタリング・ソリューションとしては最も有名なものだろう。2002年にMoshe Barが始めたプロジェクトで、Mosix CMSのオープンソース版であり、拡張版である。通常のLinuxカーネルをクラスター対応にするパッチとして提供されている。openMosixは単一システム・イメージ(SSI)クラスタリング方式だ。つまり、ユーザー・アプリケーションからは、ネットワーク上に分散した複数のリソースがローカルに存在する単一のリソースとして見える。また、実行中に新しいノードを検出しそのリソースを利用できるようにする自動検出機能がある。つまり、動作中にノードの追加が可能だ。

openMosixには、負荷の高いノード上にあるジョブを負荷が少なくそのジョブを高速に処理可能なノードに移動(マイグレーション)させる負荷分散機能がある。このジョブ・マイグレーションは透過的だ。つまり、対象となったジョブが移動の事実を検知することはなく、ローカルで実行を続けているかのように振る舞う。広範なアプリケーションを実行でき、しかも特別なプログラミングは不要である。

インストールには、まず、カーネル・パッチとユーザーランドツールの2つのファイルをダウンロードする。次いで、DebianユーザーはAPTを、Gentooユーザーはemergeを実行する。

欠点としては、カーネルへの依存性がある。カーネル2.4バージョン用には安定版がリリースされているが、2.6カーネル用のユーザーランドはまだ開発中だ。

Kerrighed

Kerrighedも、SSIクラスタリング・パッケージである。openMosixと同様、カーネル・パッチとカーネル・モジュールから成る。付属のスケジューリング・アルゴリズムにより、プロセスやスレッドが自動的にクラスター内のノードを移動し、CPUの負荷を平準化する。スケジューリング・アルゴリズムをカスタマイズすれば、ストリーム(ソケット、パイプ、キャラクター・デバイスなど)を扱うプロセスを通信のパフォーマンスを落とすことなくシームレスに移動させることもできる。さらに、スレッド化したアプリケーションの全体だけでなく、一つひとつのスレッドも移動できる。また、プロセス・チェック・ポイント機能もあり、クラスター・ノード上のプロセスを中断し、任意のノード上で再開可能。分散共有メモリー(DSM)にも対応し、各ノードは小さな専用メモリーのほかに、大きな共有メモリー領域にもアクセスできる。

欠点としては、運用中にノードの挿抜ができない点が挙げられる。

利用可能なシステムはインテル・プロセッサー(IA32)上のLinuxシステムで、クラスター全域から使える共有ファイル・システムが必要。2.4.29、2.4.24、2.2.13用がある。2.6.11用は開発中。

OpenSSI

OpenSSIも、その名の通り、シングル・システム・イメージ・クラスタリング製品である。ホームページでは、「可用性・拡張性・管理性を標準サーバーで」と謳っている。クラスター運用中にノードの挿抜が可能。Mosixのプロセス・マイグレーション機構を採用し、クラスター内のCPU負荷を動的に分散させることができる。スレッド化プロセスの移動も可能。

主要な特徴の一つにクラスター全域の単一ルート・ファイル・システムがある。ext2とext3のファイル・システムを任意のノードにマウントすると自動的にスタックされ、直ちにクラスターのすべてのノードからそのマウント・ポイントが見えるようになる。クラスターの全ノードにLinuxディストリビューションをインストールする必要はない。したがって、1つのノードにディストリビューションをインストールしOpenSSIをそのノードにセットアップすれば、ほかのノードはネットワーク・ブートするだけでクラスターに追加できる。

プロセス管理は完成の域にあり堅牢だ。プロセスはクラスター・レベルで管理され、固有のPIDを持ち、プロセス間通信(IPC)はクラスター・レベルで可能。

MPICH、LAMPI、HP MPI、openPBSなど、多くのオープンソース・ハイパフォーマンス・コンピュータ(HPC)ミドルウェア製品で動作を確認済み。また、LTSP(Linux Terminal Server Project)、Apache (1.3, 2.0)、Jakarta Tomcat 4/5、BEA WebLogic Server 9、NDB Cluster付きMySQL StandardまたはMySQL Max、Sybase、PostgreSQL、Sendmail、Postfix、Dovecot、SpamAssassin、ClamAVなど、多様なサーバーでの動作も確認されている。基本的にカーネル2.4と2.6で動作するサーバーなら利用可能。

OpenSSIで一番大きな制約は、クラスター当たりの最大ノード数が125という点だ。OpenSSIは、現在、Fedora、Debian、Red Hat 9用がある。SUSE 9.2向けは作業中。

Gluster

GNUクラスタリング・プラットフォームGlusterはスーパーコンピューティングとスーパーストレージの普及を目的とするクラスター・ディストリビューションだ。HPCクラスタリング、ストレージ・クラスタリング、エンタープライズ・プロビジョニング、データベース・クラスタリングなど、特定用途向けアプリケーションを開発するためのプラットフォームを提供する。

インテルIA32またはx86-64、RAM 512MB以上のシステムで動作する。ディストリビューションには依らず、Debian、Fedora、Ubuntu、Red Hat、Slackware、Scientificなど、広範なディストリビューションで動作確認済み。ISOイメージが提供されており、ダウンロードしてブータブルCDを作ることができる。

ハイパフォーマンス・コンピューティング向けGlusterHPC、システム・プロビジョニングと自動プラットフォーム管理向けGlusterEPなど、特定用途向けクラスター・アプリケーションに同梱する形で提供されている。クラスター・ファイル・システムとしては、GlusterFSがあり、ペタバイトにまで拡張可能だ。

Glusterで優れた点の一つは、Pythonスクリプトのエクステンションの形で機能を拡張できることだろう。各エクステンションは2つのファイルから成る。仕様ファイルはエクステンションのメタ情報で、管理者の氏名、エクステンションの種類、アプリケーション/ライブラリー/ツールの別などを記述する。エクステンションの実体は.tgz形式のアーカイブに格納され、エクステンションをインストールする際に抽出展開される。エクステンション自体は、シェル・スクリプトまたはバイナリーPythonスクリプトで記述する。

BOINC

手元にあるコンピューター・システムでクラスターを構成できない場合は、BOINCが利用できる。これをLinuxサーバーに設定すると、世界中のボランティアにプロジェクトへの参加を呼びかけ、システム・リソースを提供してもらうことができる。参加は、サーバーとリソース提供者間を仲介するBOINCクライアントをダウンロードしてセットアップするだけだ。

BOINCはSETI@homeプロジェクトから生まれたもので、世界中の400,000台以上のコンピュータ上で動作し、全体で613.851TeraFLOPSという膨大な処理速度を持っている(BOINCstatsによる)。

インテルx86互換プロセッサー上のMicrosoft Windows(95以降)とLinux、Motorola PowerPCまたはインテル上のMac OS、SPARC互換プロセッサー上のSolaris 2.7以降など、多くのプラットフォーム向けBOINCプログラムが提供されており、それらのシステムを相互につなぐことができる。

BOINCサーバーとクライアント間のデータ・フローは、商用インターネット接続を介して流れる。中には速度の遅い接続もあるため、1日に1ギガバイトを超えるデータが発生するあるいは処理するような応用には向かない。

まとめ

コンピューターの高速クラスターを作るのは決してたやすい事ではない。しかし、今や、クラスター管理用のオープンソース・ソフトウェアが、プロプライエタリ・ソフトウェアを駆逐しつつある。

ここに紹介したプロジェクト以外にもPVMOSCARGrid Engineなどのオープンソース・クラスタリング製品がある。各製品には、クラスター上で実行するアプリケーションに応じて得て不得手がある。

NewsForge.com 原文