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

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 回のハートビート後) を検知するまでは何もしません。

フィードバック

フィードバックありがとうございました

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

送信