6.2 サーバー・プール・クラスタ

Oracle VMはOracle OCFS2とともに動作して、OCFS2ファイル・システムに存在するサーバー・プール・リソースへの共有アクセスを提供します。クラスタ化が有効なサーバー・プールに属するOracle VM Serverで実行されている仮想マシンの高可用性(HA)を実現するには、この共有アクセス機能が重要です。

OCFS2は、Linux用のクラスタ・ファイル・システムであり、複数のノード(Oracle VM Server)による同じディスクへの同時アクセスを可能にします。パフォーマンスとHAの両方を提供するOCFS2は、多くのクラスタ対応アプリケーションまたは共有ファイル・システム機能が必要なアプリケーションで使用されます。Oracle VMでは、OCFS2によって、同じサーバー・プールに属するOracle VM Serverが、制御された方法で共有リポジトリ内のリソースに対してアクセスまたは修正行うことが保証されます。

OCFS2ソフトウェアには、標準のファイル・システム・インタフェースおよび動作セマンティクスを提供するコア・ファイル・システムおよび共有ディスク・クラスタ機能をサポートするコンポーネントが含まれます。共有ディスク・コンポーネントは、ほとんどの場合カーネルに存在し、O2CBクラスタ・スタックと呼ばれます。これには、次のものが含まれます。

また、OCFS2では、OCFS2コンポーネントを調べてトラブルシューティングするためのサーバー・プールも提供されます。OCFS2の詳細は、次の場所にあるOCFS2のマニュアルを参照してください。

http://oss.oracle.com/projects/ocfs2/documentation/

Oracle VMでは、記憶域リポジトリがオフラインの場合でもクラスタを使用できるように、記憶域リポジトリとクラスタが分離されます。ハートビート・デバイスを1つ失っても、Oracle VM Serverによる自己フェンシングは強制されません。

サーバー・プールの作成時に、次の利点があるクラスタ機能をアクティブにすることを選択できます。

サーバー・プール・クラスタを構成してサーバー・プールでHAを有効にするには、サーバー・プールの作成または編集時に「Clustered Server Pool」チェック・ボックスを選択します。サーバー・プールの作成および編集の詳細は、6.7項「サーバー・プールの作成」および6.8.3項「サーバー・プールの編集」を参照してください。

サーバー・プールの作成時に、次を指定します。

サーバー・プールの作成時、その新しいサーバー・プールに指定されたサーバー・プール・ファイル・システムは、OCFS2ファイル・システムとしてアクセスされ、フォーマットされます。このフォーマットによって、グローバル・ディスク・ハートビートの領域を含め、ファイル・システムにいくつかの管理領域が作成されます。サーバー・プール・ファイル・システムは、そのファイル・システムがNFS共有、FC LUNまたはiSCSI LUNとしてOracle VM Serverによってアクセスされるかどうかにかかわらず、OCFS2ファイル・システムとしてフォーマットされます。

仮想IPアドレスは、サーバー・プールでマスターとして設計されているサーバーと通信するためにOracle VM Managerで使用されます。マスターが変更されると、Oracle VM Managerがマスターと継続して通信できるように仮想IPアドレスが新しいマスターに転送されます。

次の手順では、新しく作成したサーバー・プールにOracle VM Serverを追加します。Oracle VM Serverを追加すると、Oracle VMは次の操作を実行します。

  1. マスターOracle VM Serverを選択します。

  2. プールの作成時に選択した仮想IPアドレスを仮想ネットワーク・インタフェースとしてマスターOracle VM Serverの管理インタフェースの上部に構成します。

  3. クラスタ構成ファイルおよびクラスタ・タイムアウト・ファイルを作成します。

  4. 構成ファイルをサーバー・プール内のすべてのOracle VM Serverにプッシュします。

  5. クラスタを起動します。

クラスタ内の各Oracle VM Serverで、クラスタ構成ファイルは/etc/ocfs2/cluster.conf、クラスタ・タイムアウト・ファイルは/etc/sysconfig/o2cbにあります。

クラスタを起動すると、クラスタ内の各Oracle VM Serverでサーバー・サービスおよびサーバー・プロセスがアクティブになります。表6.1「クラスタ・サービス」に、最も重要なプロセスおよびサービスを示します。

表6.1 クラスタ・サービス

