この処理概要は IPv4 アドレスを保護する場合を例に記載しています。

起動処理 (restore)

  1. 保護対象の IP アドレスの確認
    保護している IP アドレスが物理 IP アドレスかどうかを確認します。
    物理 IP アドレスを保護している場合は、この時点で起動処理は成功で終了します。

    なお、[Restore and Recover] の設定(デフォルト設定 : [Enable])が [Disable] の場合は、以降の処理は実施せず、起動処理は成功で終了します。
  1. リンク状態の確認
    IP_NOLINKCHECK=1 が設定されている場合は、本項目の処理を実施せず、次の項目3. の処理へ移行します。

    以下のコマンドを実行し、出力の中に “NO-CARRIER” ステータスがあるかどうかにより、リンクダウン状態またはリンクアップ状態を判断します。
    # ip -o link show <デバイス>
    

    上記コマンドの結果においてデバイスがリンクアップ状態の場合は、次の項目3. の処理へ移行します。
    なお、デバイスがリンクダウン状態の場合は、一度だけデバイスの停止・起動を実施します。最終的にリンクアップ状態にならない場合は起動処理はエラーで終了します。

    RHEL8 系以降の環境の場合
    # nmcli connection down <デバイス>
    5秒待機(可変、IP_WAIT_LINKDOWN にて秒単位で変更可能)
    # nmcli connection up <デバイス>
    1秒待機(固定、変更不可)
    # ip -o link show <デバイス>
    

    SLES および RHEL7 系の環境の場合
    # ifdown <デバイス>
    5秒待機(可変、IP_WAIT_LINKDOWN にて秒単位で変更可能)
    # nmcli connection up <デバイス>
    1秒待機(固定、変更不可)
    # ip -o link show <デバイス>
    

    また、NetworkManager が有効な環境では、ip コマンドによるリンク状態の確認に加え、以下のコマンドを実行し、NetoworkManager の起動状態を確認します。確認に失敗した場合は起動処理はエラーで終了します。
    #nmcli connection show --active | grep -qE <デバイス>
    
  1. 割り当て状態の事前確認
    以下のコマンドを実行し、デバイスに割り当てられている IP アドレスを取得し、出力の中に仮想 IP アドレスが存在しないことを確認します。
    # ip -4 -o addr show dev <デバイス>
    

    仮想 IP アドレスが存在しない場合は、次の項目4. の処理へ移行します。
    仮想 IP アドレスが存在する場合は、監視処理と同一の項目を確認し、正常性を判断します。正常な場合は起動処理を成功で、そうでない場合は起動処理をエラーで終了します。
  1. 重複確認
    NOIPUNIQUE=1 が設定されている場合は、本項目は実施せずに次の項目5. の処理へ移行します。

    以下のコマンドを実行し、ローカルノード上の実 IP アドレスから割り当て予定の仮想 IP アドレスに対して疎通確認をします。応答がある場合は、仮想 IP アドレスが重複していると判断し、起動処理はエラーで終了します。
    # /opt/LifeKeeper/bin/lkping -b -c 1 -w IP_PINGTIMEOUT <仮想 IP>
    
  1. 仮想 IP アドレスの割り当ておよび ARP テーブルのフラッシュ
    まず、以下のコマンドを実行し、仮想 IP アドレスの割り当てを実施します。コマンドの結果により割り当てに失敗したと判断された場合は、起動処理はエラーで終了します。
    # ip -4 addr add <仮想 IP/プレフィックス> dev <デバイス>
    

    また、以下のコマンドを実行し、自ノード上の全てのネットワークデバイスに対して ARP キャッシュをフラッシュします。
    # ip neigh flush dev <デバイス>
    

    つぎに、以下のコマンドを実行し、仮想 IP アドレスを割り当てたネットワーク上の ARP テーブルをフラッシュします。
    # arping -Uq -c1 -s <仮想 IP> -I <デバイス> <仮想 IP>
    # arping -Aq -c1 -s <仮想 IP> -I <デバイス> <仮想 IP>
    # arping -Uq -c1 -s <仮想 IP> -I <デバイス> <ブロードキャストアドレス>
    # arping -Aq -c1 -s <仮想 IP> -I <デバイス> <ブロードキャストアドレス>
    

    なお、arping コマンドがインストールされていない場合に限り、仮想 IP アドレスを割り当てたネットワークデバイスに対してのみ、以下のコマンドを実行します。
    # ip neigh flush dev <デバイス>
    
  1. ソースアドレス設定の有効化
    IP リソースのプロパティ画面から Source Address Setting を有効にしている場合は、以下のコマンドを実行し、自ノードから仮想 IP アドレスが属するネットワークに対する通信の送信元アドレスを仮想 IP アドレスに設定します。
    # ip -4 route change <ネットワークアドレス/プレフィックス> src <仮想 IP>
    
  1. 疎通確認
    疎通確認処理は監視処理時と共通の処理を実施しています。別途記載している「疎通確認処理」の項目をご参照ください。この疎通確認の成功または失敗により、起動処理は成功またはエラーで終了します。

