現象:
LifeKeeper for Linux のIPリソースがISP状態である場合、iptablesのモジ
ュールのアンロードに失敗します。例えば、以下のようなコマンドはハングア
ップし、iptablesの再起動を行うことができません。
——————-
# service iptables restart
——————-
原因:
存在しないIPアドレスに対してpingを行ったあと、ARPテーブルのクリアを行
うとiptablesのモジュールがアンロードが行えなくなります。この問題はカー
ネルの不具合に起因しており、カーネル2.6.21で修正されています。
この現象は、LifeKeeperの有無に関わらず、以下の手順で再現することができ
ます。
——————-
# /bin/ping 存在しないIPアドレス -n -c1 -w1
# /sbin/arp -d 存在しないIPアドレス
# service iptables restart
——————-
LifeKeeperはIPリソースの起動時に、仮想IPアドレスと同じIPアドレスがネッ
トワーク上に存在しない事を確認するために、仮想IPアドレス宛のpingを行っ
ています。その後、ARPテーブルのクリアを行い、相手ノード上で仮想IPアド
レスが起動状態であった時のMACアドレスと仮想IPアドレスのキャッシュを削
除しています。この処理は上記の手順で行っている操作に一致するため、
iptablesのモジュールのアンロード失敗が発生します。
対象バージョン:
・LifeKeeper for Linuxの全てのバージョン
回避/対処方法:
このiptablesが再起動できない事象は、/etc/sysconfig/iptables-configの以
下のパラメータをyesからnoへ設定する事で回避可能です。
<変更前>
IPTABLES_MODULES_UNLOAD=”yes”
<変更後>
IPTABLES_MODULES_UNLOAD=”no”
また、何らかの理由でiptablesのアンロード/ロードが必要である場合は、IP
リソースを停止し、かつ他ノード上でIPリソースを起動した後であれば、本問
題は発生しません。
以上。
掲載日: 2008年12年26日