このセクションでは、高可用性環境でのSentinelのインストールおよび設定の手順を説明します。各手順では、全般的な方法を説明した後、デモのセットアップを紹介してクラスタソリューション例を詳述します。本マニュアルにリストされていない他のオプションやテクノロジを使用することもできますが、セクション A.2, サポート範囲に説明されている制約が適用されます。
次の図は、アクティブ-パッシブ高可用性アーキテクチャを表しています。
Sentinel用に記述されている要件およびローカルカスタマ要件に従って、マシンハードウェア、ネットワークハードウェア、ストレージハードウェア、オペレーティングシステム、ユーザアカウント、およびその他の基本的なシステムリソースを設定します。システムをテストして、正常に機能し安定していることを確認します。
ベストプラクティスとして、すべてのクラスタノードの時刻は同期されているべきです。そのために、NTPまたは同様の技術を使用します。
クラスタには信頼できるホスト名解決が必要になります。ベストプラクティスとして、すべての内部クラスタホスト名を/etc/hostsファイルに入力することで、DNS障害が発生してもクラスタが継続して動作するようにできます。どのクラスタノードも他のすべてのノードを名前で解決できない場合、このセクションで説明されているクラスタ構成は失敗します。
各クラスタノードのCPU、RAM、およびディスク容量特性が、予期されるイベント発生率に基づいて、セクション 5.0, システム要件を満たすに定義されているシステム要件を満たしている必要があります。
ストレージノードのディスク容量と入出力特性は、予想されるイベント発生率、ローカルおよびネットワークストレージに対するデータ保持ポリシーに基づいて、セクション 5.0, システム要件を満たすに定義されているシステム要件を満たしている必要があります。
Sentinelおよびクラスタへのアクセスを制限するためにオペレーティングシステムのファイアウォールを設定する場合は、セクション 7.0, 使用するポートを参照してください。ローカル構成やイベントデータを送信する送信元に応じて、どのポートを使用可能にする必要があるのか詳しく説明されています。
サンプルソリューションでは以下の設定を使用します。
2つのSUSE Linux 11 SP2クラスタノードVM
OSインストールでX Windowsをインストールする必要がありませんが、GUI環境設定を希望する場合はインストールすることもできます。ブートスクリプトはXなしで起動するように設定できます(Runlevel 3)。これで、必要なときにのみXを起動できるようになります。
ノードは2つのNICを持つようになります。1つは外部アクセス用で、もう1つはiSCSI通信用です。
SSHまたは同様の機能を介してリモートアクセスできるように、外部NICにIPアドレスを設定します。このサンプルでは、172.16.0.1 (node01)と172.16.0.2 (node02)を使用します。
各ノードには、オペレーティングシステム、Sentinelのバイナリおよび設定データ、クラスタソフトウェア、一時スペースなどのために十分なディスク容量がなければなりません。SUSE LinuxおよびSLE HAEのシステム要件、およびSentinelアプリケーション要件を参照してください。
1つのSUSE Linux 11 SP2 VM(共有ストレージ用にiSCSI Targetを設定済み)
OSインストールでX Windowsをインストールする必要がありませんが、GUI環境設定を希望する場合はインストールすることもできます。ブートスクリプトはXなしで起動するように設定できます(Runlevel 3)。これで、必要なときにのみXを起動できるようになります。
システムは2つのNICを持つようになります。1つは外部アクセス用で、もう1つはiSCSI通信用です。
SSHまたは同様の機能を介してリモートアクセスできるように、外部NICにIPアドレスを設定します。このサンプルでは、172.16.0.3 (storage03)を使用します。
システムには、オペレーティングシステム、一時スペース、共有ストレージがSentinelデータを保持できるような大容量スペース、そしてSBDパーティションのためにいくらかのスペースが確保できる、十分なディスク容量がなければなりません。SUSE Linuxシステム要件およびSentinelイベントデータストレージ要件を参照してください。サンプルソリューションではすべてのデータ(ローカル、ネットワーク、SBD)を1つのディスクに書き込みますが、運用展開ではこれらのデータを別々のノードに割り振ることもできます。
メモ:運用クラスタでは、内部クラスタ通信用に、個々のNIC(おそらくは冗長性のために2個1組)でルーティング不可の内部IPを使用できます。
共有ストレージをセットアップして、そのストレージをクラスタノードごとにマウントします。FibreChannelとSANを使用している場合は、この作業に物理的な接続とその他の設定が含まれる可能性があります。共有ストレージはSentinelのデータベースおよびイベントデータを保持するために使用するので、予想されるイベント発生率およびデータ保持ポリシーに基づいて、お客様の環境に合った共有ストレージのサイズを決める必要があります。
一般的な実装では、FibreChannelですべてのクラスタノードに接続された高速SANを使用し、ローカルイベントデータを保管するために大容量RAIDアレイを設置します。低速ネットワークストレージには、別個のNASノードやiSCSIノードを使用することもできます。クラスタノードがローカルストレージを通常のブロックデバイスとしてマウントできるのであれば、この方法もソリューションに利用できます。ネットワークストレージもブロックデバイスとしてマウントできますが、NFSまたはCIFSボリュームにすることも可能です。
メモ:共有ストレージを設定して、各クラスタノードで共有ストレージのマウントをテストしてください。しかし、実際の共有ストレージのマウントはクラスタ設定によって処理されます。
サンプルソリューションの場合、SUSE Linux VMによりホストされているiSCSI Targetを使用します:
サンプルソリューションでは、SUSE Linux VMで設定されているiSCSI Targetを使用します。初期セットアップにリストされているように、VMはstorage03です。iSCSIデバイスは任意のファイルまたはブロックデバイスを使用して作成できますが、ここでは分かりやすくするために、そのために作成したファイルを使用することにします。
storage03に接続して、コンソールセッションを開始します。次のddコマンドを使用して、Sentinelローカルストレージ用に希望する任意のサイズのブランクファイルを作成します:
dd if=/dev/zero of=/localdata count=10240000 bs=1024
ここでは、(/dev/zero pseudo-deviceからコピーして)ゼロ(0)を埋め込んだ10GBのファイルを作成します。コマンドラインオプションの詳細については、ddの情報ページまたはマニュアルページを参照してください。たとえば、異なるサイズの「ディスク」を複数作成する場合などです。iSCSI Targetはこのファイルを1つのディスクであるかのように扱います。もちろん、実際のディスクを使用することもできます。
同様の手順を繰り返して、ネットワークストレージ用のファイルを作成します。
dd if=/dev/zero of=/networkdata count=10240000 bs=1024
このサンプルの場合、同じサイズとパフォーマンス特性を持つ2つのファイル(「ディスク」)を使用します。運用展開の場合、ローカルストレージを高速なSAN上に置き、ネットワークストレージを低速なiSCSI、NFS、またはCIFSボリューム上に置くこともできます。
作成したファイルをiSCSI Targetとして設定する:
コマンドラインからYaSTを実行します(またはGUIを使用することもできます): /sbin/yast
[Network Devices (ネットワークデバイス)]>[Network Settings (ネットワーク設定)]を選択します。
[概要]タブが選択されていることを確認します。
表示されているリストからセカンダリNICを選択して、タブで[編集]に進み、Enterを押します。
[アドレス]タブで、静的IPアドレス10.0.0.3を割り当てます。これが内部iSCSI通信IPになります。
[次]をクリックし、[OK]をクリックします。
メイン画面で、[ネットワークサービス]、[iSCSI ターゲット]の順に選択します。
プロンプト画面が表示されたら、SUSE Linux 11 SP2メディアから必要なソフトウェア(iscsitarget RPM)をインストールします。
[サービス]をクリックして、[When Booting(ブート時)]オプションを選択して、オペレーティングシステムのブート時にサービスが開始するようにします。
iSCSI用の現行のOCFリソースエージェントが認証をサポートしていないため、[Global(グローバル)]をクリックしてから[No Authentication(認証なし)]を選択します。
[ターゲット]、[追加]の順にクリックして、新規ターゲットを追加します。
iSCSI TargetはIDを自動生成し、使用可能なLUN(ドライブ)の空のリストを表示します。
[追加]をクリックして、新しいLUNを追加します。
LUN番号は0のままで、[パス]ダイアログ(Type=fileioの下)を参照して、作成した/localdataファイルを選択します。ストレージ専用のディスクがある場合は、/dev/sdcなどのブロックデバイスを指定します。
12と13の手順を繰り返して、今回はLUN 1と/networkdataを追加します。
その他のオプションはデフォルトのままにしておきます。[OK]をクリックしてから[次]をクリックします。
[次]をもう一度クリックしてデフォルト認証を選択してから、[完了]をクリックして設定を終了します。iSCSIの再起動を要求された場合は、それを受け入れます。
YaSTの終了.
上記の手順を行うことにより、IPアドレス10.0.0.3のサーバに2つのiSCSI Targetが公開されます。各クラスタノードで、ローカルデータ共有ストレージデバイスをマウントできることを確認してください。デバイスのフォーマットも行う必要があります(1回):
片方のクラスタノード(node1)に接続して、YaSTを開始します。
[Network Devices (ネットワークデバイス)]>[Network Settings (ネットワーク設定)]を選択します。
[概要]タブが選択されていることを確認します。
表示されているリストからセカンダリNICを選択して、タブで[編集]に進み、Enterを押します。
[アドレス]をクリックして、静的IPアドレス 10.0.0.1を割り当てます。これが内部iSCSI通信IPになります。
[次]を選択して、[OK]をクリックします。
[ネットワークサービス]、[iSCSIイニシエータ]の順にクリックします。
プロンプト画面が表示されたら、SUSE Linux 11 SP2メディアから必要なソフトウェア(open-iscsi RPM)をインストールします。
[サービス]をクリックし、[When Booting(ブート時)]を選択して、ブート時にiSCSIサービスが開始するようにします。
[Discovered Targets(検出したターゲット)]をクリックして、[ディスカバリ]を選択します。
iSCSIのIPアドレス(10.0.0.3)を指定し、[No Authentication(認証なし)]を選択して、[次]をクリックします。
IPアドレスが10.0.0.3である検出されたiSCSI Targetを選択して、[ログイン]を選択します。
[Startup(起動)]ドロップダウンで自動に切り替えて、[No Authentication(認証なし)]を選択してから、[次]をクリックします。
[Connected Targets(接続済みターゲット)]タブに切り替えて、ターゲットに接続していることを確認します。
環境設定を終了します。これで、iSCSI Targetがクラスタノード上でブロックデバイスとしてマウントされました。
YaSTメインメニューで、[システム]、[パーティショナ]の順に選択します。
[System View(システムビュー)]で、リストに新しいハードディスク(/dev/sdbや/dev/sdcなど)が表示されます。これらはIET-VIRTUAL-DISKタイプになります。リストの最初にタブを切り替えて(ローカルストレージが表示されます)、そのディスクを選択してから、Enterを押します。
[追加]を選択して、空のディスクに新規パーティションを追加します。ディスクをプライマリex3パーティションとしてフォーマットし、マウントはしないでおきます。[Do not mount partition(パーティションをマウントしない)]オプションが選択されていることを確認します。
[次]を選択し、行われる変更内容を確認してから[完了]を選択します。この共有iSCSI LUNに1つの大きなパーティションを作成することにした場合、最終的に/dev/sdb1またはこれと同様のフォーマット済みディスク(以後 /dev/<SHARED1>と表記)が作成されているはずです。
パーティショナに戻り、/dev/sdcまたはネットワークストレージに相当するブロックデバイスに対してパーティション作成/フォーマットのプロセス(手順16-19)を繰り返します。これにより、/dev/sdc1パーティションまたはこれと同様のフォーマット済みディスク(以後/dev/<NETWORK1>と表記)が作成されます。
YaSTの終了.
最後に、マウントポイントを作成し、ローカルパーティションのマウント処理を次の方法でテストします(実際のデバイス名は個別の実装によって異なります):
# mkdir /var/opt/novell # mount /dev/<SHARED1> /var/opt/novell
新規パーティション上にファイルを作成でき、パーティションがマウントされているところでは必ずファイルが表示されるはずです。
アンマウントするには:
# umount /var/opt/novell
上記手順のステップ1~15を繰り返して、各クラスタノードがローカル共有ストレージをマウントできることを確認します。ただし、ステップ5のノードIPを別のIPに置き換えます(たとえばnode02 > 10.0.0.2)。
Sentinelをインストールする方法には2つのオプションがあります。Sentinelのすべての部分を共有ストレージにインストールする方法(--locationオプションを使用して、Sentinelのインストールを共有ストレージのマウント先にリダイレクトする)と、アプリケーション変数データのみを共有ストレージに配置する方法です。
サンプルソリューションでは、後者の方法を採用し、Sentinelをホストする各クラスタノードにSentinelをインストールします。初めてSentinelをインストールする際には、アプリケーションバイナリ、環境設定、およびすべてのデータストアを含む完全インストールを行います。以後、他のクラスタノードにインストールする際にはアプリケーションのみをインストールし、実際のSentinelデータはその後(共有ストレージがマウントされた後など)に利用可能になるものとします。
サンプルソリューション:
このサンプルソリューションでは、Sentinelを各クラスタノードにインストールし、アプリケーション可変データのみを共有ストレージに保管します。こうすることで、アプリケーションバイナリと環境設定が標準の場所に保管され、RPMの検証や特定のシナリオでのウォームパッチのサポートも可能になります。
最初のノードインストール
いずれかのクラスタノード(node01)に接続して、コンソールウィンドウを開きます。
Sentinelインストーラ(tar.gzファイル)をダウンロードして、そのクラスタノードの/tmpに保管します。
次のコマンドを実行します。
mount /dev/<SHARED1> /var/opt/novell
cd /tmp
tar -xvzf sentinel_server*.tar.gz
cd sentinel_server*
./install-sentinel --record-unattended=/tmp/install.props
標準インストールを最後まで実行し、Sentinelの環境設定を適切に行います。インストーラはバイナリ、設定、データベースをインストールし、ユーザ名とパスワードおよびネットワークポートをセットアップします。
Sentinelを起動して、基本機能をテストします。標準の外部クラスタノードIPを使用してSentinelにアクセスできます。
Sentinelをシャットダウンして、共有ストレージをマウント解除します。
rcsentinel stop
umount /var/opt/novell
これにより、自動起動スクリプトが削除され、クラスタはSentinelを管理できるようになります。
cd /
insserv -r sentinel
後続のノードインストール
その他のノードでインストールを繰り返します:
最初のSentinelインストーラはSentinel自体が使用するユーザアカウントを作成します。そして、インストール時点から次に使用可能なユーザIDを使用します。後続のインストールを無人モードで実行すると、アカウント作成時に使用したのと同じユーザIDを使用しようとしますが、(クラスタノードがインストール時のノードと同じでない場合には)競合が発生する可能性があります。以下のいずれかを行うことを強くお勧めします。
クラスタノード全体でユーザアカウントデータベースを(手動でLDAPからまたは同様の方法で)同期して、後続のインストールを実行する前に同期を完了させておきます。この場合、インストーラはユーザアカウントの存在を検出して、既存のアカウントを使用します。
後続の無人インストールの結果を確認します。同じユーザIDでユーザアカウントを作成できなかった場合、警告が出ている可能性があります。
各追加クラスタノード(node02)に接続して、コンソールウィンドウを開きます。
次のコマンドを実行します:
cd /tmp
scp root@node01:/tmp/sentinel_server*.tar.gz
scp root@node01:/tmp/install.props
tar -xvzf sentinel_server*.tar.gz
./install-sentinel --no-start --cluster-node --unattended=/tmp/install.props
cd /
insserv -r sentinel
この処理が終わると、Sentinelがすべてのノードにインストールされているはずです。しかし、各種キーが同期されるまで、最初のノード以外のノードではSentinelが正常に動作しない可能性があります。これは、クラスタリソースを設定した場合に発生します。
各ノードにクラスタソフトウェアをインストールし、各クラスタノードをクラスタマネージャに登録します。この操作の手順はクラスタ実装によって異なりますが、最終的には各クラスタノードがクラスタ管理コンソールに表示されている状態になります。
サンプルソリューションでは、SUSE Linux High Availability Extensionをセットアップし、それにSentinel固有のリソースエージェントをオーバーレイします。:
Sentinelの監視にOCFリソースエージェントを使用しない場合は、ローカルクラスタ環境用に同様の監視ソリューションを開発する必要があるでしょう。Sentinel用のOCFリソースエージェントはシンプルなシェルスクリプトで、さまざまな検査を実行してSentinelが機能しているかどうかを検証します。独自に開発する場合は、既存のリソースエージェントを参考に調べることをお勧めします(リソースエージェントはSentinelダウンロードパッケージのsentinel-ha.rpmに含まれています)。
SLE HAEクラスタの設定の仕方は数多くありますが、ここでは単純なオプションを選ぶことにします。最初のステップとして、SLE HAEコアソフトウェアをインストールします。その手順については『SLE HAE Documentation』に詳しく説明されています。SLESアドオンのインストールについては、『Deployment Guide』を参照してください。
このサンプルソリューションの場合、SLE HAEをすべてのクラスタノード(node01およびnode02)にインストールする必要があります。このアドオンをインストールすると、コアとなるクラスタ管理および通信ソフトウェアだけでなく、クラスタリソースの監視に使用される多数のリソースエージェントもインストールされます。
クラスタソフトウェアがインストールされたなら、さらにRPMをインストールしてSentinel固有のクラスタリソースエージェントを追加する必要があります。このRPMはnovell-Sentinel-ha-7.1*.rpmで、Sentinelをインストールする際にアンパックした通常のSentinelダウンロードに含まれています。
各クラスタノードで、novell-Sentinel-ha-7.1*.rpmを/tmpにコピーしてから、次のコマンドを実行します。
cd /tmp
rpm -i novell-Sentinel-ha-7.1*.rpm
クラスタソフトウェアを設定して、各クラスタノードをクラスタのメンバーとして登録する必要があります。この設定の一部として、フェンシングとSTONITHリソースもセットアップすることで、クラスタの整合性を保つことができます。
サンプルソリューションでは、基本的に、追加の冗長性や高度な機能を含めない最もシンプルな構成を使用します。また、(一般に好まれるマルチキャストアドレスではなく)ユニキャストアドレスを使用します。ネットワーク管理者とのやり取りが少なく済み、かつテスト目的には十分であるからです。加えて、シンプルなSBDベースのフェンシングリソースもセットアップします。
サンプルソリューション:
サンプルソリューションでは、内部クラスタ通信にプライベートIPアドレスを使用し、ネットワーク管理者へのマルチキャストアドレスの要求が最小限で済むようにユニキャストを使用します。ソリューションでは、iSCSI Targetも使用します。これは、フェンシングのためにSBDデバイスの役割を果たす共有ストレージをホストしているのと同じSUSE Linux VMに設定されます。前述のように、iSCSIデバイスは任意のファイルまたはブロックデバイスを使用して作成できますが、ここでは分かりやすくするために専用のファイルを作成して使用することにします。
以下の設定ステップは、「共有ストレージのセットアップ」のステップと非常によく似ています:
SBDのセットアップ
storage03に接続して、コンソールセッションを開始します。次のddコマンドを使用して、希望する任意のサイズのブランクファイルを作成します:
dd if=/dev/zero of=/sbd count=1024 bs=1024
ここでは、(/dev/zero pseudo-deviceからコピーして)ゼロ(0)を埋め込んだ1MBのファイルを作成します。
このファイルをiSCSI Targetとして設定します:
コマンドラインからYaSTを実行します(またはGUIを使用することもできます): /sbin/yast
[ネットワークサービス]、[iSCSI ターゲット]の順に選択します。
[ターゲット]をクリックして、既存のターゲットを選択します。
[編集]を選択します。UIに使用可能なLUN(ドライブ)のリストが表示されます。
[追加]を選択して、新しいLUNを追加します。
LUN番号は2のままにしておきます。[パス]ダイアログを参照して、作成した/sbdファイルを選択します。
その他のオプションはデフォルトのままにしておき、[OK]を選択してから[次]を選択し、もう一度[次]をクリックしてデフォルト認証オプションを選択します。
[完了]をクリックして、設定を終了します。必要に応じてサービスを再起動します。YaSTの終了.
メモ:以下のステップでは、各クラスタノードが他のすべてのクラスタノードのホスト名を解決できなければなりません(それができないと、ファイル同期サービスcsync2が失敗します)。DNSがセットアップされていないまたは使用できない場合は、各ホストのエントリを/etc/hostsファイルに追加します。このファイルには、hostnameコマンドを実行して返されるような各IPとそのホスト名がリストされています。
上記の手順を行うことにより、IPアドレス10.0.0.3(storage03)のサーバにSBDデバイスのiSCSI Targetが公開されます。
ノードの設定
クラスタノード(node01)に接続して、コンソールを開きます:
YaSTを実行します。
[ネットワークサービス]、[iSCSIイニシエータ]の順に開きます。
[Connected Targets(接続済みターゲット)]を選択してから、上記の手順で設定したiSCSI Targetを選択します。
[ログアウト]オプションを選択して、Targetをログアウトします。
[Discovered Targets(検出したターゲット)]タブに切り替えて、[Target(ターゲット)]を選択し、もう一度ログインし直して、デバイスのリストを更新します(自動起動オプションと[No Authentication(認証なし)]はそのままにしておきます)。
[OK]を選択して、iSCSIイニシエータツールを終了します。
[システム]、[Partitioner(パーティショナ)]の順に開いて、SBDデバイスを1MB IET-VIRTUAL-DISKとして特定します。このデバイスは/dev/sddまたは同様の形式でリストされます。どちらかを確認します。
YaSTの終了.
コマンドls -l /dev/disk/by-id/を実行して、上記の手順で特定したデバイス名にリンクされているデバイスIDを確認します。
コマンドsleha-initを実行します。
バインド先のネットワークアドレスの入力を要求されたら、外部NIC IP (172.16.0.1)を指定します。
デフォルトのマルチキャストアドレスおよびポートを受け入れます。この設定は後で上書きします。
SBDの有効化に「y」と入力してから、/dev/disk/by-id/<device id>を指定します。<device id>は上記の手順で特定したIDです(Tabキーを使ってパスを自動補完することができます)。
ウィザードを最後まで進めて、エラーの報告がないことを確認します。
YaSTを起動します。
[High Availability(高可用性)]、[Cluster(クラスタ)]の順に選択します(一部のシステムでは[Cluster(クラスタ)]を選択するだけです)。
左のボックスで、[Communication Channels(通信チャネル)]が選択されていることを確認します。
設定の最上部行にタブで移動し、udpの選択をudpuに変更します(これで、マルチキャストを無効にし、ユニキャストを選択します)。
[Add a Member Address(メンバアドレスを追加)]を選択して、このノード(172.16.0.1)を指定してから、この手順を繰り返して他のクラスタノード(172.16.0.2)を追加します。
[完了]をクリックして設定を完了します。
YaSTの終了.
コマンド/etc/rc.d/openais restart を実行して、新しい同期プロトコルでクラスタサービスを再起動します。
各追加クラスタノード(node02)に接続して、コンソールを開きます:
次のコマンドを実行します: sleha-join
最初のクラスタノードのIPアドレスを入力します。
環境によっては、クラスタ通信が正しく初期化されないことがあります。クラスタが起動しない場合(openaisサービスが開始できない場合):
corosync.confをnode1からnode02に手動でコピーするか、ノード1でcsync2 -x -vを実行する、またはYaSTを使用してnode02上にクラスタを手動で設定します。
node02で/etc/rc.d/openais startを実行します。
場合によっては、xinetdサービスが新規csync2サービスを正しく追加できないために、スクリプトが失敗する可能性があります。他方のノードがクラスタ設定ファイルをこのノードに同期できるようにするためには、このサービスが必須です。csync2 run failed (csync2の実行が失敗しました)のようなエラーが表示されるときは、この問題である可能性があります。この問題を修復するには、kill -HUP `cat /var/run/xinetd.init.pidを実行してから、sleha-joinスクリプトを再実行します。
この時点で、各クラスタノードでcrm_monを実行できるようになっており、クラスタが正常に実行していることを確認できるはずです。または、Webコンソール'hawk'を使用することもできます。デフォルトのログイン資格情報は'hacluster / linux'です。
この例では、さらに2つのパラメータを微調整する必要があります。この調整がお客様の運用クラスタに適用されるかどうかは、お客様のクラスタ設定により異なります。
グローバルクラスタオプションno-quorum-policyをignoreに設定します。このようにするのは、ノードが2つしかないクラスタで、どちらかのノードに障害が発生すると必要数が満たされなくなり、クラスタ全体がシャットダウンしてしまうからです: crm設定プロパティno-quorum-policy=ignore
メモ:クラスタに3つ以上のノードがある場合は、このオプションを設定しないでください。
グローバルクラスタオプションdefault-resource-stickinessを1に設定します。このように設定することで、リソースマネージャはリソースを循環させるのではなく、一定の場所で実行したままにします: crm設定プロパティdefault-resource-stickiness=1。
「クラスタのインストール」で説明したように、このソリューションではSLE HAEで実行するコアサービスを監視するためにOCFリソースエージェントが使用されていますが、必要に応じてその代わりになるものも作成できます。また、このソフトウェアは他のいくつかのリソースに依存しています。そのために、SLE HAEにはリソースエージェントがデフォルトで使用されるようになっています。SLE HAEを使用しない場合は、何か他のテクノロジを使用して以下の追加リソースを監視する必要があります。
このソフトウェアが使用する共有ストレージに相当するファイルシステムリソース。
サービスへのアクセスに使用する仮想IPに相当するIPアドレスリソース。
ソフトウェアが設定およびイベントメタデータを保管するために使用するPostgresデータベースソフトウェア。
他にもセキュリティインテリジェンス用に使用されるMongoDBやActiveMQメッセージバスなどのリソースがあり、少なくとも現時点ではコアサービスの一部として監視されています。
サンプルソリューション
サンプルソリューションでは、シンプルなファイルシステムリソースエージェントなど、必須リソースは単純なものになっています。必要であれば、cLVM(論理ボリューム対応のファイルシステム)のようなより高性能なクラスタリソースを使用することもできます。
サンプルソリューションでは、クラスタ設定に役立つようにcrmスクリプトが提供されています。スクリプトは、Sentinelインストールの途中で生成される無人セットアップファイルから必要な設定変数を取り出します。セットアップファイルを生成していない場合、またはリソースの設定を変更する場合は、それに応じてスクリプトを編集できます。
Sentinelをインストールした元のノード(Sentinelの完全インストールを実行したノード)に接続し、次のコマンドを実行します(<SHARED1>は上記の作業で作成した共有ボリューム):
mount /dev/<SHARED1> /var/opt/novell
cd /usr/lib/ocf/resource.d/novell
./install-resources.sh
クラスタ内に生成される新規リソースに問題がある可能性もあります。その場合は、node02上で/etc/rc.d/openais restartを実行します。
install-resources.shスクリプトは、2つの値、すなわち一般ユーザがSentinelにアクセスするときに使用する仮想IPおよび共有ストレージのデバイス名の入力を要求し、その後必要なクラスタリソースを自動生成します。スクリプトに指定する共有ボリュームは既にマウント済みのものでなければならないこと、およびSentinelインストール時に作成された無人インストールファイル(/tmp/install.props)も必要であることに注意してください。このスクリプトは最初にインストールを実行したノードのみで実行すればよく、必要なすべての設定ファイルは他のノードに自動的に同期されます。
お客様の環境がこのサンプルソリューションとは異なる場合は、同一ディレクトリにあるresources.cliファイルを編集し、その中のプリミティブ定義を変更してください。たとえば、サンプルソリューションではシンプルなファイルシステムリソースを使用していますが、もっとクラスタ指向のcLVMリソースを望むお客様もおられるでしょう。
シェルスクリプトを実行した後、crmステータスコマンドを実行することができます。出力は次のように表示されます。
crm status
Last updated: Thu Jul 26 16:34:34 2012 Last change: Thu Jul 26 16:28:52 2012 by hacluster via crmd on node01 Stack: openais Current DC: node01 - partition with quorum Version: 1.1.6-b988976485d15cb702c9307df55512d323831a5e 2 Nodes configured, 2 expected votes 5 Resources configured.
Online: [ node01, node02 ]
stonith-sbd (stonith:external/sbd): Started node01
Resource Group: sentinelgrp
sentinelip (ocf::heartbeat:IPaddr2): Started node01
sentinelfs (ocf::heartbeat:Filesystem): Started node01
sentineldb (ocf::novell:pgsql): Started node01
sentinelserver (ocf::novell:sentinel): Started node01
この時点で、関係するSentinelリソースがクラスタに設定されています。クラスタ管理ツールでcrm statusを実行するなどして、リソースがどのように設定およびグループ化されているかを確認できます。
一連の作業の最後のステップとして、ネットワークストレージを設定して、Sentinelがイベントパーティションを低コストなストレージに移行できるようにします。このステップは省略可能です。実際、ネットワークストレージに対してシステムの他の部分に行ったのと同じように高可用性を持たせる必要はありません。NFSボリュームでも、CIFSボリュームでも、どのディレクトリでも(SANにマウントされているかどうかに係わりなく)使用可能です。
上部メニューバーの[ストレージ]をクリックしてから[環境設定]を選択し、[Network storage(ネットワークストレージ)]から未設定のネットワークストレージのラジオボタンを1つ選択してセットアップします。
サンプルソリューション
サンプルソリューションでは、ネットワーク共有ストレージの場所としてシンプルなiSCSI Targetを、ローカルストレージとほぼ同じ設定で使用します。運用実装では、これとは異なるストレージテクノロジを使用することもあり得ます。
以下の手順に従って、Sentinelが使用するネットワークストレージを設定します。
メモ:このサンプルソリューションではiSCSI Targetを使用するので、ネットワークストレージとして使用するターゲットはディレクトリとしてマウントされます。そのため、このマウントを、ローカルストレージファイルシステムを設定するのと同様の方法で、ファイルシステムリソースとして設定する必要があります。セットアップには他にもいろいろな方法があり得るため、リソースインストールスクリプトの一部として自動的には設定されませんでした。ここで手動で設定します。
上記のステップを確認して、ネットワークストレージ用にどのパーティションが作成されたかを判別します(/dev/<NETWORK1>、つまり/dev/sdc1など)。必要であれば、パーティションをマウントできる空のディレクトリを作成します(/var/opt/netdataなど)。
ネットワークファイルシステムをクラスタリソースとしてセットアップします。Web GUIを使用するかまたは次にコマンドを実行します:
crm configure primitive sentinelnetfs ocf:heartbeat:Filesystem params device="/dev/<NETWORK1>" directory="<PATH>" fstype="ext3" op monitor interval=60s
ここで、/dev/<NETWORK1>は前述の「共有ストレージのセットアップ」セクションで作成したパーティションで、<PATH>はストレージをマウントする任意のローカルディレクトリです。
管理対象リソースのグループに新規リソースを追加します:
crm resource stop sentinelgrp crm configure delete sentinelgrp crm configure group sentinelgrp sentinelip sentinelfs sentinelnetfs sentineldb sentinelserver crm resource start sentinelgrp
現在リソースをホストしているノードに接続して(crm statusまたはHawkを使用)、ネットワークストレージが正しくマウントされていることを確認します(mountコマンドを使用)。
Sentinel Webインタフェースにログインします。
[ストレージ]を選択してから[環境設定]を選択し、未設定のネットワークストレージの[SAN(ローカルにマウント)]を選択します。
ネットワークストレージがマウントされるパスを、たとえば/var/opt/netdataのように入力します。
サンプルソリューションでは、シンプルなファイルシステムリソースエージェントなど、必要なリソースには単純なものを使用しています。お客様のご希望によっては、cLVM(論理ボリューム対応のファイルシステム)のようなより高性能なクラスタリソースを使用することも可能です。