ハートビート設定項目の概要

LifeKeeper のハートビートは、各サーバーが「生存」していることを確認するためにコミュニケーションパスを通じて LifeKeeper のサーバー間で送信される信号です。ハートビートに関しては、LifeKeeper が障害を検知する速さを決定する要素が 2 つあります。

  • 間隔: ハートビート信号を送信する時間の間隔(単位は秒)。また、この時間内に対向サーバーからハートビート信号を含むLCM信号を受信できなかった場合、ハートビート停止と判断する。
  • ハートビート回数: コミュニケーションパスが切断していると判定するハートビートの連続失敗回数。

これらのハートビートの値は、LifeKeeper デフォルトファイル /etc/default/LifeKeeper 内の以下の 2 つの設定項目で指定します。デフォルト値を使用した場合よりも早期にサーバーの障害を検知したい場合は、設定項目を変更することができます。

  • LCMHBEATTIME (間隔)
  • LCMNUMHBEATS (ハートビート回数)

次の表は、TCP および TTY 経由のハートビートの設定項目についてのデフォルト値と最小値の一覧です。TTY コミュニケーションパスは、媒体として通信速度が遅いため、間隔を 2 秒未満にすることはできません。

設定項目 デフォルト値 最小値
LCMHBEATTIME 5 1 (TCP) 2 (TTY)
LCMNUMHBEATS 3 2 (TCP、TTY)

LifeKeeper のクラスターで両方の間隔がデフォルト値に設定されていると仮定します。LifeKeeper は、サーバー間で 5 秒ごとにハートビートを送信します。通信障害によって 2 回のハートビートが途絶し、3 回目のハートビートで再開した場合、LifeKeeper はアクションを実行しません。コミュニケーションパスの切断継続時間がハートビート 3 回分になった場合は、LifeKeeper はそのコミュニケーションパスを切断と判定します。ただし、他方の冗長的なコミュニケーションパスも切断と判定されるまではフェイルオーバーを開始しません。

ハートビートの設定

設定項目とその値を追加するには、/etc/default/LifeKeeper ファイルを手動で編集する必要があります。通常、デフォルトファイルにはこれらの設定項目のエントリーが含まれていません。設定する値を含む次の行を最終行以降に追加してください。

LCMHBEATTIME=x

LCMNUMHBEATS=y

最小値を下回る値を設定した場合、LifeKeeper はその値を無視して代わりに最小値を採用します。

設定上の考慮事項

  • 間隔を 5 秒未満に設定すると、ネットワークの中断による誤ったフェイルオーバーを発生させるリスクが高くなるため、5 秒未満に設定する場合は、コミュニケーションパスをプライベートネットワーク上で構成してください。
  • 検証によると、ハートビート回数を 2 未満にした場合に誤ったフェイルオーバーの発生リスクが高まります。このため、この値は 2 以上に制限されています。
  • 誤ったフェイルオーバーを回避するため、間隔およびハートビート回数の値はどちらもクラスタ内のすべてのサーバーで必ず同じ値にする必要があります。このため、これらの値を編集する前に両方のサーバーで LifeKeeper を停止しておく必要があります。LifeKeeper の稼働開始後、アプリケーションを保護している状態でハートビートの設定項目を編集する場合は、コマンド "/opt/LifeKeeper/bin/lkstop -f" を使用できます。このコマンドは LifeKeeper を停止しますが、保護下のアプリケーションは停止しません。
  • LCMHBEATTIME および LCMNUMHBEATS の値に上限値はありません。ただし、非常に大きい数字に値を設定すると、LifeKeeper の障害検知能力は著しく損なわれます。例えば、両方の値を 25 に設定した場合、サーバー障害を検知するまで LifeKeeper は 625 秒間 (10 分間以上) 待機します。これはサーバーをリブートしてクラスタに再参加させるのに十分な時間です。

注記: TTY および TCP コミュニケーションパスの両方を使用する場合、各設定項目の値は両方のコミュニケーションパスに適用されます。唯一の例外は、TTY コミュニケーションパスの最小値である 2 未満の値が間隔に設定された場合です。

例えば、障害をできるだけ早く検知するために、LifeKeeper で許容される最小値を指定したとします。

LCMHBEATTIME=1

LCMNUMHBEATS=2

このとき LifeKeeper は TCP コミュニケーションパスの間隔に 1 秒を採用し、TTY の間隔には 2 秒を採用します。サーバー障害が発生すると、LifeKeeper は間隔の短い TCP の障害 (1 秒間隔の 2 回のハートビート後) を先に検知します。ただし、TTY の障害 (2 秒間隔の 2 回のハートビート後) を検知するまでは何もしません。

フィードバック

お役に立ちましたか?

はい いいえ
お役に立ちましたか
理由をお聞かせください
フィードバックありがとうございました

このトピックへフィードバック

送信