[Storage][RHEL][HA] High Availality Add-OnとiSCSIデバイスと

LVM-ActivateリソースがDe-Activateに失敗する

作成したクラスタのFailover試験を行おうとするのだが、どうやら停止ノードのVM電源がOFFにならない。調べてみると、どうもLVM-Activationリソースのオフライン処理が失敗している模様。
そこで色々調べてみたら備忘録的に残したいネタがいくつか見つかったので掲載する。

RHELのバグというかなんというか。

探したらこんな情報があった。

どうやらiSCSIセッションが、LVM非アクティブ化処理を完了する前に切断されてしまうために、LVMに対するメタ情報の更新ができなくなってるようだ。ログを追いかけるとこんなふうに。

/var/log/messagesには以下の通り記述

Feb  8 12:26:55 nd001 iscsid[1032]: iscsid: Connection1:0 to [target: iqn.1992-04.com.emc:cx.virt2020bn657m.a0, portal: 192.168.110.20,3260] through [iface: default] is shutdown.
Feb  8 12:26:55 nd001 iscsiadm[207141]: Logging out of session [sid: 1, target: iqn.1992-04.com.emc:cx.virt2020bn657m.a0, portal: 192.168.110.20,3260]
Feb  8 12:26:55 nd001 iscsiadm[207141]: Logout of [sid: 1, target: iqn.1992-04.com.emc:cx.virt2020bn657m.a0, portal: 192.168.110.20,3260] successful.
Feb  8 12:26:55 nd001 systemd[1]: iscsi-shutdown.service: Succeeded.

/var/log/pacemaker/pacemaker.log

Feb 08 12:26:56 nd001.bluecore.net pacemaker-schedulerd[1248] (log_list_item)   info: Resource Group: clsgroup: cls_vol (ocf::heartbeat:LVM-activate):  Started nd001.bluecore.net
Feb 08 12:26:59  LVM-activate(cls_vol)[207425]:    INFO: Deactivating cls_vg
Feb 08 12:26:59  LVM-activate(cls_vol)[207425]:    ERROR:  Volume group "cls_vg" not found Cannot process volume group cls_vg
Feb 08 12:26:59  LVM-activate(cls_vol)[207425]:    ERROR: cls_vg: failed to deactivate.

確かにiSCSIセッションが先にぶち切られてるように見えますね。3-4secほど遅れてPacemaker.log側の記録がなされていることを確認しました。

対処法

どうやら、サービス側と依存関係を張ることが必要そうです。各ノードに対して私は以下のコマンドを実行しています。(history履歴を抜粋)

  675  mkdir /etc/systemd/system/resource-agents-deps.target.d
  676  cat > /etc/systemd/system/resource-agents-deps.target.d/rhbz1902208.conf <<EOF
  677  [Unit]
  678  After=blk-availability.service
  679  Wants=blk-availability.service
  680  EOF
  681  systemctl daemon-reload
  682  if (systemctl is-active pacemaker.service && ! systemctl is-active blk-availability.service) > /dev/null 2>&1; then systemctl start blk-availability.service; fi

詳細はRHのKnowledgebaseを参照ください。

Knowledgebaseの記載にこんなのが載っていたので合わせて掲載しときます(Powered by Deepl)

問題セクションのログスニペットでは、pacemaker.serviceが停止を終了する前にiscsi-shutdown.serviceが停止しました。その結果、LVM-activate(またはLVM)リソースが停止に失敗した時点で、iscsi-shutdown.serviceがすべてのiSCSIセッションからログアウトしていたため、そのボリュームグループを見つけることができませんでした。そのため、LVM-activateリソースエージェントはボリュームグループの非アクティブ化に失敗し、リソースの停止操作に失敗しました。リソースの停止操作に失敗した場合のPacemakerのデフォルトの応答は、障害が発生したノードをフェンスすることです。

ノードがフェンスされると、そのノードのシャットダウンロックはクリアされます。したがって、この問題が発生した場合、再起動ノードにロックされているはずのリソースは、フェンシング後に生き残ったノードで回復される可能性があります。shutdown-lockクラスタプロパティが機能していないように見えることがあります。

同様の問題は、iSCSI以外の方法で提示された物理ボリュームでも発生する可能性があります。これまでのところ、この問題は iSCSI でのみ発生しています。一般的に、systemd サービスの停止操作 (例: iscsi-shutdown.service の停止) は、LVM-activate リソースの停止操作が実行されたときに物理ボリュームが存在しなくなると、同様の問題を発生させる可能性があります。

https://access.redhat.com/solutions/5605931

PAGE TOP