このセクションでは、クラスタ環境を設定するためにそれぞれをインストールおよび設定する手順について説明します。SLES High Availability Extensionの設定の詳細については、SUSE Linux Enterprise High Availability Extentionのガイドを参照してください。
iSCSIターゲットは、クラスタ内のすべてのノードの共通ストレージとして設定するデバイスです。これは、iSCSI Initiatorがイーサネット接続経由でリモートアクセスできるようにLinuxサーバ上に作成される仮想ディスクです。iSCSI Initiatorは、ターゲット(iSCSI)に接続してサービスを要求するように設定されているクラスタ内のノードです。iSCSIターゲットは、イニシエータとして動作するホストがターゲットに接続できるように、常時稼動している必要があります。iSCSIサーバにiSCSIターゲットをインストールする前に、iSCSIターゲットに共通ストレージに使用できる十分な容量があることを確認します。SLES 12 SP1をインストールした後、他の2つのノードにiSCSI Initiatorパッケージをインストールします。
SLES 12 SP1をインストールする際に、次の操作を実行します。
独立したパーティションを作成し、そのパーティションパスをiSCSI共有ストレージパーティションとして指定します。
iSCSIターゲットパッケージをインストールします。
iSCSIサーバを設定するには:
ターゲットサーバ上にブロックデバイスを作成します。
端末でyast2 diskコマンドを実行します。
新しいLinuxパーティションを作成し、[フォーマットしない]を選択します。
[パーティションをマウントしない]を選択します。
パーティションサイズを指定します。
端末でyast2 iscsi-serverコマンドを実行します。
[サービス]タブをクリックし、[サービスの開始]で[ブート時]を選択します。
[ターゲット]タブで[追加]をクリックして、パーティションパス(SLESインストール時に作成)を入力します。
[完了]をクリックします。
端末でcat /proc/net/iet/volumeコマンドを実行し、iSCSIターゲットがインストールされているかどうかを検証します。
クラスタのすべてのノードで、iSCSIターゲットに接続するように、iSCSI Initiatorを設定する必要があります。
iSCSI Initiatorを設定するには:
iSCSI Initiatorパッケージをインストールします。
端末でyast2 iscsi-clientを実行します。
[サービス]タブをクリックし、[サービスの開始]で[ブート時]を選択します。
[接続したターゲット]タブをクリックし、[追加]をクリックしてiSCSIターゲットサーバのIPアドレスを入力します。
[認証なし]を選択します。
[次へ]をクリックし、[接続]をクリックします。
[起動の切り替え]をクリックして起動オプションを手動から自動に切り替えて、[次へ]をクリックします。
[次]をクリックし、[OK]をクリックします。
ターゲットに接続しているイニシエータのステータスをチェックするには、ターゲットサーバ上でcat /proc/net/iet/sessionコマンドを実行します。iSCSIサーバに接続しているイニシエータのリストが表示されます。
SBD用とOracleクラスタファイルシステム2(OCFS2)用の2つの共有ストレージパーティションを作成します。
共有ストレージをパーティション化するには:
端末でyast2 diskコマンドを実行します。
[エキスパートパーティショナ]ダイアログボックスで共有ボリュームを選択します。この例では、[エキスパートパーティショナ]ダイアログボックスで[sdb]を選択します。
[追加]をクリックし、[プライマリパーティション]オプションを選択して[次へ]をクリックします。
[カスタムサイズ]を選択し、[次へ]をクリックします。この例では、カスタムサイズは10MBです。
[フォーマットのオプション]で[パーティションをフォーマットしない]を選択します。この例では、[ファイルシステムID]は[0x83 Linux]です。
[マウントのオプション]で[パーティションをマウントしない]を選択し、[完了]をクリックします。
[追加]をクリックし、[プライマリパーティション]を選択します。
[次へ]をクリックし、[最大サイズ]を選択して[次へ]をクリックします。
[フォーマットのオプション]で[パーティションをフォーマットしない]を選択します。この例では、[ファイルシステムID]は[0x83 Linux]です。
[マウントのオプション]で[パーティションをマウントしない]を選択し、[完了]をクリックします。
HA Extensionをインストールするには:
NetIQのダウンロードのWebサイトに移動します。
[Product or Technology]メニューで、[SUSE Linux Enterprise HAExtension]を選択し、[送信]をクリックします。
メモ:システムアーキテクチャに基づいて適切なHA Extension ISOファイルを選択し、インストールします。
各サーバにISOファイルをダウンロードします。
[YaST コントロールセンター]ダイアログボックスを開いて、[アドオン製品]>[追加]の順にクリックします。
[Browse (参照)]をクリックし、ローカルISOイメージを選択して[Next (次へ)]をクリックします。
[ソフトウェアの選択およびシステムタスク]ダイアログボックスで、[高可用性]を選択します。もう一方のサーバでこの手順を繰り返します。
ハートビートのユニキャストIPアドレスを設定します。
両方のノードでもう1つのインタフェースに静的IPアドレスを設定します。このアドレスは、ノード間通信(ハートビート)に使用します。この例では、Node1のIPアドレスは10.10.10.13、Node2のIPアドレスは10.10.10.14です。
2個のサーバを、ホスト名を使用してpingし、2個のサーバ間の接続をテストします。
重要:一方のマシンからもう一方のマシンにpingできない場合、ローカルの/etc/hostsファイルを編集して、もう一方のマシンのノードのホスト名とIPアドレスを追加します。この例では、/etc/hostsには次の行が含まれます。
10.10.10.13 sles11sp2-idm1
10.10.10.14 sles11sp2-idm2
Node1の端末でyast2 clusterコマンドを実行します。
[Cluster - 通信チャネル]ダイアログボックスで、次の詳細情報を指定します。
[トランスポート]プロトコルをUDPUに設定します。
[Bind Network Address (バインドネットワークアドレス)]を指定します。これは、ユニキャストIPアドレスのネットワークアドレスです。この例では、バインドネットワークアドレスは10.10.10.0です。
[Multicast port (マルチキャストポート)]を指定します。この例では、マルチキャストポートは5405です。
[Add (追加)]をクリックして、メンバーアドレスに各ノードのIPアドレスを入力します。この例では、Node1のIPアドレスは10.10.10.13、Node2のIPアドレスは10.10.10.14です。
[Auto generate Note ID (ノードIDの自動生成)]を選択して、[Next (次へ)]をクリックします。
[Cluster - セキュリティ]ダイアログボックスで、[セキュリティ認証を有効にする]を選択し、[Threads (スレッド数)]に「1」を設定して、[Generate Auth Key File (認証キーファイルの生成)]をクリックします。
これにより、他のノードのクラスタへの参加を許可する認証キーが作成されます。キーが保存される場所は/etc/corosync/authkeyです。このファイルをもう一方のノードにコピーします。
[Cluster - サービス]ダイアログボックスで、[オン - 起動時にopenaisを起動]を選択して、[今すぐopenaisを起動する]をクリックします。
[Start Management as well (管理も開始する)]を選択して、クラスタをcrm_guiで管理できるようにします。詳細については、セクション A.2.2, すべてのノード上のiSCSI Initiatorの設定を参照してください。
[Sync Host (同期ホスト)]パネルで、次のアクションを実行します。
[Add (追加)]をクリックして、クラスタノードのホスト名を追加します。
[Generate Pre-Shared-Keys (事前共有キーの生成)]をクリックして、ノード間で設定ファイルを同期して、もう一方のノードにコピーします。キーファイルは/etc/csync2/key_hagroupに保存されます。
[Sync File (同期ファイル)]パネルで、[Add Suggested Files (推奨ファイルの追加)]をクリックして、ノード間で同期する共通ファイルのリストを自動生成します。
[Turn csync2 ON (Csync2をオンにする)]をクリックして、[Next (次へ)]をクリックします。
[次へ]をクリックし、[終了]をクリックします。
passwd haclusterコマンドを実行し、すべてのノードにhaclusterユーザパスワードを設定します。
メモ:各ノードでhaclusterユーザに同じパスワードを設定します。
次のコマンドを実行して、設定ファイルと認証キーをもう一方のノードにコピーします。
# scp /etc/csync2/csync2.cfg node2:/etc/csync2/
# scp /etc/csync2/key_hagroup node2:/etc/csync2/
# scp /etc/corosync/authkey node2:/etc/corosync/
# scp /etc/corosync/corosync.conf node2:/etc/corosync/
設定ファイルをNode2にコピーした後、すべてのノードを再起動します。
csync2 -xvコマンドを実行します。
mkdir -p /shareディレクトリを作成して、共有ストレージをマウントします。
Node2で次の手順を実行します。
端末でyast2 clusterコマンドを実行します。
メモ:設定ファイルがすでにコピーされているので、ウィザードウィンドウは表示されません。
[サービス]タブで、[Check On -- Start openais at booting(チェックオン - 起動時にopenaisを起動)]を選択して、[今すぐopenaisを起動する]をクリックします。
[Configure Csync2 (Csync2の設定)]タブで、[Turn csync2 ON (Csync2をオンにする)]をクリックして、[完了]をクリックします。
mkdir -p /shareディレクトリを作成して、共有ストレージをマウントします。
クラスタが稼動するはずです。
端末でcrm_monコマンドを実行し、ステータスを検証します。次に出力例を示します。
============ Last updated: Fri Aug 5 16:38:36 2011 Stack: openais Current DC: node1 - partition with quorum Version: 1.1.2-2e096a41a5f9e184a1c1537c82c6da1093698eb5 2 Nodes configured, 2 expected votes 0 Resources configured. ============ Online: [node1 node2]
リソースとは、クラスタによって管理されるサービスまたはアプリケーションです。クラスタソフトウェアスタックは、リソースを監視して、稼動しているかどうかをチェックします。リソースが何らかの理由で実行を停止する場合、クラスタはその障害を検出し、そのリソースをもう一方のノードで起動または再起動することによって、高可用性を実現します。この例では、グローバルクラスタオプションはNode1で設定されています。
Node1でHAリソースを設定するには:
端末でcrm_guiコマンドを実行します。
[接続]メニュー>[ログイン]の順にクリックします。どちらかのノードのIPアドレスを使用してログインします。
[CRMの構成]タブをクリックし、[Default Resource Stickiness (デフォルトリソース粘着度)]を正の値に変更します。
これにより、クラスタ内のリソースが現在の場所に留まることが保証されます。この例では、値は1です。
[No Quorum Policy (クォーラムを持たない場合のポリシー)]を[ignore (無視)]に変更します。
これにより、ノードが1個停止しても、クラスタサービスが稼動し続けることが保証されます。
[Apply (適用)]をクリックします。
OCFS2ボリュームを作成する前に、次のリソースをクラスタ内のサービスとして設定する必要があります。
DLM (Distributed Lock Manager)
O2CB
STONITHリソース
OCFS2は、クラスタ内のすべてのノードで実行されるDLMリソースを必要とし、通常はクローンとして設定されます。この例では、OCFSリソースはNode1で設定されています。
Node1でDLMリソースとO2CBリソースを設定するには:
シェルを起動し、rootまたは同等のユーザとしてログインします。
端末でcrm configureコマンドを実行します。
次のコマンドを実行して、DLMとO2CBのプリミティブリソースを作成します。
primitive dlm ocf:pacemaker:controld op monitor interval="60" timeout="60" primitive o2cb ocf:ocfs2:o2cb op monitor interval="60" timeout="60"
メモ:DLMクローンリソースはDLMサービスを制御して、クラスタ内のすべてのノード上でこのサービスが開始されることを保証します。ベースグループの内部コロケーションおよび順序付けによって、O2CBサービスは、DLMサービスのコピーがすでに実行されているノード上でのみ開始されます。
次のコマンドを実行して、ベースグループとベースクローンを作成します。
group base-group dlm o2cb clone base-clone base-group meta interleave="true" target-role="Started"
showコマンドを実行して、変更を表示します。
commitコマンドを実行して、「Exit」と入力します。
デバイスの起動時に10MBのパーティションを作成することをお勧めします。(この例では、このSBDパーティションを/dev/sdb1と呼びます)
重要:変化しないデバイス名を使用するようにしてください。/dev/disk/by-idで始まるデバイス名を使用して、デバイスを使用する必要があります。たとえば、SBD STONITHデバイスとしてデバイス/dev/disk/by-id/scsi-149455400000000000000000003000000250600000f000000を割り当てるには、「sbd -d /dev/disk/by-id/scsi 149455400000000000000000003000000250600000f000000 create」と指定します。
ls -lコマンドを実行して、デバイス名を検証します。
端末で次のコマンドを実行して、Node1のSBDデバイスを初期化します。
sbd -d /dev/sdb1 create
sbd -d /dev/sdb1 dumpコマンドを実行して、デバイスに書き込まれている次の詳細情報をチェックします。
Header version: 2
Number of slots: 255
Sector size: 512
Timeout (watchdog): 5
Timeout (allocate): 2
Timeout (loop): 1
Timeout (msgwait): 10
SLES HA Extensionでは、カーネルのウォッチドッグサポートはデフォルトで有効です。ウォッチドッグサポートは、ハードウェア固有のウォッチドッグドライバを提供するさまざまなカーネルモジュールに付属しています。ハードウェアに適したウォッチドッグドライバが、システム再起動時に自動的にロードされます。
softdogは最も汎用性のあるドライバです。ほとんどのウォッチドッグドライバ名はwd、wdt、dogなどの文字列を含むため、次のコマンドを使用して、現在ロードされているドライバを確認します。
lsmod | grep wd
Node1でSBDデーモンを起動するには:
端末でrcopenais stopコマンドを実行して、OpenAISを停止します。
/etc/sysconfig/sbdファイルを追加して、次の行を追加します。
SBD_DEVICE="/dev/sdb1"
#The next line enables the watchdog support:
SBD_OPTS="-W"
メモ:SBDデバイスがアクセス不能な場合は、デーモンが起動できなくなり、OpenAISの起動が妨げられます。
端末でyast2 clusterコマンドを実行します。
[Configure Csync2 (Csync2の設定)]タブで、[Sync File (同期ファイル)]パネルの下の[Add (追加)]をクリックして、次のようにSBDファイルパスを指定します。
/etc/sysconfig/sbd
[OK]をクリックします。
[Sync File (同期ファイル)]パネルで、[Add Suggested Files (推奨ファイルの追加)]をクリックして、ノード間で同期する共通ファイルのリストを自動生成します。
csync2 -xvコマンドを実行します。
sbd -d /dev/sdb1 allocate <nodename>コマンドを実行して、ノードを割り当てます。このコマンドを2回実行して、ノード名をSDBデバイスに割り当てます。この例では、次のコマンドを実行します。
sbd -d/dev/sdb1 allocate sles11sp2-idm1 sbd -d/dev/sdb1 allocate sles11sp2-idm2
rcopenais startコマンドを実行して、OpenAISを起動します。
Node1でSBDをテストするには:
sbd -d /dev/sdb1 listコマンドを実行して、SBDデバイスからノードスロットとそれらの現在のメッセージをダンプします。
sbd -d /dev/sdb1 message SLES11SP2-idm2 testコマンドを実行して、テストメッセージをどちらかのノードに送信します。
ノードは、システムログにメッセージの受信を記録します。次にメッセージ例を示します。
Aug 29 14:10:00 SLES11SP2-idm2 sdb1: [13412]: info: Received command test from SLES11SP2-idm1 on disk /dev/sdb1
重要:この記録によって、SBDがノード上で実行されていることが確認され、メッセージを受信できることが示されます。
SBDのセットアップを完了するには、クラスタ情報ベース(CIB)内でSTONITH/フェンシングメカニズムとしてSBDをアクティブにします。Node1で、端末で次のコマンドを実行します。
node1# crm configure
crm(live)configure# property stonith-enabled="true"
crm(live)configure# property stonith-timeout="60s"
crm(live)configure# primitive stonith_sbd stonith:external/sbd params sbd_device="/dev/sdb1" meta is-managed="true"
crm(live)configure# commit
crm(live)configure# quit
メモ:stonith-timeoutに設定する値は、msgwait timeoutによって異なります。たとえば、default msgwait timeoutの値が10秒の場合、stonith-timeout値を60秒に設定します。
作業を始める前に、OCFS2ボリュームに使用するブロックデバイスを準備します。OCFS2ボリュームを使用する予定のデバイスを未割り当ての空き領域として残して、mkfs.ocfs2ユーティリティを使用してOCFS2ボリュームを作成およびフォーマットします。
Node1にOCFS2ボリュームを作成するには:
端末ウィンドウを開いて、rootとしてログインします。
crm_monコマンドを実行して、クラスタがオンラインかどうかをチェックします。
2個のクラスタノードをサポートする/dev/sdb2にOCFS2ファイルシステムを作成して、mkfs.ocfs2 -N 2 /dev/sdb2コマンドを実行します。
Node1にOCFS2ボリュームをマウントするには:
シェルを起動し、rootまたは同等のものとしてログインします。
crm configureコマンドを実行します。
OCFS2ファイルシステムをクラスタ内の各ノードにマウントするように、Pacemakerを設定します。
primitive ocfs2-1 ocf:heartbeat:Filesystem params device="/dev/sdb2" directory="/share" fstype="ocfs2" options="acl" op monitor interval="20" timeout="40"
次の手順を実行して、DLMリソースとO2CBリソースの設定で設定したベースグループにファイルシステムのプリミティブを追加します。
「edit base-group」と指定します。
viエディタで、次のようにグループを変更し、変更を保存します。
group base-group dlm o2cb ocfs2-1 meta target-role = "Started"
メモ:ベースグループの内部コロケーションおよび順序付けによって、Pacemakerは、O2CBリソースがすでに実行されているノード上でのみOCFS2-1リソースを開始します。
showコマンドを実行して、必要なリソースをすべて設定したことをチェックします。
commitコマンドを実行して、「Exit」と入力します。
次のコマンドを実行して、Node1でIPリソースを設定します。
node1# crm configure crm(live)configure# primitive clusterip ocf:heartbeat:IPaddr operations $id="clusterip-operations" op monitor interval="5s" timeout="60s" params ip="10.52.190.15" meta resource-stickiness="100" target-role="Started" crm(live)configure# group eDir_group clusterip meta is-managed="true" target-role="Started" crm(live)configure# show crm(live)configure# commit
クラスタノードにeDirectoryをインストールするには:
サポートされているバージョンのeDirectoryをインストールします。HAクラスタでeDirectoryを設定する段階的な手順については、『eDirectory 8.8 Installation Guide』の「Deploying eDirectory on High Availability Clusters」を参照してください。
重要:Node1にeDirectoryをインストールする前に、Node1で仮想IPが設定されていることを確認します。
[メタディレクトリサーバ]オプションを使用して、Node1にIdentity Managerをインストールします。
DCLUSTER_INSTALLオプションを使用して、Node2サーバにIdentity Managerエンジンをインストールします。
端末で./install.bin -DCLUSTER_INSTALL="true"コマンドを実行します。
インストーラがIdentity Managerファイルをインストールします。その際、eDirectoryとは何もやりとりしません。
次のコマンドを実行して、Node1でeDirectoryリソースを設定します。
node1# crm configure crm(live)configure# primitive eDirectory ocf:heartbeat:eDir88 operations $id="eDirectory-operations" op monitor interval="15s" enabled="true" timeout="60s" on-fail="restart" start-delay="30s" params eDir_config_file="/etc/opt/novell/eDirectory/conf/nds.conf" meta resource-stickiness="100" target-role="Started" crm(live)configure# edit eDir_group
viエディタでグループを変更し、次のようにclusteripの後にテキスト「eDirectory」を追加して変更を保存します。
group eDir_group clusterip eDirectory \
meta is-managed="true" target-role="Started"
crm(live)configure# show crm(live)configure# commit
PaceMaker GUIのメインウィンドウで、[保守]タブをクリックし、リソースが実行されていない場合はeDir_groupを起動します。次の図は、クラスタセットアップで稼動しているリソースを示します。