5.3 クラスタリソースの作成

クラスタで使用できるRA(リソースエージェント)には3種類あります。最初は、従来のHeartbeat 1スクリプトです。高可用性ではLSB初期化スクリプトを使用できます。最後に、クラスタには固有のOCF(Open Cluster Framework)エージェントのセットがあります。このマニュアルでは、LSBスクリプトとOCFエージェントについて説明します。

クラスタリソースを作成するには、crmツールを使用します。新しいリソースをクラスタに追加するには、一般的には次のような手順になります。

  1. シェルを開いてrootになります。

  2. crmを実行して、crmのインストールシェルを開きます。プロンプトがcrm(live)#に変化します。

  3. プリミティブIPアドレスを設定ます。

    crm(live)# configure
    crm(live)configure# primitive myIP ocf:heartbeat:IPaddr \
         params ip=127.0.0.99 op monitor intervall=60s

    前のコマンドはプリミティブに名前myIPを設定します。クラス(ここではocf)、プロバイダ(heartbeat)、およびタイプ(IPaddr)が必要です。さらに、このプリミティブではIPアドレスのようなパラメータを予期します。アドレスをセットアップに合わせて変更する必要があります。

  4. 行った変更を表示して確認します。

    crm(live)configure# show

    XML構造を表示するには、次を使用します。

    crm(live)configure# show xml
  5. 変更をコミットして反映させます。

    crm(live)configure# commit

5.3.1 LSB初期化スクリプト

