Sun Cluster の概念 (Solaris OS 版)

第 3 章 重要な概念 - システム管理者とアプリケーション開発者

この章では、Sun Cluster 環境のソフトウェアコンポーネントに関する重要な概念について説明します。この章の情報は、主に Sun Cluster API および SDK を使用するシステム管理者およびアプリケーション開発者向けです。クラスタの管理者にとっては、この情報は、クラスタソフトウェアのインストール、構成、管理についての予備知識となります。アプリケーション開発者は、この情報を使用して、作業を行うクラスタ環境を理解できます。

この章の内容は次のとおりです。

管理インタフェース

複数のユーザーインタフェースから Sun Cluster ソフトウェアをインストール、構成、および管理する方法を選択できます。Sun Cluster Manager のグラフィカルユーザーインタフェース (GUI) またはコマンドラインインタフェースのいずれかによって、システム管理作業を実行できます。コマンド行インタフェースでは、特定のインストール作業や構成作業を容易にする scinstall clsetup などのユーティリティーが使用できます。Sun Cluster ソフトウェアには、Sun Management Center の一部として実行される、特定のクラスタ作業に GUI を提供するモジュールもあります。 このモジュールを使用できるのは、SPARC ベースのクラスタに限られます。管理インタフェースについての詳細は、『Sun Cluster のシステム管理 (Solaris OS 版)』「管理ツール」を参照してください。

クラスタ内の時間

クラスタ内のすべての Solaris ホスト間の時刻は同期をとる必要があります。クラスタホストの時刻と外部の時刻ソースの同期をとるかどうかは、クラスタの操作にとって重要ではありません。Sun Cluster ソフトウェアは、時間情報プロトコル (Network Time Protocol、NTP) を使用し、ホスト間のクロックの同期をとっています。

通常、システムクロックが数分の 1 秒程度変更されても問題は起こりません。しかし、システムクロックと時刻の起点の同期をとるために、daterdatexntpdate を (対話形式または cron スクリプト内で) アクティブクラスタに対して実行すると、これよりも大幅な時刻変更を強制的に行うことが可能です。ただしこの強制的な変更を行った場合、ファイル修正時刻の表示に問題が生じたり、NTP サービスに混乱が生じる可能性があります。

Solaris オペレーティングシステムを各クラスタホストにインストールする場合は、ホストのデフォルトの時刻と日付の設定を変更できます。通常は、工場出荷時のデフォルト値を使用します。

scinstall コマンドを使用して Sun Cluster ソフトウェアをインストールする場合は、インストールプロセスの手順の 1 つとして、クラスタの NTP を構成します。Sun Cluster ソフトウェアは、ntp.cluster というテンプレートファイルを提供しています (インストールされたクラスタホストの /etc/inet/ntp.cluster を参照)。このテンプレートは、すべてのクラスタホスト間で対等関係を確立します。1 つのホストは「優先ホスト」になります。ホストはプライベートホスト名で識別され、時刻の同期化がクラスタインターコネクト全体で行われます。NTP 用のクラスタの構成方法については、『Sun Cluster ソフトウェアのインストール (Solaris OS 版)』の第 2 章「グローバルクラスタノードへのソフトウェアのインストール」を参照してください。

また、クラスタの外部に 1 つまたは複数の NTP サーバーを設定し、ntp.conf ファイルを変更してその構成を反映させることもできます。

通常の操作では、クラスタの時刻を調整する必要はありません。ただし、Solaris オペレーティングシステムをインストールしたときに設定された誤った時刻を変更する場合の手順については、『Sun Cluster のシステム管理 (Solaris OS 版)』の第 8 章「クラスタの管理」を参照してください。

高可用性フレームワーク

Sun Cluster ソフトウェアでは、ユーザーとデータ間の「パス」にあるすべてのコンポーネント、つまり、ネットワークインタフェース、アプリケーション自体、ファイルシステム、および多重ホストデバイスを高可用性にします。一般に、システムで単一 (ソフトウェアまたはハードウェア) の障害が発生してもあるクラスタコンポーネントが稼働し続けられる場合、そのコンポーネントは高可用性であると考えられます。

次の表は Sun Cluster コンポーネント障害の種類 (ハードウェアとソフトウェアの両方) と高可用性フレームワークに組み込まれた回復の種類を示しています。

表 3–1 Sun Cluster の障害の検出と回復のレベル

障害が発生したクラスタリソース 

ソフトウェアの回復 

ハードウェアの回復 

データサービス 

HA API、HA フレームワーク 

なし 

パブリックネットワークアダプタ 

IP ネットワークマルチパス 

複数のパブリックネットワークアダプタカード 

クラスタファイルシステム 

一次複製と二次複製 

多重ホストデバイス 

ミラー化された多重ホストデバイス 

ボリューム管理 (Solaris Volume Manager および Veritas Volume Manager) 

ハードウェア RAID-5 (Sun StorEdgeTM A3x00 など)

広域デバイス 

一次複製と二次複製 

デバイス、クラスタトランスポート接続点への多重パス 

プライベートネットワーク 

HA トランスポートソフトウェア 

ハードウェアから独立した多重プライベートネットワーク 

ホスト 

CMM、フェイルファーストドライバ 

複数ホスト 

ゾーン 

HA API、HA フレームワーク 

なし 

Sun Cluster ソフトウェアの高可用性フレームワークは、ノードの障害をすばやく検出して、クラスタ内の残りのノードにあるフレームワークリソース用に新しい同等のサーバーを作成します。どの時点でもすべてのフレームワークリソースが使用できなくなることはありません。障害が発生したノードの影響を受けないフレームワークリソースは、回復中も完全に使用できます。さらに、障害が発生したノードのフレームワークリソースは、回復されると同時に使用可能になります。回復されたフレームワークリソースは、ほかのすべてのフレームワークリソースが回復するまで待機する必要はありません。

最も可用性の高いフレームワークリソースは、そのリソースを使用するアプリケーション (データサービス) に対して透過的に回復されます。フレームワークリソースのアクセス方式は、ノードの障害時にも完全に維持されます。アプリケーションは、フレームワークリソースサーバーが別のノードに移動したことを認識できないだけです。1 つのノードで障害が発生しても、残りのノード上にあるプログラムがそのノードのファイル、デバイス、およびディスクボリュームを使用できるので、その障害は完全に透過的と言えます。別のホストからそのディスクに代替ハードウェアパスが設定されている場合に、このような透過性が実現されます。この例としては、複数ホストへのポートを持つ多重ホストデバイスの使用があります。

ゾーンメンバーシップ

また、Sun Cluster ソフトウェアはゾーンがいつ起動または停止するかを検出することによって、ゾーンメンバーシップを追跡します。こうした変化も再構成の原因となります。再構成によって、クラスタ内のノード間にクラスタリソースを再配置できます。

クラスタメンバーシップモニター

データが破壊から保護されるように保証するには、すべてのノードが、クラスタメンバーシップに対して一定の同意に達していなければなりません。必要であれば、CMM は、障害に応じてクラスタサービス (アプリケーション) のクラスタ再構成を調整します。

CMM は、クラスタのトランスポート層から、他のノードへの接続に関する情報を受け取ります。CMM は、クラスタインターコネクトを使用して、再構成中に状態情報を交換します。

CMM は、クラスタメンバーシップの変更を検出すると、それに合わせてクラスタを構成します。このような同期構成では、クラスタの新しいメンバーシップに基づいて、クラスタリソースが再配布されることがあります。

フェイルファースト機構

フェイルファースト」機構では、グローバルクラスタ投票ノードまたはグローバルクラスタ非投票ノードのいずれかにおける重大な問題が検出されます。フェイルファーストで問題が検出されたときに、Sun Cluster が取る措置は、問題が投票ノードで発生するか非投票ノードで発生するかによって異なります。

重大な問題が投票ノードで発生した場合、Sun Cluster は強制的にノードを停止させます。Sun Cluster は次にノードをクラスタメンバーシップから削除します。

重大な問題が非投票ノードで発生した場合、Sun Cluster は非投票ノードを再起動します。

ノードは、ほかのノードとの接続を失うと、通信が可能なノードとクラスタを形成しようとします。そのセットのノードが定足数に達しない場合、Sun Cluster ソフトウェアはノードを停止して、共有ディスクからノードをフェンスします。つまり、ノードの共有ディスクへのアクセスを遮ります。

フェンシングは、選択したディスクまたはすべてのディスクに対してオフにできます。


注意 – 注意 –

不適切な状況でフェンシングを無効にすると、アプリケーションのフェイルオーバー時にデータが破損する危険性が高くなります。フェンシングの無効化を検討する場合には、データ破損の可能性を十分に調査してください。SATA (Serial Advanced Technology Attachment) ディスクなど、共有記憶装置が SCSI プロトコルに対応していない場合、またはクラスタの外部にあるホストからクラスタの記憶装置へのアクセスを許可する場合にフェンシングをオフにします。


1 つまたは複数のクラスタ固有のデーモンが停止すると、Sun Cluster ソフトウェアは重大な問題が発生したことを宣言します。Sun Cluster ソフトウェアは、投票ノードと非投票ノードの両方でクラスタ固有のデーモンを実行します。重大な問題が発生すると、Sun Cluster はノードを停止して削除するか、問題が発生した非投票ノードを再起動します。

非投票ノードで実行されるクラスタ固有のデーモンが失敗すると、次のようなメッセージがコンソールに表示されます。


cl_runtime: NOTICE: Failfast: Aborting because "pmfd" died in zone "zone4" (zone id 3)
35 seconds ago.

投票ノードで実行されるクラスタ固有のデーモンが失敗し、ノードでパニックが発生すると、次のようなメッセージがコンソールに表示されます。


panic[cpu1]/thread=2a10007fcc0: Failfast: Aborting because "pmfd" died in zone "global" (zone id 0)
35 seconds ago.
409b8 cl_runtime:__0FZsc_syslog_msg_log_no_argsPviTCPCcTB+48 (70f900, 30, 70df54, 407acc, 0)
%l0-7: 1006c80 000000a 000000a 10093bc 406d3c80 7110340 0000000 4001 fbf0

パニック後、Solaris ホストは再起動し、ノードはクラスタに再び参加しようとすることがあります。あるいは、SPARC ベースのシステムで構成されているクラスタの場合、そのホストは OpenBoot PROM (OBP) プロンプトのままになることがあります。ホストがどちらのアクションをとるかは、auto-boot? パラメータの設定によって決定されます。OpenBoot PROM の ok プロンプトで、eeprom コマンドにより auto-boot? を設定できます。詳細は、eeprom(1M) のマニュアルページを参照してください。

クラスタ構成レポジトリ (CCR)

CCR は、更新に 2 フェーズのコミットアルゴリズムを使用します。 更新はすべてのクラスタメンバーで正常に終了する必要があり、そうしないと、その更新はロールバックされます。CCR はクラスタインターコネクトを使用して、分散更新を適用します。


注意 – 注意 –

CCR はテキストファイルで構成されていますが、CCR ファイルは絶対に自分では編集しないでください。各ファイルには、ノード間の一貫性を保証するための検査合計レコードが含まれています。CCR ファイルを自分で更新すると、ノードまたはクラスタ全体の機能が停止する可能性があります。


CCR は、CMM に依存して、定足数 (quorum) が確立された場合にのみクラスタが実行されるように保証します。CCR は、クラスタ全体のデータの一貫性を確認し、必要に応じて回復を実行し、データへの更新を容易にします。

グローバルデバイス

Sun Cluster ソフトウェアは、「広域デバイス」を使用して、デバイスが物理的に接続されている場所に関係なく、任意のノードからクラスタ内のすべてのデバイスに対して、クラスタ全体の可用性の高いアクセスを可能にします。通常、広域デバイスへのアクセスを提供中のノードにエラーが発生すると、Sun Cluster ソフトウェアは自動的にこのデバイスへの別のパスを見つけます。Sun Cluster ソフトウェアは、アクセスをこのパスにリダイレクトさせます。Sun Cluster 広域デバイスには、ディスク、CD-ROM、テープが含まれます。しかし、Sun Cluster ソフトウェアがサポートする多重ポート広域デバイスはディスクだけです。つまり、CD-ROM とテープは現在、高可用性のデバイスではありません。各サーバーのローカルディスクも多重ポート化されていないため、可用性の高いデバイスではありません。

クラスタは、クラスタ内の各ディスク、CD-ROM、テープデバイスに一意の ID を自動的に割り当てます。この割り当てによって、クラスタ内の任意のノードから各デバイスに対して一貫したアクセスが可能になります。広域デバイス名前空間は、/dev/global ディレクトリにあります。詳細は、「広域名前空間」を参照してください。

