はじめに

PacemakerとCorosyncを用いたHA(高可用性)クラスタ環境の運用において、設定変更前のバックアップや、万が一の障害時に備えた迅速な復旧手順の確立は、システム管理者にとって必須のタスクです。
以前の記事では crm コマンドを使用したテキストベースの保存・復旧方法をご紹介しましたが、RHEL8以降などの最新環境では pcs コマンドラインインターフェイスを使用した管理が標準となっています。本記事では、pcs コマンドを活用して稼働中のクラスタに安全に設定をバックアップする方法や、設定変更をコマンド形式でエクスポートする実用的なテクニックを解説します。
1. CIBファイル(XML)を用いた設定全体の保存とリストア
Pacemakerは、クラスタの構成やリソースの状態をCIB(Cluster Information Base)というXMLファイルで管理しています。このファイルを直接編集することは推奨されておらず、必ず pcs または crm コマンドを介して操作する必要があります。
1-1. 設定の保存(バックアップ)
現在のクラスター設定(未編集のCIB)を任意のファイルに保存するには、以下のコマンドを実行します。
# pcs cluster cib original_config.xml
これにより、現在のクラスタ設定全体が original_config.xml というファイルに安全に保存されます。アクティブなクラスタの動作に影響を与えることはありません。
1-2. 設定のリストア(読み込みと適用)
深刻なトラブルが発生し、保存しておいたCIBファイルから現在の構成全体を復旧(上書き)させる場合は、以下のコマンドを使用します。
# pcs cluster cib-push original_config.xml
※障害復旧時など、現在のクラスターのCIBバージョンよりも古いバージョンのファイルで全体を強制的に更新したい場合は、--config オプションを付与して pcs cluster cib-push --config original_config.xml のように実行します。
2. 設定を「pcsコマンド形式」でエクスポートする
XML形式のバックアップファイルは、機械的な処理には向いていますが、人間が読んで理解するのは困難です。 RHEL 8.7(AlmaLinux 8.7 等)以降の環境では、--output-format=cmd オプションを使用することで、現在の設定を「再構築可能なpcsコマンド群」としてテキスト出力する非常に便利な機能が備わっています。
リソース設定のコマンド出力
# pcs resource config --output-format=cmd
実行結果例:
pcs resource create --no-default-ops --force -- VirtualIP ocf:heartbeat:IPaddr2 \
cidr_netmask=24 ip=198.51.100.3 \
op \
monitor interval=10s id=VirtualIP-monitor-interval-10s timeout=20s \
start interval=0s id=VirtualIP-start-interval-0s timeout=20s \
stop interval=0s id=VirtualIP-stop-interval-0s timeout=20s;
このように、リソースを初期構築した際と同じ形式でコマンドが出力されます。出力結果をリダイレクト(> backup.sh)してシェルスクリプトとして保存しておけば、別環境への移行や、検証環境で同じ構成を素早く再現する(インフラのコード化)際に非常に役立ちます。
⚠️ バージョンに関するご注意とエビデンス
--output-format=cmd オプションは比較的新しい機能であり、OS(Pacemaker)のバージョンによってエクスポートできる対象が異なります。
- クラスター構成(
corosync.conf関連): RHEL 8.4 以降 (pcs cluster config show --output-format=cmd) - リソース・STONITH設定: RHEL 8.7 以降 (
pcs resource config --output-format=cmd/pcs stonith config --output-format=cmd) - クラスタープロパティ: RHEL 8.9 以降 (
pcs property config --output-format=cmd)
※バージョンの要件については、Red Hat Enterprise Linux 8 高可用性クラスターの設定および管理 等をご参照ください。RHEL 8.6以前の環境をご利用の場合は、前述のXML形式(pcs cluster cib)を用いたバックアップをご活用ください。
3. 万が一の障害からの完全復旧フロー(参考)
DRBDやPacemakerの環境で深刻なデータ不整合やSplit-brainが発生し、クラスタ設定を完全に初期化して再構築する場合の王道フローは以下の通りです。
- Pacemakerサービスを完全に停止し、現在のクラスタ設定を破棄(destroy)して初期状態に戻します。
pcs cluster setupコマンドでCorosyncのノード通信設定を再度行います。- 事前にバックアップしておいたCIBのXMLファイルをプッシュ(
pcs cluster cib-push)するか、エクスポートしておいたpcsコマンドのスクリプトを実行し、リソースと制約を一気に復旧させます。
まとめ
pcs コマンドを使用することで、クラスタの稼働状態を維持したまま、安全かつ柔軟に設定の保存とテストを行うことができます。特に --output-format=cmd を使ったエクスポート機能は、障害時の再構築だけでなく、構成変更のレビューや環境移行において非常に強力なツールとなります。
ぜひ、日々の運用プロセスに定期的な設定ファイルのバックアップを取り入れ、より安全なクラスタ運用を実現してください。