ハートビート設定項目の概要
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 回のハートビート後) を検知するまでは何もしません。
このトピックへフィードバック