多重ポート広域デバイスは、1 つのデバイスに対して複数のパスを提供します。多重ホストディスクは複数の Solaris ホストによってホストされるデバイスグループの一部であるため、多重ホストディスクの可用性は高くなります。

デバイス ID と DID 疑似ドライバ

Sun Cluster ソフトウェアは、DID 疑似ドライバと呼ばれる構造によって広域デバイスを管理します。このドライバを使用して、多重ホストディスク、テープドライブ、CD-ROM を含め、クラスタ内のあらゆるデバイスに一意の ID を自動的に割り当てます。

DID 疑似ドライバは、クラスタの広域デバイスアクセス機能における重要な部分です。DID ドライバは、クラスタのすべてのノードを探索して、一意のデ バイスのリストを作成し、クラスタのすべてのノードで一貫している一意のメジャー番号およびマイナー番号を各デバイスに割り当てます。広域デバイスへのアクセスは、ディスクを示す c0t0d0 などの従来の Solaris デバイス ID ではなく、(DID ドライバが割り当てた) この一意のデバイス ID を利用して行われます。

この方法により、ディスクにアクセスするすべてのアプリケーション (ボリュームマネージャーまたは raw デバイスを使用するアプリケーションなど) は、一貫したパスを使用してクラスタ全体にアクセスできます。各デバイスのローカルメジャー番号およびマイナー番号は Solaris ホストによって異なり、Solaris デバイス命名規則も変更する可能性があるため、この一貫性は、多重ホストディスクにとって特に重要です。たとえば、Host1 は多重ホストディスクを c1t2d0 と識別し、Host2 は同じディスクをまったく異なるディスクとして、つまり、c3t2d0 と識別する場合があります。ホストはこのような名前の代わりに、DID ドライバが割り当てた広域名 (d10 など) を使用します。つまり、DID ドライバは多重ホストディスクへの一貫したマッピングを各ホストに提供します。

cldevice コマンドでデバイス ID を更新して管理します。詳細は、 cldevice(1CL) の マニュアルページを参照してください。

デバイスグループ

Sun Cluster ソフトウェアでは、多重ホストデバイスをすべてSun Cluster ソフトウェアで管理する必要があります。最初に多重ホストディスク上にボリュームマネージャーのディスクグループ (Solaris Volume Managerのディスクセットまたは Veritas Volume Manager ディスクグループのいずれか) を作成します。次に、ボリュームマネージャーのディスクグループを「デバイスグループ」として登録します。デバイスグループは、広域デバイスの一種です。さらに、Sun Cluster ソフトウェアは、個々のディスクデバイスやテープデバイスごとに raw デバイスグループを自動的に作成します。ただし、これらのクラスタデバイスグループは、広域デバイスとしてアクセスされるまではオフラインの状態になっています。

この登録によって、Sun Cluster ソフトウェアは、どの Solaris ホストがどのボリュームマネージャーディスクグループへのパスをもっているかを知ることができます。この時点でそのボリュームマネージャーデバイスグループは、クラスタ内で広域アクセスが可能になります。あるデバイスグループが複数のホストから書き込み可能 (マスター) な場合は、そのデバイスグループに格納されるデータは、高度な可用性を有することになります。高度な可用性を備えたデバイスグループには、クラスタファイルシステムを格納できます。


注 –

デバイスグループは、リソースグループとは別のものです。あるノードは、データサービスプロセスのグループを表すリソースグループをマスターすることができます。別のノードは、データサービスによりアクセスされているディスクグループをマスターすることができます。ただし、もっとも良い方法は、特定のアプリケーションのデータを保存するデバイスグループと、アプリケーションのリソース (アプリケーションデーモン) を同じノードに含むリソースグループを維持することです。デバイスグループとリソースグループの関係についての詳細は、『Sun Cluster データサービスの計画と管理 (Solaris OS 版)』「リソースグループとデバイスグループの関係」を参照してください。


あるノードがディスクデバイスグループを使用するとき、ボリュームマネージャーのディスクグループは実際に使用するディスクに対してマルチパスサポートを提供するため、そのディスクグループは「広域」になります。多重ホストディスクに物理的に接続された各クラスタホストは、デバイスグループへのパスを提供します。

デバイスグループのフェイルオーバー

ディスク格納装置は複数の Solaris ホストに接続されるため、現在デバイスグループをマスターしているホストに障害が生じた場合でも、代替パスによってその格納装置にあるすべてのデバイスグループにアクセスできます。デバイスグループをマスターするホストの障害は、回復と一貫性の検査を実行するために要する時間を除けば、デバイスグループへのアクセスに影響しません。この時間の間は、デバイスグループが使用可能になるまで、すべての要求は (アプリケーションには透過的に) 阻止されます。

図 3–1 フェイルオーバー前後のデバイスグループ

図 : この図については、前の本文中で説明しています。

多重ポートデバイスグループ

この節では、多重ポートディスク構成において性能と可用性をバランスよく実現するディスクデバイスグループのプロパティーについて説明します。Sun Cluster ソフトウェアには、多重ポートディスク構成を設定するためのプロパティーが 2 つあります。 つまり、preferencednumsecondaries です。preferenced プロパティーは、フェイルオーバーの発生時に各ノードがどの順で制御を取得するかを制御します。numsecondaries プロパティーは、特定のデバイスグループに対する二次ノードの数を設定します。

高可用性サービスは、主ノードが停止し、かつ、主ノードになる資格のある二次ノードが存在しないときに、完全に停止したと見なされます。preferenced プロパティーが true に設定されている場合、 サービスのフェイルオーバーが発生すると、ノードリストの順序に従って二次ノードが選択されます。ノードリストは、ノードが主制御を引き受ける順序、またはスペアから二次への移行を引き受ける順序を決めます。clsetup コマンドを使用して、デバイスサービスの優先順序を動的に変更できます。従属サービスプロバイダ (広域ファイルシステムなど) に関連する設定は、デバイスサービスの設定と同じになります。

主ノードは、正常な運用時に二次ノードのチェックポイントをとります。多重ポートディスク構成では、二次ノードのチェックポイントをとるたびに、クラスタの性能の低下やメモリーのオーハーヘッドの増加が発生します。スペアノードのサポートが実装されているのは、このようなチェックポイントによる性能の低下やメモリーのオーバーヘッドを最小限に抑えるためです。デフォルトでは、デバイスグループには 1 つの主ノードと 1 つの二次ノードがあります。残りのプロバイダノードはスペアノードです。フェイルオーバーが発生すると、二次ノードが主ノードになり、ノードリスト上でもっとも優先順位の高い (スペア) ノードが二次ノードになります。

二次ノードの望ましい数には、任意の整数 (1 から、デバイスグループ内の動作可能な主ノード以外のプロバイダノードの数まで) を設定できます。


注 –

Solaris Volume Manager を使用している場合、 numsecondariesプロパティーにデフォルト以外の数字を設定するには、まず、デバイスグループを作成する必要があります。


デバイスサービスの二次ノードのデフォルト数は 1 です。望ましい数とは、複製フレームワークによって維持される二次プロバイダノードの実際の数です。ただし、動作可能な主ノード以外のプロバイダノードの数が望ましい数よりも小さい場合を除きます。ノードを構成に追加したり、ノードを構成から切り離す場合は、numsecondaries プロパティーを変更したあと、ノードリストを十分に確認する必要があります。ノードリストと二次ノードの数を正しく保つことによって、構成されている二次ノードの数と、フレームワークによって与えられている実際の数の不一致を防げます。

広域名前空間

広域デバイスを有効にする Sun Cluster ソフトウェアの機構は、「広域名前空間」です。広域名前空間には、ボリューム管理ソフトウェアの名前空間とともに、/dev/global/ 階層が含まれます。広域名前空間は、多重ホストディスクとローカルディスクの両方 (および CD-ROM やテープなどのほかのクラスタデバイスすべて) を反映して、多重ホストディスクへの複数のフェイルオーバーパスを提供します。多重ホストディスクに物理的に接続された各 Solaris ホストは、クラスタ内のすべてのノードの記憶装置に対するパスを提供します。

Solaris Volume Manager の場合、ボリュームマネージャーの名前空間は、通常、 /dev/md/diskset/dsk (と rdsk) ディレクトリにあります。Veritas VxVM の場合、 ボリュームマネージャーの名前空間は /dev/vx/dsk/disk-group ディレクトリと /dev/vx/rdsk/disk-group ディレクトリにあります。これらの名前空間は、クラスタ全体でインポートされている Solaris Volume Manager の各ディスクセットと VxVM の各ディスクグループのディレクトリから構成されます。これらの各ディレクトリには、そのディスクセットまたはディスクグループ内の各メタデバイスまたはボリュームのデバイスホストが格納されています。

Sun Cluster ソフトウェアでは、ローカルボリュームマネージャーの名前空間内の各デバイスホストは /global/.devices/node@nodeID ファイルシステム内のデバイスホストへのシンボリックリンクに置き換えられます。nodeID は、クラスタ内のノードを表す整数です。Sun Cluster ソフトウェアは、その標準的な場所に引き続きシンボリックリンクとしてボリューム管理デバイスも表示します。広域名前空間と標準ボリュームマネージャー名前空間は、どちらも任意のクラスタノードから使用できます。

広域名前空間には、次の利点があります。

ローカル名前空間と広域名前空間の例

次の表は、多重ホストディスク c0t0d0s0 でのローカル名前空間と広域名前空間のマッピングを示したものです。

表 3–2 ローカル名前空間と広域名前空間のマッピング

コンポーネントまたはパス 

ローカルホスト名前空間  

広域名前空間 

Solaris 論理名 

/dev/dsk/c0t0d0s0

/global/.devices/node@nodeID /dev/dsk/c0t0d0s0

DID 名 

/dev/did/dsk/d0s0

/global/.devices/node@nodeID/dev/did/dsk/d0s0

Solaris Volume Manager 

/dev/md/diskset/dsk/d0

/global/.devices/node@nodeID /dev/md/diskset/dsk/ d0

Veritas Volume Manager 

/dev/vx/dsk/disk-group/v0

/global/.devices/node@nodeID /dev/vx/dsk/disk-group /v0

広域名前空間はインストール時に自動的に生成されて、再構成再起動のたびに更新されます。広域名前空間は、cldevice コマンドを使用して生成することもできます。詳細は、 cldevice(1CL) のマニュアルページを参照してください。

クラスタファイルシステム

クラスタファイルシステムには、次の機能があります。

広域デバイスにファイルシステムをマウントするとき、広域にマウントする場合は mount -g を使用し、ローカルにマウントする場合は mount を使用します。

プログラムは、同じファイル名 (たとえば、/global/foo) によって、クラスタ内のすべてのノードからクラスタファイルシステムのファイルにアクセスできます。

クラスタファイルシステムは、すべてのクラスタメンバーにマウントされます。クラスタファイルシステムをクラスタメンバーのサブセットにマウントすることはできません。

クラスタファイルシステムは、特定のファイルシステムタイプではありません。つまり、クライアントは、実際に使用するファイルシステム (UFS など) だけを認識します。

クラスタファイルシステムの使用法

Sun Cluster ソフトウェアでは、すべての多重ホストディスクがディスクデバイスグループとして構成されています。これは、Solaris Volume Manager のディスクセット、VxVM のディスクグループ、またはソフトウェアベースのボリューム管理ソフトウェアの制御下にない個々のディスクが該当します。

クラスタファイルシステムを高可用性にするには、使用するディスクストレージが複数の Solaris ホストに接続されていなければなりません。したがって、ローカルファイルシステム (ホストのローカルディスクに格納されているファイルシステム) をクラスタファイルシステムにした場合は、高可用性にはなりません。

クラスタファイルシステムは、通常のファイルシステムと同様にマウントできます。


注 –

Sun Cluster ソフトウェアには、クラスタファイルシステムに対する特定の命名規則はありません。しかし、/global/disk-group などのように、同じディレクトリのもとにすべてのクラスタファイルシステムのマウントポイントを作成すると、管理が容易になります。詳細は、『Sun Cluster 3.1 9/04 Software Collection for Solaris OS (SPARC Platform Edition)』と『Sun Cluster のシステム管理 (Solaris OS 版)』を参照してください。


HAStoragePlus リソースタイプ