サービス

説明

02net

o2netプロセスでは、TCP/IPイントラ・クラスタ・ノードの通信チャネルがポート7777に作成され、ノードが動作しているかどうかを検証するために通常のキープ・アライブ・パッケージがクラスタ内の各ノードに送信されます。イントラ・クラスタ・ノードの通信では、クラスタ・ハートビート・ロールを持つネットワークが使用されます。デフォルトでは、これがサーバー管理ネットワークです。ただし、この機能用に別のネットワークを作成できます。クラスタ・ハートビート・ロールの詳細は、5.2項「ネットワークの使用」を参照してください。クラスタ内の各Oracle VM Serverのファイアウォールでハートビート・ネットワーク上のネットワーク・トラフィックが許可されていることを確認してください。デフォルトでは、インストール後にOracle VM Serverのファイアウォールは無効になっています。

o2hb-diskid

また、サーバー・プール・クラスタでは、ディスク・ハートビート・チェックも使用されます。o2hbプロセスは、クラスタのグローバル・ディスク・ハートビート・コンポーネントを処理します。ハートビート機能では、サーバー・プール・ファイル・システムの非表示領域内のファイルが使用されます。各プール・メンバーによって、動作していることを示す書込みがこの領域の独自のブロックに2秒おきに行われます。また、動作しているノードのマップをメンテナンスするために領域の読込みも行われます。サーバー・プール・メンバーのブロックが更新されなくなると、Oracle VM Serverは停止しているとみなされます。Oracle VM Serverが停止すると、そのOracle VM Serverはフェンシングされます。強制的にフェンシングを行うことで、停止しているメンバーをサーバー・プールから削除し、フェンシングされたOracle VM Serverのリソースへのアクセスが、アクティブなプール・メンバーの妨げにならないようにします。

o2cb

o2cbサービスはクラスタ操作の中心となります。Oracle VM Serverを起動すると、o2cbサービスが自動的に起動されます。共有リポジトリを正常にマウントするには、このサービスが稼働している必要があります。

ocfs2

ocfs2サービスは、ファイル・システムの操作を行います。このサービスも自動的に起動されます。

ocfs2_dlmおよびocfs2_dlmfs

DLMモジュール(ocfs2_dlm、ocfs2_dlmfs)およびプロセス(user_dlm、dlm_thread、dlm_wq、dlm_reco_threadなど)は分散ロックマネージャの一部です。

OCFS2では、クラスタ全体でのリソースに対するロックの追跡および管理にDLMが使用されます。これは、クラスタ内の各Oracle VM Serverが対象とするリソースのロック情報のみを保持するため、分散と呼ばれます。Oracle VM Serverがクラスタ内のリソースに対するロック(仮想マシンに対するロックなど)を保持している間に停止した場合、サーバー・プール内の残りのOracle VM Serverによって、停止したOracle VM Serverが保持しているロック状態を再構築するための情報が収集されます。


警告

クラスタ構成ファイルの変更、または、クラスタ・サービスの開始および停止を手動で行わないでください。Oracle VM Managerによって、サーバー・プールに属するOracle VM Serverのクラスタが自動的に起動されます。クラスタを手動で構成したり、操作すると、クラスタで障害が発生する場合があります。

共有ディスクにリポジトリを作成すると、OCFS2ファイル・システムが共有ディスクに作成されます。これは、ローカル・リポジトリの場合も同様です。リポジトリ内のリソース(仮想マシン構成ファイル、仮想ディスク、ISOファイル、テンプレートおよびアセンブリなど)は、サーバー・プール全体で安全に共有できます。サーバー・プールのメンバーが停止または終了すると、終了するサーバーが所有するリソースはリカバリされ、サーバー・プールのメンバーのステータスにおける変更がサーバー・プール内の残りのすべてのOracle VM Serverに伝播されます。

図 6.1「OCFS2機能を使用したサーバー・プールのクラスタリング」に、サーバー・プールのクラスタリング、ディスクとネットワークのハートビートおよびクラスタ全体でリソースをロックするDLM機能の使用を示します。

図6.1 OCFS2機能を使用したサーバー・プールのクラスタリング

