仮想化: 物理クラスターと仮想クラスター
クラスターに複数の仮想マシンを展開するには、管理と構成について、いくつかの特別な手法が必要になります。
Kai Hwang、Jack Dongarra、Geoffrey Fox
出典: 『Distributed and Cloud Computing: From Parallel Processing to the Internet of Things』(Syngress、2011 年)
クラスタリングは、高可用性を維持するための効果的な手法です。また、仮想化テクノロジと組み合わせると、効果、柔軟性、およびコスト効率がさらに高くなります。仮想クラスターは、1 つ以上の物理クラスターに分散されたサーバーにインストールされた仮想マシン (VM) で構成されています。仮想クラスターにある VM は、複数の物理ネットワークを結ぶ仮想ネットワークによって論理的に相互接続されています。
仮想クラスターは、物理コンピューターまたは複数の物理クラスターでホストされている VM によって形成されています。仮想クラスターへの VM のプロビジョニングは、動的に行われ、次の特徴があります。
- 仮想クラスター ノードには、物理コンピューターまたは VM のいずれかを使用できます。1 台の物理ノードに異なる OS を実行する複数の VM を展開できます。
- VM では、VM が実装されている物理コンピューターのリソースを管理するゲスト OS (多くの場合、ホスト OS とは異なる OS) を実行します。
- VM を使用する目的は、複数の機能を 1 台のサーバーに統合することです。機能を統合すると、サーバーの使用率とアプリケーションの柔軟性が大幅に向上します。
- 分散型の並行処理、フォールト トレランス、および障害復旧を促進するために、VM は複数のサーバーに移動またはレプリケートできます。
- ピア ツー ピア ネットワークでオーバーレイ ネットワークのサイズが異なるのと同じように、仮想クラスターのサイズ (ノード数) は、動的に増減させることができます。
- いずれかの物理ノードで障害が発生すると、そのノードにインストールされている一部の VM が使用できなくなる可能性があります。ただし、VM で発生した障害が、ホスト システムに影響を及ぼすことはありません。
仮想化された高性能なコンピューター環境では、多数の物理コンピューター ノード (仮想クラスター) で実行している VM を効率的に管理する必要があります。これには、仮想クラスターの展開と監視、および大規模なクラスターの管理が含まれます。リソースのスケジュール、負荷分散、サーバーの統合、フォールト トレランスなど他の手法も適用する必要があります。仮想クラスター システムでは、多数の VM のイメージを効率的に格納することが重要になります。
OS レベルまたはユーザー レベルのプログラミング ライブラリなど、大部分のユーザーやアプリケーションに共通するインストール コンポーネントがあります。このようなソフトウェア パッケージは、テンプレート (テンプレート VM) としてインストールできます。これらのテンプレートを使用して、独自のソフトウェア スタックを構築することができます。テンプレート VM から新しい OS のインスタンスをコピーすることもできます。新しい OS のインスタンスには、プログラミング ライブラリやアプリケーションなど、ユーザー固有のコンポーネントを事前にインストールすることができます。
物理コンピューター (ホスト システム) と VM (ゲスト システム) では、異なる OS を実行できます。各 VM は、リモート サーバーにインストールしたり、同じ物理クラスターまたは別の物理クラスターに属する複数のサーバーにレプリケートすることができます。VM ノードを追加、削除、または動的に移動することで、仮想クラスターの境界は、時間の経過と共に変化します。
高速な展開と効率的なスケジュール
設計する仮想環境は、高速な展開に対応できる必要があります。この場合、展開には 2 つの意味があります。1 つは、できるだけ速くクラスター内の物理ノードにソフトウェア スタック (OS、ライブラリ、アプリケーション) を構築および分散することです。もう 1 つは、実行環境をある仮想クラスターから別の仮想クラスターに迅速に切り替えることです。あるユーザーがシステムを使い終わったら、対応する仮想クラスターはシャットダウンされるか操作を一時停止して、他のユーザーが使用している他の VM を実行するためにリソースを取っておく必要があります。
最近、"グリーン コンピューティング" という概念は、多くの注目を集めています。ただし、これまでのアプローチは、1 台のワークステーション レベルで電力コストを削減することに重点を置いており、広い視野を欠いていました。そのため、必ずしもクラスター全体の電力消費量を削減するとは限りませんでした。
クラスター全体に対する電力効率を上げる手法は、同種のワークステーションと特定のアプリケーションにしか適用できませんでした。VM のライブ マイグレーションでは、ノード間でワークロードを移動できます。ただし、ライブ マイグレーションは、VM をランダムに移行することを保証するものではありません。
VM のライブ マイグレーションによって生じる潜在的なオーバーヘッドを無視することはできません。このオーバー ヘッドは、クラスターの使用状況、スループット、およびサービスの質に深刻な悪影響を及ぼすおそれがあります。そのため、クラスターのパフォーマンスに影響を及ぼさないグリーン コンピューティングを実装する移行戦略を設計する方法を特定することが課題となります。
仮想化がクラスタリングにもたらす別のメリットは、仮想クラスターでアプリケーションの負荷分散を行えることです。負荷指標とユーザー ログインの頻度を使用して、負荷分散した状態を実現できます。このモデルに基づいて、仮想クラスターの自動スケールアップ/スケールダウン メカニズムを実装できます。
結果として、モード リソースの使用率を上げて、システムの応答時間を短縮することができます。VM を最適な物理ノードにマップするとパフォーマンスが向上します。VM のライブ マイグレーションによってノード間の負荷を動的に調整することは、クラスター ノードのワークロードのバランスに偏りが生じた場合に有益です。
高性能な仮想ストレージ
テンプレート VM をクラスターの複数の物理ホストに分散して、VM をカスタマイズすることができます。既存のソフトウェア パッケージを使用して、カスタマイズにかかる時間を短縮することもできます。ここで重要になるのは、テンプレート ソフトウェア パッケージが占有するディスク領域を効率的に管理することです。ストレージ アーキテクチャを入念に設計し、仮想クラスターの分散ファイル システムの重複するブロックを削減し、ハッシュ値を使用してデータ ブロックのコンテンツを比較します。
ユーザーは、ユーザー固有の仮想クラスターに配置されている対応する VM のデータ ブロック ID を格納する独自のプロファイルを保有しています。ユーザーが対応するデータを変更すると、新しいデータ ブロックが作成されます。新しく作成されたデータ ブロックは、ユーザー プロファイルで認識されます。
ターゲット クラスターに複数の VM を展開する基本的な手順は次の 4 つです。
- ディスク イメージを準備する。
- VM を構成する。
- 展開先のノードを選択する。
- すべてのホストで VM の展開コマンドを実行する。
多くのシステムでは、テンプレートを使用して、ディスク イメージを準備するプロセスを簡略化しています。テンプレートは、OS があらかじめインストールされたディスク イメージで、アプリケーション ソフトウェアがインストールされているかどうかは、イメージによって異なります。ユーザーは、ニーズに応じて適切なテンプレートを選択し、コピーを作成して、自分が使用するディスク イメージとします。
テンプレートでは、コピー オン ライト (COW) 形式を使用できます。新しい COW 形式のバックアップ ファイルは、非常に小さく、簡単に作成して転送できます。そのため、使用するディスク領域は、間違いなく少なくなります。また、イメージの生ファイル全体をコピーするよりも大幅に効率が向上することで、VM の展開にかかる時間も短縮されます。
すべての VM は、名前、ディスク イメージ、ネットワークの設定、割り当てられた CPU とメモリで構成されています。すべての VM の構成はファイルに記録する必要があります。ただし、多数の VM を管理する場合、構成をファイルに記録するのは非効率です。同じ構成の VM では、事前に編集したプロファイルを使用して、このプロセスを簡略化できます。システムでは、指定のプロファイルに基づいて VM を構成します。
多くの構成項目では、同じ設定を使用します。UUID、VM 名、IP アドレスなど、一部の項目は、計算値を使用して自動的に割り当てられます。また、多くの場合、ユーザーにとって、VM が、どのホストで実行されているかは問題ではありません。
VM の展開先ホストを選択する戦略について検討するときには、展開に関する一般的な原則と、どのホストが VM の容量のニーズを満たすかに留意してください。また、ホスト ネットワークでワークロードを分散することも忘れないようにしてください。このようにすると、利用できるリソースとワークロードの間で効率的にバランスを取ることができます。
Kai Hwang は、南カリフォルニア大学のコンピューター エンジニアリングの教授であり、中国の清華大学の客員教授長でもあります。彼は、カリフォルニア大学バークレー校で EECS (電気工学およびコンピューター サイエンス) の博士号を取得しました。コンピューター アーキテクチャ、デジタル演算、並列処理、分散システム、インターネット セキュリティ、およびクラウド コンピューティングに関して幅広い執筆活動を行っています。
Jack Dongarra は、テネシー大学の電気工学およびコンピューター サイエンスの特別教授で、オークリッジ国立研究所の特別研究員、マンチェスター大学の招聘研究員でもあります。彼は、スーパーコンピューターのベンチマーク、数値分析、線形代数ソルバー、および高性能コンピューティングの分野における先駆者で、これらの分野に関して幅広い執筆活動を行っています。
Geoffrey Fox は、インディアナ大学の情報科学、コンピューティング、および物理学の特別教授で、情報科学およびコンピューティング研究科の副学部長でもあります。彼は、英国のケンブリッジ大学で博士号を取得しました。並行アーキテクチャ、分散プログラミング、グリッド コンピューティング、Web サービス、およびインターネット アプリケーションについての包括的な研究と幅広い執筆活動でよく知られています。
©2011 Elsevier Inc. All rights reserved. Syngress (Elsevier の事業部) の許可を得て掲載しています。Copyright 2011. 『Distributed and Cloud Computing: From Parallel Processing to the Internet of Things』(Kai Hwang、Jack Dongarra、Geoffrey Fox 著)この書籍と類似書籍の詳細については、elsevierdirect.com (英語) を参照してください。