Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

localYouser
February 07, 2021

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

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

localYouser

February 07, 2021
Tweet

More Decks by localYouser

Other Decks in Technology

Transcript

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

    View full-size slide

  2. BLUECORE.NET
    趣味で自宅にITインフラ触ってる者だ
    BLUECORE.NET
    趣味で自宅にITインフラ触ってる者だ
    ここで確認したかった内容
    • クラスタにおいて、ディスク切り替え制御はどのように行われているんだろ
    う?
    • LVM-Activation-Agentの動作を確認する
    • クラスタにおけるLVMディスク排他制御とDBサービス間の連携
    • 現在提供されているOCF系エージェントの構成前提
    • 現在私の環境で実装している内容について

    View full-size slide

  3. BLUECORE.NET
    趣味で自宅にITインフラ触ってる者だ
    説明上想定している構成について

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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










    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  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が不要だとは言い切れない構成であるという点は認識を持った方がよい。

    View full-size slide

  18. BLUECORE.NET
    趣味で自宅にITインフラ触ってる者だ
    サービスの制御:RDBMS側

    View full-size slide

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

    View full-size slide

  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コマンドとして表の行数をカウントす
    る処理を発行して動作の妥当性を監視している。

    View full-size slide