停止処理 (remove)

  1. 保護対象の IP アドレスの確認
    保護している IP アドレスが物理 IP アドレスかどうかを確認します。
    物理 IP アドレスを保護している場合は、この時点で停止処理は成功で終了します。
  1. 割り当て状態の確認
    以下のコマンドを実行し、デバイスに割り当てられている IP アドレスを取得し、出力の中に仮想 IP アドレスが存在することを確認します。
    # ip -4 -o addr show dev <デバイス>
    

    仮想 IP アドレスが存在しない場合は、停止処理は成功で終了します。
    仮想 IP アドレスが存在する場合は、次の項目3. の処理へ移行します。
  1. ソースアドレス設定の無効化
    IP リソースのプロパティ画面から Source Address Setting を有効にしている場合は、以下のコマンドを実行し、自ノードから仮想 IP アドレスが属するネットワークに対する通信の送信元アドレスを実 IP アドレスに設定します。
    # ip -4 route change <ネットワークアドレス/プレフィックス>
    
  1. 仮想 IP アドレスの取り外し
    以下のコマンドを実行し、仮想 IP アドレスの取り外しを実施します。コマンドの結果により停止処理は成功またはエラーで終了しますが、必ず次の項目5. 以降の処理を実施した上で終了します。
    # ip -4 addr delete <仮想 IP/プレフィックス> dev <デバイス>
    
  1. ホストルートの削除
    以下のコマンドを実行し、ホストルートを削除します。
    ip -4 route delete <仮想 IP/プレフィックス> dev <デバイス>
    
  1. ルーティングキャッシュのクリア
    以下のコマンドを実行し、ルーティングキャッシュをクリアします。
    # echo 0 > /proc/sys/net/ipv4/route/flush 2> /dev/null
    

監視処理 (quickCheck)

[Restore and Recover] の設定(デフォルト設定 : [Enable])が [Disable] の場合は、以降の処理は実施せず、監視処理は成功で終了します。

  1. 割り当て状態の確認
    以下のコマンドを実行し、デバイスに割り当てられている IP アドレスを取得し、出力の中に保護している IP アドレスが存在することを確認します。
    # ip -4 -o addr show dev <デバイス>
    

    保護している IP アドレスが存在しない場合は、この時点で監視処理はエラーで終了します。
    保護している IP アドレスが存在する場合は、次の項目2. の処理へ移行します。
  1. リンク状態の確認
    本項目において IP_NOLINKCHECK=1 が設定されている場合は本項目の処理を実施せず、次の項目3. の処理へ移行します。

    以下のコマンドを実行し、出力の中に “NO-CARRIER”ステータスがあるかどうかにより、リンクダウン状態またはリンクアップ状態を判断します。
    # ip -4 -o addr show dev <デバイス>
    

    上記コマンドの結果においてデバイスがリンクダウン状態の場合は、この時点で監視処理はエラーで終了します。

    また、NetworkManagerが有効な環境では、ip コマンドによるリンク状態の確認に加え、以下のコマンドを実行し、NetworkManager の起動状態を確認します。確認に失敗した場合はこの時点で監視処理はエラーで終了します。
    # nmcli connection --active grep -qE <デバイス>
    
  1. 疎通確認
    疎通確認処理は起動処理と共通の処理を実施しています。別途記載している「疎通確認処理」の項目をご参照ください。この疎通確認の成功または失敗により、監視処理は成功またはエラーで終了します。

