対象
対象クラウド環境
Oracle Cloud Infrastructure (以下、OCI と記載します。)
ブロック・ボリュームを iSCSI 接続した共有ディスク構成
対象バージョン
LifeKeeper for Linux v9.6.1 以降のすべてのバージョン
現象
lifekeeper.log に以下のメッセージが出力されたのち、リソースが切り替わらない、または切り替わるまでに時間がかかります。
ERROR:lkscsid:::007059:lkscsid: Device Sharing Status failed on '/dev/sdb', result:-1.
ERROR:lkscsid:::007078:lkscsid: DEVICE FAILURE on SCSI device '/dev/sdb', RETRY. ret=-1, errno=0x5, retry count=1.
また、messages に以下のメッセ―ジが継続的に出力されています。
iscsid: iscsid: Poll was woken by an alarm
iscsid: iscsid: re-opening session 1 (reopen_cnt 451)
iscsid: iscsid: disconnecting conn 0x55617ec59e00, fd 6
iscsid: iscsid: connecting to 169.254.2.4:3260
iscsid: iscsid: connect to 169.254.2.4:3260 failed (Connection refused)
iscsid: iscsid: deleting a scheduled/waiting thread!
原因
上記現象は、OCI 上のインスタンスから iSCSI 接続されているブロック・ボリュームへの接続性が失われた際、iSCSI イニシエーターがタイムアウトしたセッションを再確立するまで待機していることで、アプリケーション側へ I/Oエラーを返さないために発生します。
本現象が発生した場合は、以下の観点での調査をご検討ください。
・OCI 上インスタンスの負荷状況
・OCI 上インスタンスのブロック・ボリュームのアタッチメント状況
対処
本現象は各ディストリビューションで提供されている iSCSI イニシエーターに起因しているため、LifeKeeper 観点における対処方法はございません。
なお、参考情報とはなりますが、前述の iSCSI イニシエーターにおけるセッション再確立までのタイムアウトについては、iscsid.conf 設定ファイルの下記パラメーターにより秒単位で定義されています。
node.session.timeo.replacement_timeout = <second>
上記パラメーターは一般的なディストリビューションにおけるデフォルト値としては 120秒が指定されていますが、OCI としては 6000秒を推奨値としており、OCI 上で提供されているインスタンスのイメージでは 6000秒が設定されています。
Oracle Cloud Infrastructure ドキュメント
上記パラメーターに指定された秒数を小さくすることで、iSCSI イニシエーターの待機時間を減らし迅速なフェイルオーバーへつなげることが可能です。しかしながら、インスタンスが高負荷となる状況においては、フェイルオーバーの頻度が上がる可能性がありますので、お客様の環境要件や負荷状況により、適宜調整いただきますようお願いいたします。
iSCSI イニシエータ―のタイムアウト後の動作
iSCSI のセッションを再確立できた場合
この場合、LifeKeeper としても復旧を検知し、フェイルオーバーは発生しません。
iSCSI のセッションを再確立できない場合
この場合、LifeKeeper としてはファイルシステムリソースにおいて障害を検知し、リソース障害としてのフェイルオーバー処理を開始します。この処理の中で、ファイルシステムのアンマウントや LVM の解除などに失敗した場合、LifeKeeper は OS を強制再起動することにより、ノード障害としてフェイルオーバーを継続します。
誤ってブロック・ボリュームをデタッチした場合の対処
OCI上でインスタンスに対して元のブロック・ボリュームのアタッチと OCI から提供される iSCSI コマンドを実行してください。
LifeKeeper 観点では、ファイルシステムリソースにブロック・ボリュームのディスク ID を保持していますので、LifeKeeper 上での必要な対処はありませんが、リソースが起動できることの確認はお願いいたします。
もし上記の対処後も messages に前述のメッセージが引き続き出力され、LifeKeeper のリソース起動もできない場合は、OS 上の iSCSI サービスや OS 自体の再起動をお試しください。