HAStoragePlus リソースタイプは、ローカルおよび広域ファイルシステム構成を高可用対応にするように設計されています。HAStoragePlus リソースタイプを使用して、ローカルまたは広域ファイルシステムを Sun Cluster 環境に統合し、このファイルシステムを高可用対応にすることができます。

HAStoragePlus リソースタイプを使用すると、ファイルシステムをグローバルクラスタ非投票ノードで利用可能にすることができます。HAStoragePlus リソースタイプを使用してこのようにするには、グローバルクラスタ投票ノードとグローバルクラスタ非投票ノードにマウントポイントを作成してください。ファイルシステムをグローバルクラスタ非投票ノードで利用可能にするために、HAStoragePlus リソースタイプは、まずグローバルクラスタ投票ノードにあるファイルシステムをマウントします。このリソースタイプは、次にグローバルクラスタ非投票ノードでループバックマウントを実行します。


注 –

Sun Cluster システムでは、次のクラスタファイルシステムをサポートします。


HAStoragePlus リソースタイプは、確認、マウント、およびマウントの強制解除などの追加のファイルシステム機能を提供します。これらの機能により、Sun Cluster はローカルのファイルシステムをフェイルオーバーすることができます。 フェイルオーバーを行うには、アフィニティースイッチオーバーが有効になった広域ディスクグループ上にローカルファイルシステムが存在していなければなりません。

HAStoragePlus リソースタイプの使用法については、『Sun Cluster データサービスの計画と管理 (Solaris OS 版)』「高可用性ローカルファイルシステムの有効化」を参照してください。

HAStoragePlus リソースタイプを使用して、リソースとリソースが依存するデバイスグループの起動を同期化することができます。詳細は、「リソース、リソースグループ、リソースタイプ」を参照してください。

syncdir マウントオプション

syncdir マウントオプションは、実際に使用するファイルシステムとして UFS を使用するクラスタファイルシステムに使用できます。ただし、syncdir を指定しない場合、パフォーマンスは大幅に向上します。syncdir を指定した場合、POSIX 準拠の書き込みが保証されます。syncdir を指定しない場合、NFS ファイルシステムの場合と同じ動作となります。たとえば、syncdir を指定しないと、場合によっては、ファイルを閉じるまでスペース不足条件を検出できません。syncdir (および POSIX 動作) を指定すると、スペース不足条件は書き込み動作中に検出されます。syncdir を指定しない場合に問題が生じることはほとんどありません。

SPARC ベースのクラスタを使用している場合、VxFS には、UFS の syncdir マウントオプションと同等なマウントオプションはありません。VxFS の動作は syncdir マウントオプションを指定しない場合の UFS と同じです。

広域デバイスとクラスタファイルシステムの FAQ については、「ファイルシステムに関する FAQ」を参照してください。

ディスクパスの監視

現在のリリースの Sun Cluster ソフトウェアは、ディスクパス監視機能 (DPM) をサポートします。この節では、DPM、DPM デーモン、およびディスクパスを監視するときに使用する管理ツールについての概念的な情報を説明します。ディスクパスの状態を監視、監視解除、および確認する手順については、『Sun Cluster のシステム管理 (Solaris OS 版)』を参照してください。

DPM の概要

DPM は、二次ディスクパスの可用性を監視することによって、フェイルオーバーおよびスイッチオーバーの全体的な信頼性を向上させます。リソースを切り替える前には、cldevice コマンドを使用して、そのリソースが使用しているディスクパスの可用性を確認します。cldevice コマンドのオプションを使用すると、単一の Solaris ホストまたはクラスタ内のすべての Solaris ホストへのディスクパスを監視できます。コマンド行オプションの詳細は、cldevice(1CL) のマニュアルページを参照してください。

次の表に、DPM コンポーネントのデフォルトのインストール場所を示します。

場所 

コンポーネント 

デーモン 

/usr/cluster/lib/sc/scdpmd

コマンド行インタフェース 

/usr/cluster/bin/cldevice

デーモン状態ファイル (実行時に作成される) 

/var/run/cluster/scdpm.status

マルチスレッド化された DPM デーモンは各ホスト上で動作します。DPM デーモン (scdpmd) はホストの起動時に rc.d スクリプトによって起動されます。問題が発生した場合、DPM デーモンは pmfd によって管理され、自動的に再起動されます。以下で、最初の起動時に scdpmd がどのように動作するかについて説明します。


注 –

起動時、各ディスクパスの状態は UNKNOWN に初期化されます。


  1. DPM デーモンは、以前の状態ファイルまたは CCR データベースから、ディスクパスとノード名の情報を収集します。CCR についての詳細は、「クラスタ構成レポジトリ (CCR)」を参照してください。DPM デーモンの起動後、指定したファイルから監視すべきディスクのリストを読み取るように DPM デーモンに指示できます。

  2. DPM デーモンは通信インタフェースを初期化して、デーモンの外部にあるコンポーネント (コマンド行インタフェースなど) からの要求に応えます。

  3. DPM デーモンは scsi_inquiry コマンドを使用して、監視リストにある各ディスクパスに 10 分ごとに ping を送信します。各エントリはロックされるため、通信インタフェースは監視中のエントリの内容にアクセスできなくなります。

  4. DPM デーモンは 、UNIX の syslogd コマンドを使用して Sun Cluster イベントフレームワークにパスの新しい状態を通知して、ログに記録します。詳細は、syslogd(1M) のマニュアルページを参照してください。


注 –

このデーモンに関連するすべてのエラーは pmfd で報告されます。API のすべての関数は、成功時に 0 を戻し、失敗時に -1 を戻します。


DPM デーモンは、Solaris I/O マルチパス (MPxIO) (従来の Sun StorEdge Traffic Manager)、Sun StorEdge 9900 Dynamic Link Manager、EMC PowerPath などのマルチパスドライバを通じて、論理パスの可用性を監視します。このようなマルチパスドライバは物理パスの障害を DPM デーモンから隠すため、DPM デーモンはマルチパスドライバが管理する物理パスを監視できません。

ディスクパスの監視

この節では、クラスタ内のディスクパスを監視するための 2 つの方法について説明します。1 つめの方法は cldevice コマンドを使用する方法です。このコマンドを使用すると、クラスタ内のディスクパスの状態を監視、監視解除、または表示できます。このコマンドを使用して故障したディスクのリストを印刷し、ファイルからディスクパスを監視することもできます。詳細は、cldevice(1CL) のマニュアルページを参照してください。

2 つめの方法は、Sun Cluster Manager の GUI (Graphical User Interface) を使用してクラスタ内のディスクパスを監視する方法です。Sun Cluster Manager は、クラスタ内の監視しているディスクをトポロジビューで表示します。このトポロジビューは 10 分ごとに更新され、失敗した ping の数が表示されます。Sun Cluster Manager の GUI が報告する情報と cldevice コマンドを組み合わせて使用すると、ディスクパスを管理できます。Sun Cluster Manager については、『Sun Cluster のシステム管理 (Solaris OS 版)』の第 12 章「グラフィカルユーザーインタフェースによる Sun Cluster の管理」を参照してください。

cldevice コマンドを使用したディスクパスの監視と管理

cldevice コマンドを使用して、次の作業を実行できます。

任意のアクティブなノードから、ディスクパス引数を付けて cldevice コマンドを発行することによって、そのクラスタ上で DPM 管理作業を実行できます。ディスクパス引数はノード名とディスク名からなります。ノード名は不要です。ノード名を指定しない場合、デフォルトですべてのノードが影響を受けます。次の表に、ディスクパスの命名規約を示します。


注 –

必ず、UNIX のディスクパス名ではなく、広域ディスクパス名を指定してください。これは、広域ディスクのパス名がクラスタ全体で一貫しているためです。UNIX のディスクパス名にはこの性質はありません。たとえば、あるノードでディスクパス名を c1t0d0 にして、別のノードで c2t0d0 にすることができます。ノードに接続されたデバイスの広域ディスクパス名を調べるには、DPM コマンドを発行する前に cldevice list コマンド を使用します。詳細は、cldevice(1CL) のマニュアルページを参照してください。


表 3–3 ディスクパス名の例

名前型 

ディスクパス名の例 

説明 

広域ディスクパス  

schost-1:/dev/did/dsk/d1

schost-1 ノード上のディスクパス d1

 

all:d1

クラスタのすべてのノードでのディスクパス d1

UNIX ディスクパス  

schost-1:/dev/rdsk/c0t0d0s0

schost-1 ノード上のディスクパス c0t0d0s0

 

schost-1:all

schost-1 ノードでのすべてのディスクパス

すべてのディスクパス 

all:all

クラスタのすべてのノードでのすべてのディスクパス 

Sun Cluster Manager によるディスクパスの監視

Sun Cluster Manager を使用すると、次のような DPM の基本的な管理作業を実行できます。

Sun Cluster Manager のオンラインヘルプでは、ディスクパスの管理方法の手順について説明しています。

clnode set コマンドを使用して、ディスクパスエラーを管理する

すべての監視対象ディスクパスでエラーが発生した際のノードの自動再起動を有効化または無効化するには、clnode set コマンドを使用します。Sun Cluster Manager を使用してこれらの作業を実行することもできます。

定足数と定足数デバイス

この節には、次のトピックが含まれます。


注 –

Sun Cluster ソフトウェアが定足数デバイスとしてサポートする特定のデバイスの一覧については、Sun のサービスプロバイダにお問い合わせください。


クラスタノードはデータとリソースを共有しており、複数のアクティブなパーティションがあるとデータが壊れる恐れがあるのでクラスタは決して複数のアクティブなパーティションに一度に分割しないでください。クラスタメンバーシップモニター (Cluster Membership Monitor、CMM) および定足数アルゴリズムにより、たとえクラスタ接続がパーティション分割されている場合でも、いつでも同じクラスタのインスタンスが 1 つだけは動作していることが保証されます。

定足数と CMM の概要については、『Sun Cluster の概要 (Solaris OS 版)』「クラスタメンバーシップ」を参照してください。

クラスタのパーティション分割からは、次の 2 種類の問題が発生します。

Split brain は、ノード間のクラスタ接続が失われ、クラスタがサブクラスタにパーティション分割されるときに起きます。あるパーティションのノードはほかのパーティションのノードと通信できないため、各パーティションは自分が唯一のパーティションであると認識します。

amnesia は、停止したクラスタが、停止時よりも古いクラスタ構成データに基づいて再起動されたときに発生します。この問題は、最後に機能していたクラスタパーティションにないノード上のクラスタを起動するときに起きる可能性があります。

Sun Cluster ソフトウェアは、split brain と amnesia を次の操作により回避します。

過半数の投票数を持つパーティションは、定足数を獲得し、動作可能になります。この過半数の投票メカニズムにより、クラスタ内に 3 つ以上のノードが構成されているときに split brain と amnesia を防ぐことができます。ただし、クラスタ内に 3 つ以上のノードが構成されている場合、ノードの投票数を数えるだけでは十分ではありません。しかし、2 ホストクラスタでは過半数が 2 であるため、このような 2 ホストクラスタがパーティション分割された場合、いずれかのパーティションが定足数を獲得するために外部投票が必要です。この外部からの投票は「定足数デバイス」によって行われます。

定足数投票数について

clquorum show コマンドを使って、次の情報を調べます。

詳細は、 cluster(1CL) のマニュアルページを参照してください。

ノードおよび定足数デバイスの両方がクラスタへの投票に数えられ、定足数を満たすことができます。

ノードは、ノードの状態に応じて投票に数えられます。

定足数デバイスは、デバイスに伴う投票数に基づいて、投票に数えられます。定足数デバイスを構成するとき、Sun Cluster ソフトウェアは定足数デバイスに N-1 の投票数を割り当てます (N は定足数デバイスに伴う投票数)。たとえば、2 つのノードに接続された、投票数がゼロ以外の定足数デバイスの投票数は 1 (2-1) になります。

定足数デバイスは、次の 2 つの条件のうちの 1 つを満たす場合に投票に数えられます。

定足数デバイスの構成は、クラスタをインストールするときに行うか、あるいはあとで、『Sun Cluster のシステム管理 (Solaris OS 版)』の第 6 章「定足数の管理」で説明されている手順に従って行います。

定足数の構成について

次に、定足数の構成について示します。

回避すべき定足数の構成例については、「望ましくない定足数の構成」を参照してください。推奨される定足数の構成例については、「推奨される定足数の構成」を参照してください。

定足数デバイス要件の順守

Sun Cluster ソフトウェアがご使用のデバイスを定足数デバイスとしてサポートしていることを確認します。この要件を無視すると、クラスタの可用性が損なわれる場合があります。