この図は、クラスタ化されたサーバー・プールがあるOracle VMの構成を示しています。ファイバ・チャネル・ディスク・サブシステム上のアタッチされた共有記憶域とNFSサーバー上のサーバー・プール・ファイルがあります。周辺のテキストは、クラスタリングとOCFS2の機能や特徴を示します。

図6.1「OCFS2機能を使用したサーバー・プールのクラスタリング」は、3つのOracle VM Serverを含むサーバー・プールを表しています。このサーバー・プールに関連付けられるサーバー・プールのファイル・システムは、NFS共有上に存在します。サーバー・プールの作成時に、NFS共有へのアクセスが行われてNFS共有上にディスク・イメージが作成され、このディスク・イメージがOCFS2ファイル・システムとしてフォーマットされます。この技術によって、基礎となる記憶域要素がNFS共有、iSCSI LUNまたはファイバ・チャネルLUNであるかどうかにかかわらず、OCFS2を使用し、同じ方法ですべてのOracle VMのサーバー・プールのファイル・システムにアクセスできます。

サーバー・プールの作成後、Oracle VM Serverがサーバー・プールに追加されます。この時、クラスタ構成が作成され、クラスタの状態はオフライン からハートビートに変わります。最後に、サーバー・プールのファイル・システムがクラスタ内のすべてのOracle VM Serverにマウントされ、クラスタの状態はハートビートからDLM準備完了に変わります。図6.1「OCFS2機能を使用したサーバー・プールのクラスタリング」に示すとおり、ハートビートのリージョンは、クラスタ内のすべてのOracle VM Serverに対してグローバルであり、サーバー・プールのファイル・システムに存在します。Oracle VM環境で最初のサーバー・プールを作成する前に、Oracle VM Server間のプライベート・ネットワーク接続として示されるネットワーク・ハートビートが構成されます。Oracle VM Serverは、ネットワーク・ハートビートを使用して、クラスタ内の他のOracle VM Serverとの通信チャネルを確立し、キープ・アライブ・パケットを送信してチャネルの中断を検出します。

物理記憶域要素上に新しく追加された各リポジトリでは、OCFS2ファイル・システムがリポジトリに作成され、このリポジトリは通常、プール内のすべてのOracle VM Serverに提示されます。図6.1「OCFS2機能を使用したサーバー・プールのクラスタリング」に1つのリポジトリ(リポジトリ3)が示されていますが、このリポジトリにはOracle VM Server 1のみがアクセスできます。このリポジトリにリソースが存在する仮想マシンは、サーバー・プールが提供する高可用性機能を利用できません。

NFS共有に構築されたリポジトリは、OCFS2ファイル・システムとしてフォーマットされないことに注意してください。リポジトリの詳細は、4.8項「記憶域リポジトリの準備および構成」を参照してください。

6.1「OCFS2機能を使用したサーバー・プールのクラスタリング」に、共有リポジトリ1および2にリソースがあるいくつかの仮想マシンが示されています。仮想マシンの作成、起動、停止または移行が行われると、これらの仮想マシンのリソースは、このリソースを必要とするOracle VM Serverによってロックされます。各Oracle VM Serverは、サーバー・プール内のロックされているすべてのリソースのサブセットを管理することになります。リソースには、これに対して複数のロックがある場合があります。同じリソースに同時に複数の読取り専用のロックが存在できますが、リソースへの書込みが予想される場合は排他ロックがリクエストされます。図に示すように、ロックの状態は各Oracle VM Serverのメモリーに保持されます。メモリーに保持されている分散ロック・マネージャ(DLM)の情報は、/dlmにマウントされた、dlmfsと呼ばれる統合ファイル・システムのユーザー領域に公開されます。Oracle VM Serverで障害が発生した場合、そのロックは、クラスタ内の他のOracle VM Serverによってリカバリされ、障害が発生したOracle VM Serverで実行されている仮想マシンはクラスタ内の別のOracle VM Serverで再起動されます。Oracle VM Serverがハートビートを介してクラスタと通信しなくなった場合は、このOracle VM Serverをクラスタから強制的に削除できます。これはフェンシングと呼ばれます。Oracle VM Serverは、クラスタの一部でなくなったと認識した場合、自身のフェンシングを行うこともできます。Oracle VM Serverでは、マシンをリセットしてフェンシングが行われます。これは、Oracle VM Serverがクラスタに再度参加する最も速い方法です。