はじめに
本記事ではIBM POWER環境LPAR上のRHEL環境で、Pacemakerを使用したHAシステムを構築した際の手順を紹介します。
Pacemakerとは
Pacemakerは、Linuxサーバーの可用性を高めるためのオープンソースなクラスタソフトウェアで、サーバーやアプリケーションの障害を監視し、異常を検知した際には副系サーバーへサービスを自動的に切り替えます。
このフェイルオーバー機能により、システム全体の停止時間を最小限に抑え、サービスの継続的な稼働を実現します。
また、スプリットブレインをブレインを防ぐためのSTONITHと呼ばれる障害を起こしたサーバーをフェンスするための機能を持ちます。
Pacemakerの構成にはSTONITHリソースが必要
STONITH(Shoot The Other Node In The Head)は、クラスタ内のノードが障害を起こした際に、そのノードを強制的に停止させるための仕組みです。これにより、障害ノードが共有リソースにアクセスし続けることで発生するデータ破壊や競合を防ぐことができます。
Pacemakerに設定するSTONITHリソースはスプリットブレインの防止や、障害ノードの強制停止を行います。
複数のノードが同時にアクティブになることを防ぎ、データの整合性を保つために重要な役割を果たします。
またRed Hat Enterprise Linuxでは、サポートポリシーとしてPacemakerを使用する際にSTONITHリソースを必須としています。
STONITH/フェンシングを有効にする必要があります: いずれの場合でも、RHEL High Availability ソフトウェアは、STONITH、fenced、またはフェンシング機能を無効にする機能を提供します。Red Hat では、これらの方法でフェンシングを無効にしたクラスターをサポートしません。
IBM POWER環境では fence_lpar
が利用できる
IBM POWERのLinux環境ではHMCを使用しLPARを制御する fence_lpar
が利用できます。
PacemakerにSTONITHリソースとして、HMCへの接続情報などを設定することでHMCをSTONITHデバイスとして使用できます。
fence_lpar
によるSTONITH
fence_lpar
は、IBM Power SystemsのLPAR(Logical Partition)を制御するためのフェンスエージェントです。これにより、PacemakerはLPARの電源を管理し、障害が発生した場合にノードを強制的にシャットダウンすることができます。
fence_lpar
は、Pacemakerからフェンスコマンドを受けると、HMCにSSH接続を行い、指定されたLPARの電源を操作します。
fence_lpar
は、以下のような機能を提供します。
- LPARの電源オン/オフ
- LPARの再起動
- LPARの状態確認
環境設定
認証について
fence_lparはHMCにSSH接続を行うことで機能を提供します。
SSH接続に設定できる認証方式はパスワード認証と公開鍵認証の2種類です。
パスワード認証
パスワード認証はSSH接続において、HMCに登録されたユーザーのパスワードを使用して認証を行います。
公開鍵認証
公開鍵認証は、SSH接続においてパスワードを使用せず、公開鍵と秘密鍵を用いて認証を行います。
公開鍵認証を使用する場合、HMCにSSH公開鍵を登録する必要があります。
HMC上のユーザーと権限
仕組み上HMCへ接続してLPARの電源を操作するため、HMCへのログインユーザーが必要です。
また、セキュリティ上の理由からSSH接続するユーザーを作成し、タスク・ロールやリソース・ロールを設定することが推奨されます。
HMCにはデフォルトで hscroot
という管理者ユーザーが存在しますが、これはHMCの全ての機能にアクセスできるため、セキュリティ上の理由から使用せず、Pacemaker専用のユーザーを作成することが推奨されます。
構成
あらかじめHMCの設定は済ませている前提で、Pacemakerにフェンスデバイスとして fence_lpar
を設定する手順を説明します。
Pacemakerのフェンスデバイスを構成する際には後述の fence_lpar
の動作確認 をあらかじめ行うとパラメータの確認が容易になります。
1. fence_lpar
のインストール
fence_lpar
は、fence-agents-lparパッケージによって。OSに導入します。
Pacemakerをインストールする際に、fence-agents-allパッケージを導入する場合、同時にインストールされます。
sudo dnf install fence-agents-lpar
2. フェンスデバイスの定義
Pacemakerにフェンスデバイスを定義します。
この際に入力するパラメータは以下の通りです。環境に合わせて変更してください。
- node1-fence: フェンスデバイスの任意の名前
- fence_lpar: フェンスエージェントのタイプ
- 10.90.0.10: HMCのIPアドレス
- S824-XXX-XXXXXXX: 管理対象システム(筐体)の名前
- hmcuser: HMCに接続するユーザー名
- /PATH/TO/KEY: HMCに接続するSSH秘密鍵のパス
- XXXXXXXX: HMCに接続するパスワード
- node1: Pacemakerから見たノード名(ホスト名)
- node1-xxxxxxxx-xxxxxxxx: HMC上から見たLPAR名
sudo pcs stonith create node1-fence fence_lpar \
ip=10.90.0.10 \
managed=S824-XXX-XXXXXXX \
username=hmcuser \
# SSH接続に公開鍵認証を使用する場合はここで指定します。
identity_file=/PATH/TO/KEY \
# パスワード認証を使用する場合はここで指定します。
# どちらか一方を指定します。
password=XXXXXXXX \
pcmk_host_map=node1:node1-xxxxxxxx-xxxxxxxx \
pcmk_delay_base=5s
pcmk_delay_baseはノードが偶数個のクラスターを作成する際に、お互いにフェンシングを行ってしまうことを防ぐために設定します。2ノードの場合、片方のノードにのみ設定を行います。
SSH接続に公開鍵認証を使う場合、鍵ファイルは任意の場所に配置できますが、セキュリティ上、適切なパーミッションを設定することが推奨されます。
フェンスデバイスの設定オプションについては、以下のコマンドで確認できます。
pcs stonith describe fence_lpar
動作検証
fence_lpar
の動作確認
fence_lpar
単体でLPARの電源操作ができるかを確認します。
この方法では、Pacemakerを使用せずに fence_lpar
コマンドを直接実行して、HMCに接続するため設定が正しいかの確認を行う場合に便利です。
# 公開鍵認証の場合
fence_lpar --ip=10.90.0.10 --username=hmcuser --identity-file=/PATH/TO/KEY --managed=S824-XXX-XXXXXXX --plug=node1-xxxxxxxx-xxxxxxxx --action=status
# パスワード認証の場合
fence_lpar --ip=10.90.0.10 --username=hmcuser --password=XXXXXXXX --managed=S824-XXX-XXXXXXX --plug=node1-xxxxxxxx-xxxxxxxx --action=status
actionには以下の値を指定できます。
- status: LPARの状態を確認
- on: LPARの電源をオンにする
- off: LPARの電源をオフにする
- reboot: LPARを再起動する
より詳しいオプションは fence_lpar -h
で確認できます。
STONITHリソースとして動作確認
Pacemakerから正常に動作するかは手動でフェンシングを実行することで確認できます。
sudo pcs stonith fence node1-fence
Pacemakerはフェンシング時にデフォルトでノードの再起動を行います。
手動のフェンシングを行う際にノードをOFF状態にするには --off
オプションを指定します。
考慮点
HMCリブートの影響と対応
fence_lpar
STONITHリソースは定期的に監視のためにHMCにアクセスします。
例えばHMCを定期的にリブートする様な運用を行っている場合、HMCリブートと監視タイミングがバッティングしてしまうと、そのSTONITHリソースが失敗状態となってしまう可能性があります。
以下を設定することで、この失敗状態からの自動回復が可能です。
-
op monitor on-fail=restart
監視に失敗した場合、そのSTONITHリソースを再起動 -
meta failure-timeout=時間
STONITHリソースの失敗状態を指定時間後にクリア
pcs stonith update node1-fence op monitor interval=60s timeout=300s on-fail=restart
pcs stonith update node1-fence meta failure-timeout=120s
この例の場合、STONITHリソースが失敗しても、120秒後に再試行を行い、HMCが回復していればSTONITHリソースも回復します。回復していなければさらに120秒後に試されます。
LPMを行っている場合
IBM POWER環境では、LPARのライブパーティショニング(LPM)を行うことができます。
LPMを行うと、LPARが別の筐体に移動するため、フェンスデバイスにMANAGED_SYS_NAMEとして設定している筐体にLPARが存在しなくなります。
この場合、フェンスデバイスを複数定義することで対応が可能です。
sudo pcs stonith create FENCE_DEV_NAME_SYS1 fence_lpar \
(略)
managed=MANAGED_SYS1_NAME \
(略)
sudo pcs stonith create FENCE_DEV_NAME_SYS2 fence_lpar \
(略)
managed=MANAGED_SYS2_NAME \
(略)
sudo pcs stonith create FENCE_DEV_NAME_SYS3 fence_lpar \
(略)
managed=MANAGED_SYS3_NAME \
(略)
このように、LPARが移動する可能性のある筐体ごとにフェンスデバイスを定義することで、LPMを行ってもフェンスデバイスが正しく動作するようになります。
おわりに
本記事ではfence_lpar
を使用して、IBM POWER環境のLPAR上でPacemakerを使用したHAシステムを構築する手順を紹介しました。
何らかのお役に立てれば幸いです。
指摘事項等があれば、コメント等でお知らせください。