注 –

Sun Cluster ソフトウェアが定足数デバイスとしてサポートする特定のデバイスの一覧については、Sun のサービスプロバイダにお問い合わせください。


Sun Cluster ソフトウェアは、次の種類の定足数デバイスをサポートしています。


注 –

レプリケートされたデバイスは定足数デバイスとして使用できません。


2 ホスト構成では、1 つのホストに障害が起きてももう 1 つのホストが動作を継続できるように、少なくとも 1 つの定足数デバイスを構成する必要があります。詳細は、図 3–2 を参照してください。

回避すべき定足数の構成例については、「望ましくない定足数の構成」を参照してください。推奨される定足数の構成例については、「推奨される定足数の構成」を参照してください。

定足数デバイスのベストプラクティスの順守

以下の情報を使用して、ご使用のトポロジに最適な定足数の構成を評価してください。

回避すべき定足数の構成例については、「望ましくない定足数の構成」を参照してください。推奨される定足数の構成例については、「推奨される定足数の構成」を参照してください。

推奨される定足数の構成

この節では、推奨される定足数の構成例を示します。回避すべき定足数の構成例については、「望ましくない定足数の構成」を参照してください。

2 ホスト構成の定足数

2 ホストのクラスタを形成するには、2 つの定足投票数が必要です。これらの 2 つの投票数は、2 つのクラスタホスト、または 1 つのホストと 1 つの定足数デバイスのどちらかによるものです。

図 3–2 2 ホスト構成

図: 2 つのホストに接続された 1 つの定足数デバイスを持つホスト A およびホスト B を示しています。

2 ホストより大きな構成での定足数

クラスタに 3 つ以上のホストが含まれている場合、定足数デバイスを持たない 1 つのホストに障害が発生してもクラスタはその影響を受けないので、定足数デバイスは必要ありません。ただし、このような条件下では、クラスタ内に過半数のホストがないとクラスタを起動できません。

3 つ以上のホストを含むクラスタに定足数デバイスを追加できます。ホストおよび定足数デバイスの投票数を含め、パーティションが定足投票数の過半数を獲得している場合、そのパーティションはクラスタとして存続できます。したがって、定足数デバイスを追加する場合は、定足数デバイスを構成するかどうか、および定足数デバイスの構成先を選択するときに、発生する可能性があるホストおよび定足数デバイスの障害を考慮するようにしてください。

図: 構成 1: HostA-D。A/B が (->) QD1 に接続。C/D -> QD2。構成 2: HostA-C。A/C -> QD1。B/C -> QD2。構成 3: HostA-C -> 1 つの QD。

変則的な定足数の構成

図 3–3 では、Host AHost B でミッションクリティカルなアプリケーション (Oracle データベースなど) を実行していると仮定します。Host AHost B を使用できず、共有データにアクセスできない場合、クラスタ全体を停止させる必要がある場合があります。停止させない場合、この構成は高可用性を提供できないため、最適な構成とはなりません。

この例外に関するベストプラクティスについては、「定足数デバイスのベストプラクティスの順守」を参照してください。

図 3–3 変則的な構成

図: HostA-D。Host A/B は QD1-4 に接続。HostC は QD4 に接続。HostD は QD4 に接続。合計投票数 = 10。定足数に必要な投票数 = 6。

望ましくない定足数の構成

この節では、回避すべき定足数の構成例を示します。推奨される定足数の構成例については、「推奨される定足数の構成」を参照してください。

図: 構成 1: HostA-B。A/B は -> QD1/2 に接続。構成 2: HostA-D。A/B -> QD1/2。構成 3: HostA-C。A/B-> QD1/2 & C -> QD2。

データサービス

データサービス」という用語は、Oracle や Sun Java System Web Server など、単一のサーバーではなく、クラスタで動作するように構成されたアプリケーションを意味します。データサービスは、アプリケーション、専用の Sun Cluster 構成ファイル、および、アプリケーションの次のアクションを制御する Sun Cluster 管理メソッドからなります。

データサービスタイプについては、『Sun Cluster の概要 (Solaris OS 版)』「データサービス」を参照してください。

図 3–4 に、単一のアプリケーションサーバーで動作するアプリケーション (単一サーバーモデル) と、クラスタ 動作する同じアプリ ーション (クラスタサーバーモデル) との比較を示します。これら 2 つの構成の唯一の違いは、クラスタ化されたアプリケーションの動作がより速くなり、その可用性もより高くなることです。

図 3–4 標準的なクライアントサーバー構成とクラスタ化されたクライアントサーバー構成

図 : この図については次に説明します。

単一サーバーモデルでは、特定のパブリックネットワークインタフェース (ホスト名) を介してサーバーにアクセスするようにアプリケーションを構成します。ホスト名はその物理サーバーに関連付けられています。

クラスタサーバーモデルでは、パブリックネットワークインタフェースは、論理ホスト名または共有アドレスです。「ネットワークリソース」は、論理ホスト名と共有アドレスの両方を表します。

一部のデータサービスでは、ネットワークインタフェースとして論理ホスト名か共有アドレスのいずれかを指定する必要があります。論理ホスト名と共有アドレスは相互に交換できません。しかし、別のデータサービスでは、論理ホスト名や共有アドレスをどちらでも指定することができます。どのようなタイプのインタフェースを指定する必要があるかどうかについては、各データサービスのインストールや構成の資料を参照してください。

ネットワークリソースは、特定の物理サーバーと関連付けられているわけではありません。ネットワークリソースは、ある物理サーバーから別の物理サーバーに移すことができます。

ネットワークリソースは、当初、1 つのノード (主ノード) に関連付けられています。主ノードで障害が発生すると、ネットワークリソースとアプリケーションリソースは別のクラスタノード (二次ノード) にフェイルオーバーされます。ネットワークリソースがフェイルオーバーされても、アプリケーションリソースは、短時間の遅れの後に二次ノードで動作を続けます。

図 3–5 に、単一サーバーモデルとクラスタサーバーモデルとの比較を示します。クラスタサーバーモデルのネットワークリソース (この例では論理ホスト名) は、 複数のクラスタノード間を移動できます。アプリケーションは、特定のサーバーに関連付けられたホスト名として、この論理ホスト名を使用するように設定されます。

図 3–5 固定ホスト名と論理ホスト名

図 : この図については、前の本文中で説明しています。

共有アドレスも最初は 1 つのノードに対応付けられます。このノードのことを「広域インタフェースノード」といいます。共有アドレスは「広域インタフェース」といい、クラスタへの単一ネットワークインタフェースとして使用されます。

論理ホスト名モデルとスケーラブルサービスモデルの違いは、スケーラブルサービスモデルでは、各ノードのループバックインタフェースにも共有アドレスがアクティブに構成される点です。この構成では、データサービスの複数のインスタンスをいくつかのノードで同時にアクティブにすることができます。「スケーラブルサービス」という用語は、クラスタノードを追加してアプリケーションの CPU パワーを強化すれば、性能が向上することを意味します。

広域インタフェースノードに障害が発生した場合、共有アドレスは同じアプリケーションのインスタンスが動作している別のノードで起動できます。これによって、このノードが新しい広域インタフェースノードになります。または、共有アドレスを、このアプリケーションを実行していない別のクラスタノードにフェイルオーバーすることができます。

図 3–6 に、単一サーバー構成とクラスタ化されたスケーラブルサービス構成との比較を示します。スケーラブルサービス構成では、共有アドレスがすべてのノードに設定されています。アプリケーションは、特定のサーバーに関連付けられたホスト名として、この共有アドレスを使用するように設定されます。この方式は、フェイルオーバーデータサービスに論理ホスト名を使用する方法と似ています。

図 3–6 固定ホスト名と共有アドレス

図 : この図については、前の本文中で説明しています。

データサービスメソッド

Sun Cluster ソフトウェアでは、一連のサービス管理メソッドを提供しています。これらのメソッドは、リソースグループマネージャー (Resource Group Manager、RGM) の制御下で実行されます。RGM はこれらのメソッドを使用して、クラスタノード上のアプリケーションを開始、停止、および監視します。これらのメソッドとクラスタフレームワークソフトウェアおよび多重ホストデバイスにより、アプリケーションは、フェイルオーバーデータサービスやスケーラブルデータサービスとして機能します。

さらに、RGM は、アプリケーションのインスタンスやネットワークリソース (論理ホスト名と共有アドレス) といったクラスタのリソースを管理します。

Sun Cluster ソフトウェアが提供するメソッドのほかにも、Sun Cluster ソフトウェアは API やいくつかのデータサービス開発ツールを提供します。これらのツールを使用すれば、アプリケーション開発者は、独自のデータサービスメソッドを開発することによって、ほかのアプリケーションを Sun Cluster ソフトウェアの下で高可用性データサービスとして実行できます。

フェイルオーバーデータサービス

データサービスが実行されているノード (主ノード) に障害が発生すると、サービスは、ユーザーによる介入なしで別の作業ノードに移行します。フェイルオーバーサービスは、アプリケーションインスタンスリソースとネットワークリソース (「論理ホスト名」) のコンテナである「フェイルオーバーリソースグループ」を使用します。論理ホスト名は、1 つのノードで構成でき、あとで自動的に元のノードに構成したり、別のノードに構成したりすることができる IP アドレスです。

フェイルオーバーデータサービスでは、アプリケーションインスタンスは単一のノードでのみ実行されます。フォルトモニターは、エラーを検出すると、そのインスタンスを同じノードで再起動しようとするか、別のノードで起動 (フェイルオーバー) しようとします。出力は、データサービスの構成方法によって異なります。

スケーラブルデータサービス

スケーラブルデータサービスは、複数のノードのアクティブインスタンスに対して効果があります。

スケーラブルサービスは、2 つのリソースグループを使用します。

スケーラブルリソースグループは、同時に複数のノードでオンラインにできます。その結果、サービスの複数のインスタンスを一度に実行できます。スケーラブルなリソースグループはすべて負荷分散を使用します。スケーラブルサービスをホストとするすべてのノードは、サービスをホストするための同じ共有アドレスを使用します。共有アドレスのホストとなるフェイルオーバーリソースグループは、一度に 1 つのノードでしかオンラインにできません。

サービス要求は、単一ネットワークインタフェース (広域インタフェース) を通じてクラスタに入ります。これらの要求は、事前に定義されたいくつかのアルゴリズムの 1 つに基づいてノードに分配されます。これらのアルゴリズムは「負荷均衡ポリシー」によって設定されます。クラスタは、負荷均衡ポリシーを使用し、いくつかのノード間でサービス負荷均衡をとることができます。ほかの共有アドレスをホストしている異なるノード上には、複数の広域インタフェースが存在する可能性があります。

スケーラブルサービスの場合、アプリケーションインスタンスはいくつかのノードで同時に実行されます。広域インタフェースのホストとなるノードに障害が発生すると、広域インタフェースは別のノードで処理を続行します。動作していたアプリケーションインスタンスが停止した場合、そのインスタンスは同じノード上で再起動しようとします。

アプリケーションインスタンスを同じノードで再起動できず、別の未使用のノードがサービスを実行するように構成されている場合、サービスはその未使用ノードで処理を続行します。そうしないと、サービスは残りのノード上で動作し続け、サービスのスループットが低下することがあります。


注 –

各アプリケーションインスタンスの TCP 状態は、広域インタフェースノードではなく、インスタンスを持つノードで維持されます。したがって、広域インタフェースノードに障害が発生しても接続には影響しません。


図 3–7 に、フェイルオーバーリソースグループとスケーラブルリソースグループの例と、スケーラブルサービスにとってそれらの間にどのような依存関係があるのかを示します。この例は、3 つのリソースグループを示しています。フェイルオーバーリソースグループには、可用性の高い DNS のアプリケーションリソースと、可用性の高い DNS および可用性の高い Apache Web Server (SPARC ベースのクラスタに限って使用可能) の両方から使用されるネットワークリソースが含まれます。スケーラブルリソースグループには、Apache Web Server のアプリケーションインスタンスだけが含まれます。リソースグループの依存関係は、スケーラブルリソースグループとフェイルオーバーリソースグループの間に存在します (実線)。また、Apache アプリケーションリソースはすべて、共有アドレスであるネットワークリソース schost-2 に依存します (破線)。

図 3–7 SPARC: フェイルオーバーリソースグループとスケーラブルリソースグループの例

図 : この図については、前の本文中で説明しています。

負荷均衡ポリシー