すべてのLSBスクリプトは一般にディレクトリ/etc/init.dにあります。いくつかのアクションが実装され、少なくともstartstoprestartreloadforce-reloadstatusが実装されている必要があります(http://www.linux-foundation.org/spec/refspecs/LSB_1.3.0/gLSB/gLSB/iniscrptact.htmlで説明)。

これらのサービスの構成は標準化されていません。LSBをHigh Availabilityとともに使用する場合、それぞれのスクリプトの構成方法を理解してください。これについてのマニュアルは、/usr/share/doc/packages/PACKAGENAMEの対応するパッケージのマニュアルにあることがあります。

NOTE: 高可用性で使用されるサービスは変更しないでください

High Availabilityとともに使用する場合、サービスはどのような方法でも変更してはいけません。ブート、再起動、または手動でも開始または停止もしてはいけないということです。ただし、サービスが適切に構成されているか確認したい場合は手動で開始しますが、High Availabilityが起動する前に停止してください。

LSBリソースを使用する前に、このリソースの構成が存在し、すべてのクラスタノードで同一であることを確認してください。構成はHigh Availabilityによって管理されません。自分自身で管理する必要があります。

5.3.2 OCFリソースエージェント

すべてのOCFエージェントは/usr/lib/ocf/resource.d/heartbeat/にあります。これらはLSBスクリプトと同様の機能を持つ小規模なプログラムです。ただし、構成は常に環境変数で実行されます。すべてのOCFリソースエージェントは少なくともstartstopstatusmonitormeta-dataのアクションを持つ必要があります。meta-dataアクションは、エージェントの構成方法についての情報を取得します。たとえば、IPaddrエージェントについて詳細を知りたい場合は、次のコマンドを使用します。

OCF_ROOT=/usr/lib/ocf /usr/lib/ocf/resource.d/heartbeat/IPaddr meta-data

シンプルなXMLフォーマットに多くの情報が出力されます。出力はra-api-1.dtd DTDで検証できます。基本的に、このXMLフォーマットには3つのセクションがあります。最初ははいくつかの共通の説明、2番目は使用できるすべてのパラメータ、最後はこのエージェントの使用できるアクションです。

この出力は機械が読み取れる形式で、理解は困難です。このため、crmツールにはraコマンドがあり、リソースエージェントに関する別の情報を取得します。

# crm
crm(live)# ra
crm(live)ra#

コマンドclassesは、すべてのクラスとプロバイダのリストを返します。

crm(live)ra# classes
stonith
lsb
ocf / lvm2 ocfs2 heartbeat pacemaker
heartbeat

クラス(およびプロバイダ)に使用できるすべてのリソースエージェントの概要を取得するには、listを使用します。

crm(live)ra# list ocf
AudibleAlarm       ClusterMon         Delay                  Dummy
Filesystem         ICP                IPaddr                 IPaddr2
IPsrcaddr          IPv6addr           LVM                    LinuxSCSI
MailTo             ManageRAID         ManageVE               Pure-FTPd
Raid1              Route              SAPDatabase            SAPInstance
SendArp            ServeRAID          SphinxSearchDaemon     Squid
...

リソースエージェントの詳細情報は、metaで表示できます。

crm(live)ra# meta Filesystem ocf heartbeat
Filesystem resource agent (ocf:heartbeat:Filesystem)

Resource script for Filesystem. It manages a Filesystem on a shared storage medium.

Parameters (* denotes required, [] the default):
...

ビューアはQを押して終了できます。構成の例は、Section 6.0, シンプルなテスティングリソースのセットアップを参照してください。

5.3.3 NFSサーバの構成例

NFSサーバをセットアップするには、ファイルシステムリソース、drbdリソース、NFSサーバのグループとIPアドレスの3つのリソースが必要です。次のサブセクションでは、セットアップ方法を示します。

ファイルシステムリソースのセットアップ

filesystemリソースはOCFプリミティブリソースとして構成されます。開始および停止の要求時に、デバイスをディレクトリにマウントおよびアンマウントするタスクを担当しています。この場合、デバイスは/dev/drbd0でマウントポイントとして使用するディレクトリは/srv/failoverです。使用されるファイルシステムはxfsです。

次のコマンドをcrmシェルで使用して、ファイルシステムリソースを構成します。

crm(live)# configure
crm(live)configure# primitive filesystem_resource \
    ocf:heartbeat:Filesystem \
    params device=/dev/drbd0 directory=/srv/failover fstype=xfs

drbdの構成

drbd High Availability構成を開始する前に、drbdデバイスを手動でセットアップします。基本的には、これは/etc/drbd.confでdrbdを構成し、同期させています。drbd構成の正確な手順は、Storage Administration Guideに記載されています。ここでは、両方のクラスタノードの/dev/drbd0デバイスでアクセスされる、リソースr0を構成したと仮定します。

drbdリソースはOCFマスタスレーブリソースです。これはdrbd RAのメタデータの説明にあります。ただし、より重要なことは、メタデータのactionsセクションにはpromotedemoteアクションがあることです。これらはマスタスレーブリソースに必須で、その他のリソースでは一般に利用できません。

High Availabilityについては、マスタスレーブリソースは別のノードに複数のマスタを持つことがあります。マスタトスレーブを同じノードに持つこともできます。このため、このリソースをただ1つのマスタとスレーブを持ち、それぞれが別のノードで実行するように構成します。masterリソースのmeta属性でこれを実行します。マスタスレーブリソースはHigh Availabilityでのクローンリソースの特殊な種類です。マスタとスレーブはそれぞれクローンとしてカウントされます。

次のコマンドをcrmシェルで使用して、マスタスレーブリソースを構成します。

crm(live)# configure
crm(live)configure# primitive drbd_r0 ocf:heartbeat:drbd params
crm(live)configure# ms drbd_resource drbd_r0 \
   meta clone_max=2 clone_node_max=1 master_max=1 master_node_max=1 notify=true
crm(live)configure# commit

NFSサーバとIPアドレス

NFSサーバを常に同じIPアドレスで使用できるようにするため、マシンが通常操作に使用するアドレスのほかに追加のIPアドレスを使用します。このIPアドレスは、システムのIPアドレスに加えてアクティブなNFSサーバに割り当てられます。

NFSサーバとNFSサーバのIPアドレスは常に同じマシン上でアクティブにする必要があります。この場合、開始順序はそれ程重要ではありません。同時に開始してかまいません。これはグループリソースの代表的な要件です。

High Availability RA構成を開始する前に、NFSサーバをYaSTで構成します。システムでNFSサーバを起動させないでください。環境設定ファイルをセットアップするだけにします。この作業を手動で行うには、マニュアルページのexports(5) (man 5 exports)を参照してください。環境設定ファイルは/etc/exportsです。NFSサーバはLSBリソースとして構成されます。

IPアドレスをHigh Availability RA構成で完全に構成します。システムではこれ以外の変更は不要です。IPアドレスRAはOCF RAです。

crm(live)# configure
crm(live)configure# primitive nfs_resource lsb:nfsserver
crm(live)configure# primitive ip_resource ocf:heartbeat:IPaddr \
      params ip=10.10.0.1
crm(live)configure# group nfs_group nfs_resource ip_resource
crm(live)configure# commit
crm(live)configure# end
crm(live)# quit