Save 37% off PRO during our Black Friday Sale! »

RHEL High Availability Add-On からLVMとの連携を確認する

F507086e15832a4344df6b10cdc5b179?s=47 localYouser
February 07, 2021

RHEL High Availability Add-On からLVMとの連携を確認する

RHELで使用するPacemaker+Colosyncの連携クラスタにおいて、ディスク排他制御の一つの方法としてLVM2と連携する方法がRH社の公開ドキュメントで取り上げられている。
実際にリソースエージェント内でどういう処理がなされているのか、その際の実装について調べた限りのものを記載する。

F507086e15832a4344df6b10cdc5b179?s=128

localYouser

February 07, 2021
Tweet

Transcript

  1. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ -LVMと連携したディスク排他制御- 2021年2月6日 BLUECORE.NET管理人 ろーかるゆーざー

  2. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ ここで確認したかった内容 • クラスタにおいて、ディスク切り替え制御はどのように行われているんだろ う? • LVM-Activation-Agentの動作を確認する

    • クラスタにおけるLVMディスク排他制御とDBサービス間の連携 • 現在提供されているOCF系エージェントの構成前提 • 現在私の環境で実装している内容について
  3. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ 説明上想定している構成について

  4. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ MariaDBクラスタ構成例(今私の環境にあるもの) Server Segment Storage Segment

  5. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ MariaDBクラスタにおける構成

  6. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ LVMによるディスク排他制御

  7. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ LVM(Logical Volume Manager)の構造

  8. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ クラスタ上でのLVMに対して行われてる制御を確認

  9. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ ブロックデバイスとしての認識状況を確認

  10. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ SCSIデバイスの接続状況を確認

  11. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ 何を持って排他制御とするか?

  12. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ 関係するリソースエージェント(System-IDの場合) • • • • •

    • • • • •
  13. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ リソースエージェントを眺めてみる(Activate処理)

  14. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ リソースエージェントを眺めてみる(De-Activate処理)

  15. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ リソースエージェントを眺めてみる(De-Activate処理)

  16. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ リソースエージェントがやっていること VG VG VG

  17. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ 要注意事項 • uname -nの出力結果とクラスタで認識するノード名は合わせよう • 私の環境では・・

    • クラスタで認識するノード名:nd001.bluecore.net と言う形式 • uname nの結果 : ND001と言う形式 ->名称不一致のため、想定通りに動作しなかった。 ->nmtuiコマンドを実行し、ホスト名をFQDN形式(小文字)にして解決した。 • VG単位で制御されることを理解しよう • VolumeGroup単位でノード間は移動する。 • 細かくLogicalVolumeを組んでる場合、まとめてまるごと移動することになる。 • ボリューム設計の際は1VG/1LV構成にしておくと構成要素が単純化して運用しやすいのかも。 • 所詮はソフトウェア排他制御 • 何も制御しない場合よりは排他制御が確実に行えそう • SystemIdが異なる場合、それは恐らくActivationが拒否られるものと考えられる • ただし、同時にvgchangeアクセスが発生したときにそれが処理しきれるかどうかは別の話 • まだStonithで最終的な制御はさせた方がクラスタの信頼性は高いのではないかと思う ->つまり、Stonithが不要だとは言い切れない構成であるという点は認識を持った方がよい。
  18. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ サービスの制御:RDBMS側

  19. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ SystemdにおけるMariadbの設定

  20. BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ BLUECORE.NET 趣味で自宅にITインフラ触ってる者だ サービス制御時の留意点 • RDBMSのリソースエージェントはそれが何を前提にしているのか、確認が 必要 • Promote/DemoteをさせるエージェントはMaster/Slave構成を前提としてる。

    • Master/Slave構成を取る->大抵は「レプリケーション」を前提としている • ぶっちゃけSystemdベースのサービス監視のみでも対応出来るように思 う。 • ただし、DB上の論理障害には弱い場合がある(SQL監視はしないため) • 単純にプロセス監視を行ってsystemdによってstart/stop/restartしてるだけ なので、この関連処理をみずから組んでSystemdと連携させるようにすると尚良 いのかもしれない。 • ocf::heartbeat:mysqlなどは、定期的にSQLコマンドとして表の行数をカウントす る処理を発行して動作の妥当性を監視している。