負荷均衡は、スケーラブルサービスのパフォーマンスを応答時間とスループットの両方の点で向上させます。スケーラブルデータサービスには 2 つのクラスがあります。

pure サービスでは、任意のインスタンスがクライアント要求に応答できます。sticky サービスでは、クライアントは同じインスタンスに応答を送信できます。これらの要求は、別のインスタンスには変更されません。

pure サービスは、ウェイト設定した (weighted) 負荷均衡ポリシーを使用します。この負荷均衡ポリシーのもとでは、クライアント要求は、デフォルトで、クラスタ内のサーバーインスタンスに一律に分配されます。負荷は指定されたウェイト値に従って各種のノードに分配されます。たとえば、3 ノードクラスタにおいて、各ノードのウェイトが 1 だとします。各ノードは、そのサービスに対する任意のクライアントからの要求を 1/3 ずつ負担します。クラスタ管理者は、管理コマンドまたは Sun Cluster Manager によって、いつでもウェイト値を変更できます。

ウェイト設定した負荷分散ポリシーは、Load_balancing_weights プロパティーに設定された LB_WEIGHTED 値を使用して設定されます。ウェイトがノードについて明示的に設定されていない場合は、デフォルトで 1 が設定されます。

ウェイト設定したポリシーは、一定の割合のクライアントトラフィックを特定ノードに送るためのものです。たとえば、X=「ウエイト」、A=「すべてのアクティブノードの合計ウエイト」であるとします。アクティブノードは、新しい接続数の合計の約 X/A がこのアクティブノード宛てに送られると予測できます。ただし、接続数の合計は十分に大きな数である必要があります。このポリシーは、個々の要求には対応しません。

このウェイト設定したポリシーは、ラウンドロビンではないことに注意してください。ラウンドロビンポリシーでは、常に、同じクライアントからの要求はそれぞれ異なるノードに送られます。たとえば、1 番目の要求はノード 1 に、2 番目の要求はノード 2 に送られます。

sticky サービスには「ordinary sticky」と「wildcard sticky」の 2 種類があります。

sticky サービスを使用すると、内部状態メモリーを共有でき (アプリケーションセッション状態)、複数の TCP 接続でアプリケーションレベルの同時セッションが可能です。

ordinary sticky サービスを使用すると、クライアントは、複数の同時 TCP 接続で状態を共有できます。このクライアントを、単一ポートで待機するサーバーインスタンスに対して 「sticky」であるといいます。

次の条件を満たす場合、このクライアントはすべての要求が同じサーバーインスタンスに送られることが保証されます。

たとえば、クライアント上の Web ブラウザは、3 つの異なるTCP 接続を使用して、ポート 80 にある共有 IP アドレスに接続します。そして、これらの接続はサービスでキャッシュされたセッション情報をお互いに交換します。

sticky ポリシーを一般化すると、そのポリシーは同じインスタンスの背後でセッション情報を交換する複数のスケーラブルサービスにまで及びます。これらのサービスが同じインスタンスの背後でセッション情報を交換するとき、同じノードで異なるポートと通信する複数のサーバーインスタンスに対して、そのクライアントは「sticky」であるといいます。

たとえば、電子商取引 Web サイトの顧客はポート 80 の HTTP を使用して買い物をします。そして、購入した製品をクレジットカードで支払うときには、ポート 443 の SSL に切り替えて機密データを送ります。

通常の sticky ポリシーでは、ポートの集合が、アプリケーションリソースの構成時に認識されます。このポリシーは、Load_balancing_policy リソースプロパティーの LB_STICKY の値を使用して設定されます。

Wildcard sticky サービスは、動的に割り当てられたポート番号を使用しますが、クライアント要求が同じノードに送りかえされると想定します。クライアントは、同じ IPアドレスを持っているポートに対して「sticky wildcard」であるといいます。

このポリシーの例としては、受動モード FTP があります。たとえば、クライアントはポート 21 の FTP サーバーに接続します。次に、サーバーは、動的ポート範囲のリスナーポートサーバーに接続し直すようにクライアントに指示します。この IP アドレスに対する要求はすべて、サーバーが制御情報によってクライアントに通知した、同じノードに転送されます。

sticky-wildcard ポリシーは、通常の「sticky」ポリシーの上位セットです。IP アドレスによって識別されるスケーラブルサービスでは、ポートはサーバーによって割り当てられます。したがって、事前に認識できません。ポートは変更されることがあります。このポリシーは、Load_balancing_policy リソースプロパティーの LB_STICKY_WILD の値を使用して設定されます。

このような各 sticky ポリシーでは、ウェイト設定した負荷均衡ポリシーがデフォルトで有効です。したがって、クライアントの最初の要求は、負荷均衡によって指定されたインスタンス宛てに送られます。インスタンスが動作しているノードとのアフィニティーをクライアントが確立すると、今後の要求はそのインスタンス宛てに送られます。ただし、そのノードはアクセス可能であり、負荷均衡ポリシーが変更されていない必要があります。

フェイルバック設定

リソースグループは、あるノードから別のノードへ処理を継続します。このようなフェイルオーバーが発生すると、二次ノードが新しい主ノードになります。フェイルバック設定は、本来の主ノードがオンラインに戻ったときの動作を指定します。つまり、本来の主ノードを再び主ノードにする (フェイルバックする) か、現在の主ノードをそのままにするかです。これを指定するには、Failback リソースグループプロパティー設定を使用します。

リソースグループをホストしていた本来の主ノードに障害が発生し、繰り返し再起動する場合は、フェイルバックを設定することよって、リソースグループの可用性が低くなる可能性もあります。

データサービス障害モニター

Sun Cluster の各データサービスには、データサービスを定期的に検査してその状態を判断するフォルトモニターがあります。フォルトモニターは、アプリケーションデーモンが動作しているかどうかや、クライアントにサービスが提供されているかどうかを検証します。探索によって得られた情報をもとに、デーモンの再起動やフェイルオーバーの実行などの事前に定義された処置が開始されます。

新しいデータサービスの開発

Sun が提供する構成ファイルや管理メソッドのテンプレートを使用することで、さまざまなアプリケーションをクラスタ内でフェイルオーバーサービスやスケーラブルサービスとして実行できます。フェイルオーバーサービスやスケーラブルサービスとして実行するアプリケーションが Sun から提供されていない場合は、代わりの方法があります。つまり、Sun Cluster API や DSET API を使用して、フェイルオーバーサービスやスケーラブルサービスとして動作するようにアプリケーションを構成します。しかし、必ずしもすべてのアプリケーションがスケーラブルサービスになるわけではありません。

スケーラブルサービスの特徴

アプリケーションがスケーラブルサービスになれるかどうかを判断するには、いくつかの基準があります。アプリケーションがスケーラブルサービスになれるかどうかを判断する方法については、『Sun Cluster データサービス開発ガイド (Solaris OS 版)』「アプリケーションの適合性の分析」を参照してください。

次に、これらの基準の要約を示します。

データサービス API と DSDL API

Sun Cluster ソフトウェアには、アプリケーションの可用性を高めるものとして次の機能があります。

Sun Cluster ソフトウェアが提供するデータサービスをインストールおよび構成する方法については、『Sun Cluster データサービスの計画と管理 (Solaris OS 版)』を参照してください。Sun Cluster フレームワークでアプリケーションの可用性を高める方法については、Sun Cluster 3.1 9/04 Software Collection for Solaris OS (SPARC Platform Edition)を参照してください。

アプリケーション開発者は、Sun Cluster API を使用することによって、データサービスインスタンスの起動や停止を行なう障害モニターやスクリプトを開発できます。これらのツールを使用すると、アプリケーションをフェイルオーバーまたはスケーラブルデータサービスとして実装できます。Sun Cluster ソフトウェアは「汎用」のデータサービスを提供します。この汎用のデータサービスを使用すれば、簡単に、アプリケーションに必要な起動メソッドと停止メソッドを生成して、データサービスをフェイルオーバーサービスまたはスケーラブルサービスとして実装できます。

クラスタインターコネクトによるデータサービストラフィックの送受信

通常、クラスタには Solaris ホスト間を結ぶ複数のネットワーク接続が必要です。クラスタインターコネクトは、これらの接続から構成されています。

Sun Cluster ソフトウェアは、複数のインターコネクトを使用して、次の目標を達成します。

内部と外部の両方のトラフィック (ファイルシステムのデータやスケーラブルサービスのデータなど) の場合、メッセージはすべての利用できるインターコネクト間で転送されます。クラスタインターコネクトは、ホスト間の通信の可用性を高めるためにアプリケーションから使用することもできます。たとえば、分散アプリケーションでは、個々のコンポーネントが異なるホストで動作することがあり、その場合には、ホスト間の通信が必要になります。パブリック伝送の代わりにクラスタインターコネクトを使用することで、個別のリンクに障害が発生しても、接続を持続することができます。

ホスト間の通信にクラスタインターコネクトを使用するには、Sun Cluster のインストール時に設定したプライベートホスト名をアプリケーションで使用する必要があります。たとえば、host1 のプライベートホスト名が clusternode1-priv である場合、クラスタインターコネクトを経由して host1 と通信するときにこの名前を使用する必要があります。この名前を使用してオープンされた TCP ソケットは、クラスタインターコネクトを経由するように経路指定され、プライベートネットワークアダプタに障害が発生した場合でも、この TCP ソケットは透過的に再経路指定されます。任意の 2 つのホスト間のアプリケーション通信はすべてのインターコネクト経由で転送されます。ある特定の TCP 接続のトラフィックは、ある特定の時点では、1 つのインターコネクト上を流れます。異なる TCP 接続はすべてのインターコネクト間で転送されます。さらに、UDP トラフィックは常に、すべてのインターコネクト間で利用されます。

アプリケーションでは、ゾーンのプライベートホスト名を使用し、ゾーン間でクラスタインターコネクトを経由して通信することもできます。ただし、各ゾーンのプライベートホスト名をまず設定しないと、アプリケーションは通信を開始することができません。各ゾーンは、通信するための独自のプライベートホスト名を持っている必要があります。あるゾーンで動作中のアプリケーションは、同じゾーン内のプライベートホスト名を使用して、他ゾーン内のプライベートホスト名と通信します。1 つのゾーン内の各アプリケーションは、別のゾーン内のプライベートホスト名を使って通信することはできません。

Sun Cluster のインストール時に複数のプライベートホスト名が設定されているため、クラスタインターコネクトでは、そのときに選択した任意の名前を使用できます。実際の名前を判別するために scha_cluster_get コマンドを scha_privatelink_hostname_node 引数と組み合わせて使用します。詳細は、scha_cluster_get(1HA) のマニュアルページを参照してください。

各ホストには、固定した per-host アドレスが割り当てられます。この per-host アドレスは、clprivnet ドライバで探索されます。IP アドレスは、ホストのプライベートホスト名にマッピングされます。つまり、clusternode1-priv です。詳細は、clprivnet(7) のマニュアルページを参照してください。

アプリケーション全体で一貫した IP アドレスが必要な場合、クライアント側とサーバー側の両方でこの per-host アドレスにバインドするようにアプリケーションを設定します。これによって、すべての接続はこの per-host アドレスから始まり、そして戻されるように見えます。

リソース、リソースグループ、リソースタイプ

データサービスは、複数の「リソース」タイプを利用します。Sun Java System Web Server や Apache Web Server などのアプリケーションは、それらのアプリケーションが依存するネットワークアドレス (論理ホスト名と共有アドレス) を使用します。アプリケーションとネットワークリソースは RGM が管理する基本単位です。

データサービスはリソースタイプです。たとえば、Sun Cluster HA for Oracle のリソースタイプは SUNW.oracle-server、Sun Cluster HA for Apache のリソースタイプ SUNW.apache です。

リソースはリソースタイプをインスタンス化したもので、クラスタ規模で定義されます。いくつかのリソースタイプはすでに定義されています。

ネットワークリソースは、SUNW.LogicalHostname リソースタイプまたは SUNW.SharedAddress リソースタイプのどちらかです。これら 2 つのリソースタイプは、Sun Cluster ソフトウェアにより事前に登録されています。

HAStoragePlus リソースタイプは、リソースとそのリソースが依存するディスクデバイスグループの起動を同期させるのにも使用できます。このリソースタイプによって、クラスタファイルシステムのマウントポイント、広域デバイス、およびデバイスグループ名のパスがデータサービスの起動前に利用可能になることが保証されます。詳細は、『Sun Cluster データサービスの計画と管理 (Solaris OS 版)』「リソースグループとデバイスグループ間での起動の同期」を参照してください。HAStoragePlus リソースタイプはまた、ローカルのファイルシステムを高可用対応にすることができます。この機能についての詳細は、HAStoragePlus リソースタイプ」を参照してください。

