クラスタリングというのは、多くの計算ノードを単一ソリューションとして動作するようにまとめ、ネットワーク化するプロセスですが、Linuxを実行するIntelシステムでも非常にポピュラーなものとなっています。片方向あるいは双方向の1.65GHzベースのPOWER5 64プロセッサーを持つIBM eServer OpenPower 710の発表により、POWERベースのクラスターで動作するLinuxが理想的なソリューションとなりました。この記事では、クラスタリングに関する一般的な概念やソフトウェアをまず説明し、その後で、最も一般的なタイプのクラスターである、ハイ・パフォーマンス・クラスターと高可用性クラスターに対してOpenPower 710をどのように利用するかを、例を挙げて説明します。
クラスターは任意の数のコンポーネントから構成され、あるタスクを協調処理します。これから説明するクラスターの例をよく理解できるように、こうしたコンポーネントの概要を説明しておきましょう。
クラスター管理には、一つ以上の管理ノードが、(計算ノードやストレージ・ノードなど)他のノードを監視することによって、クラスター中の各ノードを「見張る」ことが含まれます。管理ノードはまた、他のノードのソフトウェアをアップデートすることにも責任を持ちます。クラスター管理用のツールには、webminのような最小限のものから、IBMのCSM(Cluster System Management)のような大きなパッケージまで、非常に多くの種類があります。こうしたツールの詳細については、 参考文献 の「クラスター管理」にあるリンク先を見てください。
クラスターの監視ノードというのは、ノードの状態を追跡するための、クラスター管理のサブコンポーネントです。ハートビートはクラスター中のノードを監視するためのアプリケーションであり、フェール点を削減するために、独自のプライベート・ネットワークまたはシリアル・リンクで実行している必要があります。ダウンしたノードをハートビート・アプリケーションが検出すると、クラスターの安定性を確保するための適切なアクションがとられます。ハートビートに関して詳しくは、 参考文献 の「監視」の項にあるリンク先を見てください。
Linuxでは、様々なファイルシステムを提供していますが、クラスター環境では、分散ファイルシステムが最適パフォーマンスを発揮します。一部の分散ファイルシステムでは、クラスター中の全ノードからの同時データ・アクセスと高可用性が組み込まれていますが、それはこうした機能がクラスター環境では理想的であるためです。一般的な分散ファイルシステムとしては、IBMのGPFS(General Parallel File System)やIntermezzo、それにOpenAFSなどがあります。これらに関して詳しくは、 参考文献 の「ファイルシステム」の項にあるリンク先を見てください。
ボリューム管理は、クラスターのストレージ・システムにマイナスの影響を与えずに、ストレージを動的処理する機能です。ボリューム管理が有効となるシナリオとしては、データで一杯になったストレージ・サーバーに対してストレージの追加が必要な場合です。ボリューム管理を使うと、ストレージ・サーバーを妨害することなく、既存のファイルシステムにストレージを追加することができます。ボリューム管理には、LVM(Logical Volume Management)やEVMS(Enterprise Volume Management System)などがあります。さらに詳しくは、 参考文献 の「ボリューム管理」の項にあるリンク先を見てください。
ジョブ管理は、クラスター中のリソース管理を保証するものです。ジョブ管理ソフトウェアは、クラスター中で実行される実行ジョブを管理し、ジョブを実行するために適切なリソースを持つのはどのノードかを判断します。ジョブ管理用のパッケージとしては、BalanceとTorqueという2つがあります。BalanceとTorqueについてさらに詳しくは、 参考文献 の「ジョブ管理」の項にあるリンク先を見てください。
スケジューリングはジョブ管理のサブコンポーネントであり、クラスター中のリソースへのジョブ割り当てを処理します。ハイ・パフォーマンスのクラスターでは、複雑な計算処理を行う際に全ノードに渡ってCPU利用率を最大化することが重要なため、スケジューリングには高い優先度が与えられています。Condor やMauiは、Linuxで使用できるスケジューラーの例です。さらに詳しくは、 参考文献 の「スケジューラー」の項にあるリンク先を見てください。
メッセージ受け渡しは、ハイ・パフォーマンス・クラスターのノード間でのデータ受け渡しが効率的に行われるように処理します。MPI(Message Passing Interface)はライブラリーの仕様定義として、並列コンピューティングの概念を利用したアプリケーションの書き方を記述しています。MpichはMPIを使うソフトウェア・パッケージであり、効率的な並列コンピューティングを実現します。MPIとMpichについて詳しくは、 参考文献 の「メッセージ受け渡し」の項にあるリンク先を見てください。
OpenPower 710は、POWER5プロセッサー・ベースの64ビット・アーキテクチャーとSMT機能によって、ハイ・パフォーマンス・クラスターへの理想的なソリューションとなります。この例では、クラスターで実行するハイ・パフォーマンス・アプリケーションとして、Linpackベンチマーク・スイートを使います。ここで注目すべきクラスターコンポーネントは、ノード管理と監視、そしてスケジューリングです。
この例で説明するハイ・パフォーマンス・クラスターは、5台のOpenPower 710サーバーから構成され、そのうち1台が管理ノード、その他は計算ノードです。クラスターのパフォーマンス・テストとしてハイ・パフォーマンス・アプリケーションのパッケージをインストールする代わりに、Linpackベンチマークがインストールされています。Linpackベンチマークは大量の難解な線形方程式を解くように設計されています。このベンチマークの並列実装に関するリンクを 参考文献 に挙げておきます。
CSMソフトウェアは管理ノード上で実行され、ノード管理に関して、単一の制御点となります。管理ノードと計算ノードは、「management(省略してMgmt)」ネットワークを通して通信します。「management」ネットワークは、 図1 に示すようにeth1で実行するプライベート・ネットワークです。各計算ノードの定義は管理ノード上にあります。CSMによって、各計算ノードにインストールすべき一連のアプリケーションの定義が柔軟にできるようになります。これを利用して、必要な形式のハイ・パフォーマンス・ソフトウェアをサポートすべく調整を行うことができます。計算ノードへのインストールが完了すると、管理ノードは計算ノードを監視し、またCSMが提供する機能を使って、計算ノードに対してソフトウェア・アップデートを行います。
図1. ハイ・パフォーマンス・クラスター
並列コンピューティングには、高速処理のために大量のデータを組み合わせ、そのデータを各計算ノードに分散させる、という作業が伴います。ここでは図1で示すように、MPI(Message Passing Interface)ライブラリー仕様に従ってノード間のデータ受け渡しを行います。Linpackベンチマークの並列版では、MPIライブラリーがインストールされていることが必要です。この例ではMPICHパッケージ( 参考文献 にリンクがあります)を使っています。
計算ノード間での通信は、eth0上で実行されるプライベート・ネットワークである「compute」ネットワークで行われます(図1)。ハイ・パフォーマンス・クラスターでは、いつ計算ノードがフェールしたか、また期待されるパフォーマンスが未達成なのはいつかを知ることが絶対的に必要なため、監視は非常に重要です。この例ではハートビート・アプリケーションがインストールされており、シリアル・リンクを通して、クラスター中のノード間で実行されています。ここではフェール点を減らすために、シリアル・リンクを選びました。
これで、並列構成されたLinpackベンチマークを実行する、小さな、ハイ・パフォーマンス・クラスターが構成できたことになります。もし計算ノードがクラッシュした場合には、管理ノードがそれをログにとります。ですから、実行されたベンチマークは正確ではないものの、フェールした計算ノードを回復するための適切なアクションが取られていることは知ることができます。そのノードが回復して再び動作するようになれば、ベンチマークに戻って結果を解析できるのです。
高可用性(HA)クラスターは、何らかの原因でコンポーネントがフェールした場合により信頼性の高いシステム機能を提供できるだけの、充分なリソースを持っています。この例では、マスター・ノードとバックアップ・ノード、そして管理ノード、という3つのノードから成る、単純なHAクラスターを取り上げます。マスター・ノードとバックアップ・ノードは、IBM DS4500ストレージ・サーバーに接続されています。このクラスターは、小規模なWebサーバー提供環境として非常に典型的なものです。
HAクラスターでは冗長性が鍵となるため、この例で致命的に重要なのは、ノード管理と分散ファイルシステム、ボリューム管理、そして監視です。この例では2台のOpenPower 710モジュールを、1台をプライマリー・サーバーとして、もう1台をバックアップ・サーバーとして使うことによって、どのようにフォールト・トレランス(耐障害性)を実現するかを示します。また、プライマリー・サーバーがダウンしていないかどうかを検出するために、監視ソフトウェアを使用しています。
先に説明したハイ・パフォーマンス・クラスターの場合と同じく、管理ノードにはCSMをインストールします。管理ノードは、eth1で実行しているプライベートの管理ネットワークを通して、マスター・ノードとバックアップ・ノードに接続されています(図2)。管理ノードはマスター・ノードとバックアップ・ノードの両方をインストールし、必要なソフトウェア・アップデートを行います。
図2. 高可用性クラスター
ハートビート・パッケージは、ノード監視を行うソフトウェアを提供します。フェール点の数を減らすため、監視対象となるノードへのリンクには、ネットワーク接続ではなく、シリアル接続が使われています。ハートビートは、マスター・ノードがダウンした場合にはバックアップ・ノードに切り替わるように設定されています。ハートビート・アプリケーションの動作説明としては、これはかなり高位レベルなものですが、より詳しい情報は High-Availability Linux Project Website に説明されています。
GPFSは、DS4500ストレージ・サーバー上で実行する分散ファイルシステムです。ストレージ・サーバーは、高速myrinetまたはファイバー・チャネルによって、マスター・ノードとバックアップ・ノードに接続されています(図2)。GPFSとDS4500の組み合わせによって、ディスク・フェールの場合に備えた冗長なストレージ・サブシステムが提供されています。GPFSを使うと、マスター・ノードとバックアップ・ノードの両方が、クラスター中の全ファイルに対して同時アクセスできるようになります。
ボリューム管理は、このクラスターにLVMをインストールすることで行います。LVMを使うと、実行しているクラスターへのサービスを中断することなく、DS4500にストレージを動的に追加したり取り除いたりできるようになります。例えば、Webコンテンツを保存しているファイルシステムが一杯になった場合に、既存データに影響を与えることなく、別のディスクをファイルシステムに追加できます。
これで、マスター・ノードのフェールを処理するために必要なコンポーネントが、すべて揃ったことになります。マスター・ノードが動作していないことをハートビート・アプリケーションが発見すると、適切にネットワーク設定されたバックアップ・ノードがアクティブになります。この時点でバックアップ・ノードはWebサーバー環境を提供するようになり、外部の、ルーティング可能なネットワークからは、何のフェールも見えません。その間にマスター・ノードのメンテを行い、なぜダウンしたかを解析することができます。
64ビットPOWER5プロセッサー・ベースのOpenPower 710は、高可用性、ハイ・パフォーマンスのクラスターを構築する上での理想的なソリューションです。また、現在入手可能なLinuxクラスタリング・ソフトウェアのほとんどは64ビットPOWER5アーキテクチャーに移植されているため、このエントリー・レベルのサーバーが、POWERベース・クラスター上のLinuxソリューションに向けての安価な64ビット・プラットフォームとなっています。
文書テンプレートを提供してくださり、また丁寧な見直しを行ってくださったLinda Kinnunenと、この文書の技術内容チェックをしてくださったBrent BaudeとSteve Dibbellに感謝いたします。
-
クラスター管理
-
監視
-
ファイルシステム
-
ボリューム管理
-
ジョブ管理
-
スケジューラー
-
メッセージ受け渡し
-
Linpack benchmark
は、大量の難解な線形方程式を解くために設計されています。
-
Linux on POWER ISV Resource Center
は、POWER上のLinuxで実行するアプリケーションの実用化や推進に関心のある独立ソフトウェア・ベンダーのためのIBMのサイトです。
-
Powerアーキテクチャー・ベースのシステムでLinux用ソフトウェアの開発や評価を行っているアプリケーションやシステムのプログラマー、独立ソフトウェア・ベンダー、またIBMのビジネス・パートナーには、豊富な資料が
Linux on POWER Architecture developer's corner
に用意されていますので、ご覧ください。
-
developerWorksの
Linuxゾーン
には、Linux開発者のための資料が他にも豊富に取り揃えられています。
-
developerWorks blogs
に参加して、developerWorksのコミュニティーに加わってください。
-
Developer BookstoreのLinuxセクションでは、
Linux関係の書籍が割引で購入できます
ので、ぜひご利用ください。