heartbeatの構成

heartbeatクラスタには、次のような設定ファイルが必要です。

heartbeatがR1対応で実行されているか、 CRM モードで実行されているかに応じて、追加の設定ファイルが必要になります。詳細は、「heartbeat R1スタイルのクラスタでDRBDを使用する」および 「heartbeat CRM対応クラスタでDRBDを使用する」を参照してください。

ha.cfファイル

次に、簡単なha.cfファイルの例を示します。

autojoin none
mcast bond0 239.0.0.43 694 1 0
bcast eth2
warntime 5
deadtime 15
initdead 60
keepalive 2
node alice
node bob

autojoinnoneに設定すると、クラスタノードの自動検出が無効になります。この場合は、nodeオプションを使用して、明示的にクラスタノードを指定する必要があります。ノードの数が固定のクラスタ(R1スタイルのheartbeatクラスタ)の場合は、これによりクラスタの起動が高速になります。

この例では、bond0がクラスタの共有ネットワークのインタフェースで、 eth2が両ノード間のDRBDレプリケーション専用のインタフェースです。したがって、マルチキャストハートビートをbond0に使うことは適切です。同様に、eth2 は共有ネットワークでないため、ブロードキャストも適切な選択といえます。

次のオプションでノード障害の検出に関わるパラメータを設定します。これらのオプションで、対向ノードが動作していない可能性があるという警告を出すまでの時間(warntime)、対向ノードが動作していないと確定するまでの時間(deadtime)、およびクラスタ起動時に別のノードがチェックインするまで heartbeatが待機する最大時間(initdead)を指定します。 keepalive は、 heartbeatがキープアライブパケットを送信する間隔を指定します。これらのオプションはすべて秒単位で指定します。

nodeオプションでクラスタメンバを指定します。このオプションの値は、uname -nで指定したクラスタノードのホスト名と正確に同一である必要があります。

crmオプションを指定しない場合は、 CRMが無効になり、クラスタはR1対応モードで動作 します。構成にcrm yesと記述すると、 heartbeatはCRMモードで動作します。

authkeys ファイル

/etc/ha.d/authkeysには、クラスタノードの相互認証に使用する事前共有秘密鍵を指定します。これはrootだけが読み取り可能で、形式は次のようになります。

auth num
num algorithm secret

numは1から始まる簡単なキーインデックスです。通常は、authkeysファイルに記述されるキーは1つだけです。

algorithmは使用される署名アルゴリズムです。 md5またはsha1を使用できます。 crcは簡単な巡回冗長検査で、安全ではないため使用しないでください。

secretが実際の認証キーです。

次のシェルハックを使用して、生成された秘密鍵からauthkeysファイルを作成できます。

( echo -ne "auth 1\n1 sha1 "; \
  dd if=/dev/urandom bs=512 count=1 | openssl md5 ) \
  > /etc/ha.d/authkeys
chmod 0600 /etc/ha.d/authkeys

クラスタ構成をクラスタノードに配布する

ha.cfおよびauthkeys設定ファイルの内容を配布するには、 ha_propagateコマンドを使用します。これは、次のいずれかで呼び出せます。

/usr/lib/heartbeat/ha_propagate

または

/usr/lib64/heartbeat/ha_propagate

このユーティリティは、scpを使って、 /etc/ha.d/ha.cfに記述されたnodeに設定ファイルをコピーし、その後sshを使ってノードに接続し、 chkconfig heartbeat onを実行してシステム起動時にheartbeatサービスを有効にします。