RGM が管理するリソースは、1 つのユニットとして管理できるように、「リソースグループ」と呼ばれるグループに配置されます。リソースグループ上でフェイルオーバーまたはスイッチオーバーが開始されると、リソースグループは 1 つのユニットとして移行されます。


注 –

アプリケーションリソースが含まれるリソースグループをオンラインにすると、そのアプリケーションが起動します。データサービスの起動メソッドは、アプリケーションが起動され、実行されるのを待ってから、正常に終了します。アプリケーションの起動と実行のタイミングの確認は、データサービスがクライアントにサービスを提供しているかどうかをデータサービスの障害モニターが確認する方法と同じです。このプロセスについての詳細は、『Sun Cluster データサービスの計画と管理 (Solaris OS 版)』を参照してください。


リソースグループマネージャー (Resource Group Manager、RGM)

RGM は、データサービス (アプリケーション) を、リソースタイプの実装によって管理されるリソースとして制御します。これらの実装は、Sun が行う場合もあれば、開発者が汎用データサービステンプレート、データサービス開発ライブラリ API (DSDL API)、またはリソース管理 API (RMAPI) を使用して作成することもあります。クラスタ管理者は、「リソースグループ」と呼ばれる入れ物 (コンテナ) の中でリソースの作成や管理を行います。 RGM は、クラスタメンバーシップの変更に応じて、指定ノードのリソースグループを停止および開始します。

RGM は「リソース」と「リソースグループ」に作用します。RGM のアクションによって、リソースやリソースグループの状態はオンラインまたはオフラインに切り替えれらます。リソースとリソースグループに適用できる状態と設定値についての詳細は、「リソースおよびリソースグループの状態と設定値」を参照してください。

RGM 制御下で Solaris プロジェクトを起動する方法については、「データサービスプロジェクトの構成」を参照してください。

リソースおよびリソースグループの状態と設定値

リソースやリソースグループの値はシステム管理者によって静的に設定されるため、これらの設定は管理操作によってのみ変更できます。RGM は、動的な「状態」の間でリソースグループを移動させます。

これらの設定および状態は次のとおりです。

リソースとリソースグループプロパティー

Sun Cluster データサービスのリソースやリソースグループのプロパティー値は構成できます。標準的なプロパティーはすべてのデータサービスに共通です。拡張プロパティーは各データサービスに特定のものです。標準プロパティーおよび拡張プロパティーのいくつかは、デフォルト設定によって構成されているため、これらを修正する必要はありません。それ以外のプロパティーは、リソースを作成して構成するプロセスの一部として設定する必要があります。各データサービスのマニュアルでは、設定できるリソースプロパティーの種類とその設定方法を指定しています。

標準プロパティーは、通常特定のデータサービスに依存しないリソースおよびリソースグループプロパティーを構成するために使用されます。標準プロパティーのセットについては、『Sun Cluster データサービスの計画と管理 (Solaris OS 版)』の付録 B「標準プロパティー」を参照してください。

RGM 拡張プロパティーは、アプリケーションバイナリの場所や構成ファイルなどの情報を提供するものです。拡張プロパティーは、データサービスの構成に従って 修正する必要があります。拡張プロパティーについては、データサービスの個別のガイドで説明されています。

Solaris ゾーンのサポート

Solaris ゾーンは、Solaris 10 OS のインスタンス内で仮想化されたオペレーティングシステム環境を作成する手段を提供します。Solaris ゾーンを使用すると、1 つまたは複数のアプリケーションをシステム上のほかの活動から分離して実行できます。Solaris ゾーンの機能については、『Solaris のシステム管理 (Solaris コンテナ : 資源管理と Solaris ゾーン)』のパート II「ゾーン」を参照してください。

Solaris 10 OS 上で Sun Cluster ソフトウェアを実行する場合は、任意の数のグローバルクラスタ非投票ノードを作成できます。

Sun Cluster ソフトウェアを使用して、グローバルクラスタ非投票ノード上で動作するアプリケーションの可用性とスケーラビリティーを管理できます。

RGM によるグローバルクラスタ非投票ノード (Solaris ゾーン) の直接サポート

Solaris 10 OS が動作するクラスタでは、リソースグループをグローバルクラスタ投票ノードまたはグローバルクラスタ非投票ノードで動作するように設定できます。RGM は、各グローバルクラスタ非投票ノードをスイッチオーバーターゲットとして管理します。リソースグループのノードリストでグローバルクラスタ非投票ノードが指定されている場合、RGM は指定されたノードでリソースグループをオンラインにします。

図 3–8 は、2 ホストクラスタでのノード間のリソースグループのフェイルオーバーを示しています。この例では、クラスタの管理を簡単にするために同一のノードが構成されています。

図 3–8 ノード間のリソースグループのフェイルオーバー

ノード間のリソースグループのフェイルオーバーを示す図

スケーラブルなリソースグループ (ネットワーク負荷分散を使用) を、クラスタ非投票ノードでも動作するよう構成することができます。

Sun Cluster コマンドで、次の例に示すように、ゾーンの名前をホストの名前に追加し、それらをコロンで区切ることによって、ゾーンを指定します。

phys-schost-1:zoneA

RGM によるSolaris ゾーンの直接サポートを使用するための基準

次のいずれかの基準を満たす場合、RGM による Solaris ゾーンの直接サポートを使用します。

RGM によるSolaris ゾーンの直接サポートを使用するための要件

アプリケーションで RGM による Solaris ゾーンの直接サポートの使用を計画している場合は、次の要件を満たしていることを確認してください。

RGM による Solaris ゾーンの直接サポートを使用する場合、アフィニティーにより関連付けられているリソースグループが同じ Solaris ホストで動作するように構成されていることを確認します。

RGM によるSolaris ゾーンの直接サポートに関するその他の情報

RGM によるSolaris ゾーンの直接サポートの構成方法の詳細については、次のドキュメントを参照してください。

Sun Cluster ノード上の Solaris ゾーンを Sun Cluster HA for Solaris Containers を通してサポート

Sun Cluster HA for Solaris Containers データサービスは、各ゾーンを RGM によって制御されるリソースとして管理します。

Sun Cluster HA for Solaris Containers を使用するための基準

次のいずれかの基準を満たす場合、Sun Cluster HA for Solaris Containers データサービスを使用します。

Sun Cluster HA for Solaris Containers を使用するための要件

アプリケーションで Sun Cluster HA for Solaris Containers データサービスの利用を計画している場合、次の要件を満たすことを確認してください。

Sun Cluster HA for Solaris Containers についてのその他の情報

Sun Cluster HA for Solaris Containers データサービスの使い方の詳細については、『Sun Cluster Data Service for Solaris Containers Guide for Solaris OS』を参照してください。

サービス管理機能

Solaris サービス管理機能 (Service Management Facility、SMF) によって、アプリケーションを可用性が高く、スケーラブルなリソースとして実行して管理することができます。リソースグループマネージャー (Resource Group Manager、RGM) と同じように、SMF は高可用性とスケーラビリティーを提供しますが、Solaris オペレーティングシステム用です。

Sun Cluster は、クラスタで SMF サービスを有効にするために使用する 3 種類のプロキシリソースタイプを提供します。これらのリソースタイプ、SUNW.Proxy_SMF_failoverSUNW.Proxy_SMF_loadbalanced、および SUNW.Proxy_SMF_multimaster により、フェイルオーバー、スケーラブル、およびマルチマスターのそれぞれの構成で、SMF サービスを実行できます。SMF は単一 Solaris ホスト上で SMF サービスの可用性を管理します。SMF はコールバックメソッド実行モデルを使用して、サービスを実行します。

さらに、SMF はサービスの監視と制御のための管理インタフェースのセットも提供します。これらのインタフェースにより、ユーザー独自の SMF 制御サービスを Sun Cluster に組み込むことができます。この機能により新たなコールバックメソッドを作成したり、既存のコールバックメソッドを書き直したり、あるいは SMF サービスマニフェストを更新する必要がなくなります。複数の SMF リソースを 1 つのリソースグループに含め、それらのリソース間に依存性とアフィニティーを構成することができます。

SMF はこれらのサービスを開始、停止、および再開する権限を持ち、サービス間の依存性を管理します。Sun Cluster は、クラスタ内でこれらのサービスを管理し、これらのサービスを開始するホストを決める権限を持ちます。

SMF は、各クラスタホスト上でデーモン svc.startd として動作します。SMF デーモンは、あらかじめ設定されたポリシーに基づいて、選択したホスト上で自動的にリソースを開始および停止します。

SMF プロキシリソースに指定されたサービスは、グローバルクラスタ投票ノードまたはグローバルクラスタ非投票ノードに常駐できます。ただし、同じ SMF プロキシリソースに指定したサービスは、同じノードに置く必要があります。SMF プロキシリソースはどのノードでも動作します。

システムリソースの使用状況

システムリソースには、CPU 使用率、メモリ使用率、スワップ使用率、ディスクおよびネットワークのスループットが含まれます。Sun Cluster では、オブジェクトタイプ別にシステムリソースの使用率を監視できます。 オブジェクトタイプには、ホスト、ノード、ゾーン、ディスク、ネットワークインタフェース、またはリソースグループがあります。Sun Cluster ではまた、リソースグループで使用できる CPU を制御することもできます。

システムリソース使用量の監視と制御をリソース管理ポリシーの一部にすることができます。多数のマシンの管理は複雑でコストがかかるため、より大規模なホストにアプリケーションを統合することが望まれます。個々の作業負荷を別々のシステムで実行して、そのシステムのリソースへのフルアクセスを与える代わりに、リソース管理ソフトウェアを使用すれば、システム内の作業負荷を分離できます。リソース管理機能を使用すると、1 つの Solaris システムで複数の異なるアプリケーションを実行して制御することにより、システムの総保有コスト (TCO) を低減することができます。

リソース管理機能を使用して、アプリケーションが必要な応答時間を確保できるようにします。また、リソース管理機能により、リソースの使用率を向上させることができます。使用状況を分類して優先付けすることにより、オフピーク時に余った資源を効率よく使用でき、処理能力を追加する必要がなくなります。また、負荷の変動が原因で資源を無駄にすることもなくなります。

Sun Cluster がシステムリソースの使用率について収集するデータを活用するには、次の手順を実行する必要があります。

Sun Cluster のインストール時にデフォルトでは、システムリソースの監視と制御は構成されていません。これらのサービスの構成の詳細は、『Sun Cluster のシステム管理 (Solaris OS 版)』の第 9 章「CPU 使用率の制御の構成」を参照してください。

システムリソース監視

システムリソースの使用率を監視することにより、次のことができます。

システムリソースの使用率に関するデータにより、あまり使用されていないハードウェアリソースや多くのリソースを使用するアプリケーションを判別することができます。このデータに基づいて、必要なリソースを備えたノードにアプリケーションを割り当て、フェイルオーバーするノードを選択することができます。この統合により、ハードウェアリソースとソフトウェアリソースの使用方法を最適化できます。

すべてのシステムリソースを同時に監視することは、CPU の負担になる場合があります。システムにもっとも重要なリソースに優先順位を付けて、監視するシステムリソースを選択してください。

監視を有効にするときに、監視するテレメトリ属性を選択します。テレメトリ属性はシステムリソースの一面です。テレメトリ属性の例としては、CPU の量またはデバイスで使用されているブロックの使用率などがあります。あるオブジェクトタイプについてテレメトリ属性を監視する場合、Sun Cluster はクラスタ内のそのタイプのすべてのオブジェクトでこのテレメトリ属性を監視します。Sun Cluster は収集されるシステムリソースデータを 7 日間保存します。

特定のデータ値がシステムリソースに重要だと考えられる場合、この値にしきい値を設定できます。しきい値を設定する際には、しきい値に重要度を割り当てることにより、このしきい値のクリティカル度の選択も行います。このしきい値を超えると、Sun Cluster はこのしきい値の重要度レベルをユーザーが選択する重要度レベルに変更します。

CPU の制御

クラスタ上で動作するアプリケーションおよびサービスウィンドウごとに特定の CPU ニーズがあります。表 3–4 は、Solaris OS の各バージョンで使用できる CPU 制御動作を示しています。

表 3–4 CPU の制御

Solaris のバージョン 

ゾーン 

制御 

Solaris 9 OS 

使用不可 

CPU の配分の割り当て 

Solaris 10 OS 