監視処理が IP_QUICKCHECK_TIMEOUT の値(デフォルト値 : 12秒)で終わらない場合はタイムアウトが発生し、リソース障害として判定されます。

回復処理 (recover)

  1. 保護対象の IP アドレスの確認
    保護している IP アドレスが物理 IP アドレスかどうかを確認します。
    物理 IP アドレスを保護している場合は、この時点で回復処理はエラーで終了します。
  1. 回復処理の実施
    上述の停止処理と起動処理を順に実行し、仮想 IP アドレスの回復を試みます。

疎通確認処理

この疎通確認処理は起動処理と監視処理で共通の処理となっており、以下の条件により大きく 3種いずれかの挙動になります。

  • PingList の有無
  • NOBCASTPING の設定値 (0 または 1)

本項における処理の中で「成功」または「エラー」で終了したら、起動処理または監視処理の元の項目へ戻ってください。

ユニキャスト ping およびブロードキャスト ping による疎通確認

実施条件 : PingList 有りかつ、NOBCASTPING=0 または 1

  1. ユニキャスト ping による疎通確認
    以下のコマンドを実行し、PingList に記載されている各 IP に対してユニキャスト ping を実施します。
    # /opt/LifeKeeper/bin/lkping -b -c 1 -w IP_PINGTIME -I <仮想 IP> <PingList IP>
    

    上記コマンドにおいて 1つでも応答がある場合は、本処理は成功で終了します。
    上記コマンドにおいて 1つも応答がない場合は、次の項目2. の処理へ移行します。
  1. ブロードキャスト ping による疎通確認
    本項目において NOBCASTPING=1 が設定されている場合は、前の項目1. の処理に失敗していることを理由として、この時点において本処理はエラーで終了します。

    本項目において NOBCASTPING=0 が設定されている場合は、以下のコマンドを実行し、仮想 IP アドレスが属するネットワークに対してブロードキャスト ping を実施します。
    # /opt/LifeKeeper/bin/lkping <ブロードキャストアドレス> -b -c 1 -w IP_PINGTIME -I <仮想 IP> -z <自ノード IP>
    

    上記コマンドにおいて 1つでも応答がある場合は、本処理は成功で終了します。
    上記コマンドにおいて 1つも応答がない場合は、本処理はエラーで終了します。

疎通確認を実施せずに成功終了

実施条件 : PingList 無しかつ、NOBCASTPING=1
本条件においては疎通確認は実施せず、本処理は成功で終了します。

ブロードキャスト ping のみによる疎通確認

実施条件 : PingList 無しかつ、NOBCASTPING=0
以下のコマンドを実行し、仮想 IP アドレスが属するネットワークに対してブロードキャスト ping を実施します。

# /opt/LifeKeeper/bin/lkping -b -c 1 -w IP_PINGTIME -I <仮想 IP> -z <自ノード IP>

上記コマンドにおいて 1つでも応答がある場合は、本処理は成功で終了します。
上記コマンドにおいて 1つも応答がない場合は、本処理はエラーで終了します。

lkping コマンドについて

コマンドの概要

lkping コマンドは、Lifekeeper for Linux 用にカスタマイズされた疎通確認コマンドであり、LifeKeeper の一部のリソースに対する処理に利用されます。

ping コマンドとの差異

一般的に疎通確認に利用される ping コマンドと lkping コマンドでは、一部のオプションが異なりますが、疎通確認の内部動作は同じです。
lkping コマンドの結果がエラーとなるような状況では、ping コマンドでも同様にエラーとなることが想定されます。

lkping コマンド特有のオプション

以下のオプションについては lkping 特有です。その他のオプションは通常の ping コマンドと同じです。

-w : コマンドがタイムアウトするまでの秒数を指定。(ミリ秒ではない)
-z : ping 応答の受信を除外するアドレスを “,(カンマ)” 区切りで指定。

※-z オプションはブロードキャスト ping に対する自ノード上の IPアドレスからの応答を除外するために使用します。

IP Recovery Kit のパラメーターについて

処理概要の中で使用されている IP Recovery Kit のパラメーターについては、IPパラメータ一覧 をご参照ください。

フィードバック

お役に立ちましたか?

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

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

送信