グローバルクラスタ投票ノード 

CPU の配分の割り当て 

Solaris 10 OS 

グローバルクラスタ非投票ノード 

CPU の配分の割り当て 

CPU の数の割り当て 

専用のプロセッサセットの作成 


注 –

CPU シェアを提供する場合、クラスタ内でフェアシェアスケジューラ (FFS) をデフォルトのスケジューラとして指定する必要があります。


グローバルクラスタ非投票ノードで専用プロセッサセットのリソースグループに割り当てられている CPU を制御することにより、もっとも厳格なレベルの制御が実現されます。あるリソースグループに CPU を予約すると、この CPU はほかのリソースグループでは使用できません。

システムリソース使用率の表示

コマンドラインまたは Sun Cluster Manager を使用して、システムリソースデータおよび CPU 割り当てを表示できます。監視を選択するシステムリソースによって、表示できる表とグラフが決まります。

システムリソース使用率と CPU 制御の出力を表示することにより、次を実現することができます。

Sun Cluster では、収集したデータに基づいて取るべき措置をアドバイスしたり、ユーザーの代わりに措置を実行することはありません。表示されるデータがサービスに期待する条件を満たしているかどうかを判断する必要があります。そのあとで、確認されたパフォーマンスの救済措置を取る必要があります。

データサービスプロジェクトの構成

データサービスは、RGM でオンラインにしたときに Solaris プロジェクト名のもとで起動するように構成できます。そのためには、データサービスを構成するときに、RGM によって管理されるリソースまたはリソースグループと Solaris プロジェクト ID を対応付ける必要があります。リソースまたはリソースグループにプロジェクト ID を対応付けることによって、Solaris オペレーティングシステムの洗練されたコントロールを使用して、クラスタ内の負荷や使用量を管理できます。


注 –

Solaris 9 OS または Solaris 10 OS 上で Sun Cluster を使用する場合、この構成を実行できます。


Sun Cluster 環境の Solaris 管理機能を使用すると、ほかのアプリケーションとノードを共有している場合に、もっとも重要なアプリケーションに高い優先順位を与えることができます。ノードを複数のアプリケーションで共有する例としては、サービスを統合した場合や、アプリケーションのフェイルオーバーが起った場合があります。ここで述べる管理機能を使用すれば、優先順位の低いアプリケーションが CPU 時間などのシステムサプライを過度に使用するのを防止し、重要なアプリケーションの可用性を向上させることができます。


注 –

この機能に関連する Solaris のマニュアルでは、CPU 時間、プロセス、タスクなどのコンポーネントを「リソース」と呼んでいます。一方、Sun Cluster のマニュアルでは、RGM の制御下にあるエンティティーを「リソース」と呼んでいます。次の節では、「リソース」という用語をRGM で制御される Sun Cluster エンティティーを指す用語として使用します。また、CPU 時間、プロセス、およびタスクを「サプライ」と呼びます。


この節では、指定した Solaris OS の project(4) でプロセスを起動するように、データサービスを構成する方法の概念について説明します。また、Solaris オペレーティングシステムの管理機能を使用するための、フェイルオーバーのシナリオやヒントについても説明します。

管理機能の概念や手順についての詳細は、『Solaris のシステム管理 (ネットワークサービス)』の第 1 章「ネットワークサービス (概要)」を参照してください。

    クラスタ内で Solaris 管理機能を使用できるようにリソースやリソースグループを構成するための手順は次のようになります。

  1. アプリケーションをリソースの一部として構成します。

  2. リソースをリソースグループの一部として構成します。

  3. リソースグループのリソースを有効にします。

  4. リソースグループを管理状態にします。

  5. リソースグループに対する Solaris プロジェクトを作成します。

  6. 手順 5 で作成したプロジェクトにリソースグループ名を対応付けるための標準プロパティーを構成します。

  7. リソースグループをオンラインにします。

Solaris プロジェクト ID をリソースやリソースグループに関連付けるように標準の Resource_project_name または RG_project_name プロパティーを構成するには、-p オプションを clresource set および clresourcegroup set コマンドとともに使用します。続いて、プロパティーの値にリソースまたはリソースグループを設定します。プロパティーの定義については、『Sun Cluster データサービスの計画と管理 (Solaris OS 版)』の付録 B「標準プロパティー」を参照してください。プロパティーの説明については、r_properties(5) および rg_properties(5) のマニュアルページを参照してください。

指定するプロジェクト名はプロジェクトデータベース (/etc/project) に存在するものでなければなりません。さらに、指定するプロジェクトのメンバーとして root ユーザーが設定されていなければなりません。プロジェクト名データベースの概念については、『Solaris のシステム管理 (Solaris コンテナ : 資源管理と Solaris ゾーン)』の第 2 章「プロジェクトとタスク (概要)」を参照してください。プロジェクトファイルの構文については、project(4) を参照してください。

RGM は、リソースまたはリソースグループをオンラインにする際に、関連するプロセスをこのプロジェクト名の下で起動します。


注 –

リソースまたはリソースグループとプロジェクトを対応付けることはいつでもできます。ただし、RGM を使ってプロジェクトのリソースやリソースグループをオフラインにしてから再びオンラインに戻すまで、新しいプロジェクト名は有効になりません。


リソースやリソースグループをプロジェクト名の下で起動すれば、次の機能を構成することによってクラスタ全体のシステムサプライを管理できます。

プロジェクト構成に応じた要件の決定

Sun Cluster 環境で Solaris が提供する制御を使用するようにデータサービスを構成するには、まず、スイッチオーバーやフェイルオーバー時にリソースをどのように制御および管理するかを決めておく必要があります。新しいプロジェクトを構成する前に、まず、クラスタ内の依存関係を明確にします。たとえば、リソースやリソースグループはデバイスグループに依存しています。

リソースグループのノードリストの優先順位を識別するには、nodelistfailbackmaximum_primaries および desired_primaries リソースグループのプロパティーを使用します。これらのプロパティーは、clresourcegroup set コマンドで構成します。

デバイスグループのノードリストの優先順位を決めるには、preferenced プロパティーおよび failback プロパティーを使用します。これらのプロパティーは、cldevicegroup および clsetup コマンドで構成します。詳細は、clresourcegroup(1CL)cldevicegroup(1CL)、 および clsetup(1CL) のマニュアルページを参照してください。

すべてのクラスタノードを同じように構成すると、主ノードと二次ノードに対して同じ使用限度が割り当てられます。各プロジェクトの構成パラメータは、すべてのノードの構成ファイルに定義されているすべてのアプリケーションに対して同じである必要はありません。特定のアプリケーションに対応するすべてのプロジェクトは、少な くとも、そのアプリケーションのすべての潜在的マスターにあるプロジェクトデータベースからアクセス可能である必要があります。アプリケーション 1 が phys-schost-1 によってマスターされているが、phys-schost-2 または phys-schost-3 に切り替えられるか、フェイルオーバーされる可能性があると仮定します。アプリケーション 1 に対応付けられたプロジェクトは、これら 3 つのノード (phys-schost-1phys-schost-2phys-schost-3) でアクセス可能でなければなりません。


注 –

プロジェクトデータベース情報は、ローカルの /etc/project データベースファイルに格納することも、NIS マップや LDAP ディレクトリサーバー に格納することもできます。


Solaris オペレーティングシステムでは、使用パラメータは柔軟に構成でき、Sun Cluster によって課せられる制約はほとんどありません。どのような構成を選択するかはサイトの必要性によって異なります。システムの構成を始める前に、次の各項の一般的な指針を参考にしてください。

プロセス当たりの仮想メモリー制限の設定

仮想メモリーの制限をプロセス単位で制御する場合は、process.max-address-space コントロールを使用します。process.max-address-space 値の設定方法についての詳細は、rctladm(1M) のマニュアルページを参照してください。

Sun Cluster ソフトウェアで管理コントロールを使用する場合は、アプリケーションの不要なフェイルオーバーが発生したり、アプリケーションの「ピンポン」現象が発生したりするのを防止するために、メモリー制限を適切に設定する必要があります。そのためには、一般に次の点に注意する必要があります。

フェイルオーバーシナリオ

管理パラメータを適切に構成すれば、プロジェクト構成 (/etc/project) 内の割り当ては、通常のクラスタ操作でも、スイッチオーバーやフェイルオーバーの状況でも正常に機能します。

以下の各項ではシナリオ例を説明します。

Sun Cluster 環境では、アプリケーションはリソースの一部として構成します。そして、リソースをリソースグループ (RG) の一部として構成します。 障害が発生すると、リソースグループは、対応付けられたアプリケーションとともに、別のノードにフェイルオーバーされます。以下の例では、リソースは明示的に示されていません。各リソースには、1 つのアプリケーションが構成されているものとします。


注 –

フェイルオーバーは、ノードがノードリストで指定され、RGM で設定された順序で行なわれます。


以下の例は次のように構成されています。

フェイルオーバーが起こると、各アプリケーションに割り当てられる CPU 時間の割合が変化します。ただし、割り当てられているシェアの数はそのままです。 この割合は、そのノードで動作しているアプリケーションの数と、アクティブな各アプリケーションに割り当てられているシェアの数によって異なります。

これらのシナリオでは、次のように構成が行われているものとします。

2 つのアプリケーションを供う 2 ホストクラスタ

2 ホストクラスタに 2 つのアプリケーションを構成することによって、それぞれの物理ホスト (phys-schost-1phys-schost-2) を 1 つのアプリケーションのデフォルトマスターにすることができます。一方の物理ホストは、他方の物理ホストの二次ノードになります。アプリケーション 1 とアプリケーション 2 に関連付けられているすべてのプロジェクトは、両ノードのプロジェクトデータベースファイルに存在している必要があります。クラスタが正常に動作している間、各アプリケーションはそれぞれのデフォルトマスターで動作し、管理機能によってすべての CPU 時間を割り当てられます。

フェイルオーバーかスイッチオーバーが起ると、これらのアプリケーションは同じノードで動作し、構成ファイルの設定に従ってシェアを割り当てられます。たとえば、/etc/project ファイルに次のエントリが指定されていると、アプリケーション 1 に 4 シェアが、アプリケーション 2 に 1 シェアがそれぞれ割り当てられます。

Prj_1:100:project for App-1:root::project.cpu-shares=(privileged,4,none)
Prj_2:101:project for App-2:root::project.cpu-shares=(privileged,1,none)

次の図は、この構成の正常時の動作とフェイルオーバー時の動作を表しています。割り当てられているシェアの数は変わりません。ただし、各アプリケーションが利用できる CPU 時間の割合は変わる場合があります。この割合は、CPU 時間を要求する各プロセスに割り当てられているシェア数によって異なります。

図 : この図については、前の本文中で説明しています。

3 つのアプリケーションを供う 2 ホストクラスタ

3 つのアプリケーションが動作する 2 ホストクラスタでは、1 つのホスト (phys-schost-1) を 1 つのアプリケーションのデフォルトマスターとして構成できます。そして、もう 1 つの物理ホスト (phys-schost-2) をほかの 2 つのアプリケーションのデフォルトマスターとして構成できます。各ホストには、次のサンプルプロジェクトデータベースファイルがあるものとします。フェイルオーバーやスイッチオーバーが起っても、プロジェクトデータベースファイルが変更されることはありません。

Prj_1:103:project for App-1:root::project.cpu-shares=(privileged,5,none)
Prj_2:104:project for App_2:root::project.cpu-shares=(privileged,3,none)
Prj_3:105:project for App_3:root::project.cpu-shares=(privileged,2,none)

クラスタが正常に動作している間、アプリケーション 1 には、そのデフォルトマスター phys-schost-1 で 5 シェアが割り当てられます。このホストで CPU 時間を要求するアプリケーションはこのアプリケーションだけであるため、この数は 100 パーセントの CPU 時間と同じことです。アプリケーション 2 と 3 には、それぞれのデフォルトマスターである phys-schost-2 で 3 シェアと 2 シェアが割り当てられます。したがって、正常な動作では、アプリケーション 2 に CPU 時間の 60 パーセントが、アプリケーション 3 に CPU 時間の 40 パーセントがそれぞれ割り当てられます。

フェイルオーバーかスイッチオーバーが発生し、アプリケーション 1 が phys-schost-2 に切り替えられても、3 つのアプリケーションの各シェアは変わりません。ただし、割り当てられる CPU リソースの割合はプロジェクトデータベースファイルに従って変更されます。

次の図は、この構成の正常な動作とフェイルオーバー動作を示しています。

図 : この図については、前の本文中で説明しています。

リソースグループだけのフェイルオーバー

複数のリソースグループが同じデフォルトマスターに属している構成では、1 つのリソースグループ (および、それに関連付けられたアプリケーション) が二次ノードにフェイルオーバーされたり、スイッチオーバーされたりすることがあります。その間、クラスタのデフォルトマスターは動作を続けます。


注 –

フェイルオーバーの際、フェイルオーバーされるアプリケーションには、二次ホスト上の構成ファイルの指定に従ってリソースが割り当てられます。この例の場合、主ホストと二次ホストのプロジェクトデータベースファイルの構成は同じです。


次のサンプル構成ファイルでは、アプリケーション 1 に 1 シェア、アプリケーション 2 に 2 シェア、アプリケーション 3 に 2 シェアがそれぞれ割り当てられています。

Prj_1:106:project for App_1:root::project.cpu-shares=(privileged,1,none)
Prj_2:107:project for App_2:root::project.cpu-shares=(privileged,2,none)
Prj_3:108:project for App_3:root::project.cpu-shares=(privileged,2,none)

次の図は、この構成の正常時の動作とフェイルオーバー時の動作を表しています。ここでは、アプリケーション 2 が動作する RG-2 が phys-schost-2 にフェイルオーバーされます。割り当てられているシェアの数は変わりません。ただし、各アプリケーションが利用できる CPU 時間の割合は、CPU 時間を要求する各アプリケーションに割り当てられているシェア数によって異なります。

図 : この図については、前の本文中で説明しています。

パブリックネットワークアダブタと IP ネットワークマルチパス

クライアントは、パブリックネットワークを介してクラスタにデータ要求を行います。各クラスタの Solaris ホストは、1 対のパブリックネットワークアダプタを介して少なくとも 1 つのパブリックネットワークに接続されています。

Sun Cluster で動作する Solaris インターネットプロトコル (Internet Protocol、IP) ソフトウェアは、パブリックネットワークアダプタを監視したり、障害を検出したときに IP アドレスをあるアダプタから別のアダプタにフェイルオーバーしたりする基本的な機構を提供します。各ホストは独自の IP ネットワークマルチパス 構成を持っており、この構成がほかのホストの構成と異なる場合があります。

パブリックネットワークアダプタは、IP マルチパスグループ (「マルチパスグループ」) として編成されます。各マルチパスグループには、1 つまたは複数のパブリックネットワークアダプタがあります。マルチパスグループの各アダプタはアクティブにしておいてもかまいません。あるいは、スタンバイインタフェースを構成し、フェイルオーバーが起こるまでそれらを非アクティブにしておいてもかまいません。

in.mpathd マルチパスデーモンは、テスト IP アドレスを使って障害や修復を検出します。マルチパスデーモンによってアダプタの 1 つに障害が発生したことが検出されると、フェイルオーバーが行われます。すべてのネットワークアクセスは、障害が発生したアダプタから、マルチパスグループ内の別の動作中のアダプタにフェイルオーバーされます。したがって、デーモンがそのホストのパブリックネットワーク接続を維持します。スタンバイインタフェースを構成していた場合、このデーモンはスタンバイインタフェースを選択します。そうでない場合、このデーモンはもっとも小さい IP アドレス番号を持つインタフェースを選択します。フェイルオーバーはアダプタインタフェースレベルで発生するため、これよりも高いレベルの接続 (TCP など) は影響を受けません。ただし、フェイルオーバー中には一時的にわずかな遅延が発生します。IP アドレスのフェイルオーバーが正常に終了すると、ARP ブロードキャストが送信されます。したがって、デーモンがリモートクライアントへの接続を維持します。


注 –

TCP の輻輳回復特性のために、正常なフェイルオーバーのあと、TCP エンドポイントではさらに遅延が生じる可能性があります。これは、フェイルオーバー中にいくつかのセグメントが失われて、TCP の輻輳制御機構がアクティブになるためです。


マルチパスグループには、論理ホスト名と共有アドレスリソースの構築ブロックがあります。論理ホスト名と共有アドレスリソースとは別にマルチパスグループを作成して、クラスタホストのパブリックネットワーク接続を監視する必要もあります。つまり、ホスト上の同じマルチパスグループは、任意の数の論理ホスト名または共有アドレスリソースをホストできます。論理ホスト名と共有アドレスリソースについての詳細は、『Sun Cluster データサービスの計画と管理 (Solaris OS 版)』を参照してください。


注 –

IP ネットワークマルチパス 機構の設計は、アダプタの障害を検出してマスクすることを目的としています。この設計は、管理者が ifconfig を使用して論理 (または共有) IP アドレスのどれかを削除した状態から回復することを目的としているわけではありません。Sun Cluster ソフトウェアから見ると、論理アドレスや共有 IP アドレスは RGM によって管理されるリソースです。管理者が IP アドレスを追加または削除する場合、正しくは、clresource および clresourcegroup を使用して、リソースを含むリソースグループを修正します。


IP ネットワークマルチパスの Solaris の実装についての詳細は、クラスタにインストールされている Solaris オペレーティングシステムのマニュアルを参照してください。

オペレーティングシステム 

参照先 

Solaris 9 オペレーティングシステム 

『IP ネットワークマルチパスの管理』の第 1 章「IP ネットワークマルチパス (概要)」

Solaris 10 オペレーティングシステム 

『Solaris のシステム管理 (IP サービス)』のパート VI「IPMP」

SPARC: 動的再構成のサポート

Sun Cluster 3.2 1/09 による動的再構成 (Dynamic Reconfiguration、DR) ソフトウェア機能のサポートは段階的に開発されています。この節では、Sun Cluster 3.2 1/09 による DR 機能のサポートの概念と考慮事項について説明します。

Solaris の DR 機能の説明で述べられているすべての必要条件、手順、制限は Sun Cluster の DR サポートにも適用されます (オペレーティング環境での休止状態中を除く)。したがって、Sun Cluster ソフトウェアで DR 機能を使用するには、必ず、Solaris の DR 機能についての説明を参照してください。特に、DR Detach 操作中に、ネットワークに接続されていない入出力デバイスに影響する問題について確認してください。

Sun Enterprise 10000 Dynamic Reconfiguration ユーザーマニュアル』と『Sun Enterprise 10000 Dynamic Reconfiguration リファレンスマニュアル』が、http://docs.sun.com で参照できます。

SPARC: 動的再構成の概要

DR 機能を使用すると、システムハードウェアの切り離しなどの操作をシステムの稼動中に行うことができます。DR プロセスの目的は、システムを停止したり、クラスタの可用性を中断したりせずにシステム操作を継続できるようにすることです。

DR はボードレベルで機能します。したがって、DR 操作はボード上のすべてのコンポーネントに影響します。ボードには、CPU やメモリー、ディスクドライブやテープドライブ、ネットワーク接続の周辺機器インタフェースなど、複数のコンポーネントが取り付けられています。

アクティブなコンポーネントを含むボードを切り離すと、システムエラーになります。DR サブシステムは、ボードを切り離す前に、ほかのサブシステム (Sun Cluster など) に問い合わせてボード上のコンポーネントが使用されているかを判別します。ボードが使用中であることがわかると、DR のボード切り離し操作は行われません。つまり、アクティブなコンポーネントを含むボードに DR のボード切り離し操作を発行しても、DR サブシステムがその操作を拒否するため、DR のボード切り離し操作はいつ発行しても安全です。

同様に、DR のボード追加操作も常に安全です。新たに追加されたボードの CPU とメモリーは、システムによって自動的にサービス状態になります。ただし、そのボードのほかのコンポーネントを意図的に使用するには、管理者がそのクラスタを手動で構成する必要があります。


注 –

DR サブシステムにはいくつかのレベルがあります。下位のレベルがエラーを報告すると、上位のレベルもエラーを報告します。ただし、下位のレベルが具体的なエラーを報告しても、上位のレベルは「Unknown error」を報告します。このエラーは無視してもかまいません。


次の各項では、デバイスタイプごとに DR の注意事項を説明します。

SPARC: CPU デバイスに対する DR クラスタリング

CPU デバイスが存在していても、Sun Cluster ソフトウェアは DR のボード切り離し操作を拒否しません。

DR のボード追加操作が正常に終わると、追加されたボードの CPU デバイスは自動的にシステム操作に組み込まれます。

SPARC: メモリーに対する DR クラスタリング

DR では、次の 2 種類のメモリーを考慮してください。

これらの違いはその使用方法だけであり、実際のハードウェアは同じものです。カーネルメモリーケージとは、Solaris オペレーティングシステムが使用するメモリーのことです。Sun Cluster ソフトウェアは、カーネルメモリーケージを含むボードに対するボード切り離し操作をサポートしていないため、このような操作を拒否します。DR のボード切り離し操作がカーネルメモリーケージ以外のメモリーに関連するものである場合、Sun Cluster ソフトウェア はこの操作を拒否しません。メモリーに関連する DR のボード追加操作が正常に終わると、追加されたボードのメモリーは自動的にシステム操作に組み込まれます。

SPARC: ディスクドライブとテープドライブに対する DR クラスタリング

Sun Cluster は、主ホストのアクティブなドライブに対する動的再構成 (Dynamic Reconfiguration、DR) のボード切り離し操作を拒否します。DR のボード切り離し操作を実行できるのは、主ホストのアクティブでないドライブと、二次ホストの任意のドライブです。DR 操作が終了すると、クラスタのデータアクセスが前と同じように続けられます。


注 –

Sun Cluster は、定足数デバイスの使用に影響を与える DR 操作を拒否します。定足数デバイスの考慮事項と、定足数デバイスに対する DR 操作の実行手順については、「SPARC: 定足数デバイスに対する DR クラスタリング」を参照してください。


これらの操作の詳細な実行手順については、『Sun Cluster のシステム管理 (Solaris OS 版)』「定足数デバイスへの動的再構成」を参照してください。

SPARC: 定足数デバイスに対する DR クラスタリング

DR のボード切り離し操作が、定足数デバイスとして構成されているデバイスへのインタフェースを含むボードに関連する場合、Sun Cluster ソフトウェアはこの操作を拒否します。Sun Cluster ソフトウェアはまた、この操作によって影響を受ける定足数デバイスを特定します。定足数デバイスとしてのデバイスに対して DR のボード切り離し操作を行う場合は、まずそのデバイスを無効にする必要があります。

定足数の詳細な管理手順については、『Sun Cluster のシステム管理 (Solaris OS 版)』の第 6 章「定足数の管理」を参照してください。

SPARC: クラスタインターコネクトインタフェースに対する DR クラスタリング

DR のボード切り離し操作が、アクティブなクラスタインターコネクトインタフェースを含むボードに関連する場合、Sun Cluster ソフトウェアはこの操作を拒否します。Sun Cluster ソフトウェアはまた、この操作によって影響を受けるインタフェースを特定します。DR 操作を成功させるためには、Sun Cluster 管理ツールを使用して、アクティブなインタフェースを無効にしておく必要があります。


注意 – 注意 –

Sun Cluster ソフトウェアでは、各クラスタノードは、ほかのすべてのクラスタノードへの有効なパスを、少なくとも1 つ、持っておく必要があります。したがって、クラスタ内の個々の Solaris ホストへの最後のパスをサポートするプライベートインターコネクトインタフェースは無効にしないでください。


これらの操作の詳細な実行方法については、『Sun Cluster のシステム管理 (Solaris OS 版)』「クラスタインターコネクトの管理」を参照してください。

SPARC: パブリックネットワークインタフェースに対する DR クラスタリング

DR のボード切り離し操作が、アクティブなパブリックネットワークインタフェースを含むボードに関連する場合、Sun Cluster ソフトウェアはこの操作を拒否します。Sun Cluster ソフトウェアはまた、この操作によって影響を受けるインタフェースを特定します。アクティブなネットワークインタフェースが存在するボードを切り離す前に、まず、if_mpadm コマンドを使って、そのインタフェース上のすべてのトラフィックを、同じマルチパスグループの正常なほかのインタフェースに切り替える必要があります。


注意 – 注意 –

無効にしたネットワークアダプタに対する DR 切り離し操作中に、残りのネットワークアダプタで障害が発生すると、可用性が影響を受けます。これは、DR 操作の間は、残りのネットワークアダプタのフェイルオーバー先が存在しないためです。


パブリックネットワークインタフェースに対する DR 切り離し操作の詳細な実行手順については、『Sun Cluster のシステム管理 (Solaris OS 版)』「パブリックネットワークの管理」を参照してください。