WordPressプラグイン消失トラブルの復旧(ALB・EC2冗長・RDS構成)
概要
冗長構成のWordPress環境でアップデート中にプラグインが消えるトラブルが発生し、切り戻し作業をしました
作業中につまづいたポイントをまとめました
※プラグインが消えた原因については、こちらの記事にまとめています
WordPressプラグイン消失の原因
構成
構成は以下の通りです
ALB → EC2 2台(Web1 → Web2 にファイル同期) → RDS
CMSにはWordPressを使用しており、Web1からWeb2にファイル同期がかかっています
つまづいたポイント
1.同期処理
Web1からWeb2へのファイル同期(lsyncd)が設定されており、切り戻し時には同期を停止する必要がありました
もし、現行web1の同期を停止していない状態で新しいweb1を立ち上げてしまうと、2つのweb1からweb2に同期がかかりファイルの不整合が発生する可能性があります
そのため、以下の手順を踏みました:
1. 現行Web1のlsyncdを停止
2. バックアップから新しいWeb1を立ち上げ
3. ALBのターゲットグループに新しいWeb1を追加
4. 旧Web1をALBから削除
RDSの復元
EC2の切り戻し作業は完了しましたが、プラグインは復元されませんでした
これはWordpressのプラグイン情報はDBのテーブルにも書き込まれており、EC2のファイルを戻してもDBの情報が更新されたまま状態だと正しく表示されないことが原因です
そのため、RDSについてもWordPressアップデート前のスナップショットから復元する必要がありました
また、RDS をスナップショットから復元すると新しいインスタンスが作成されるため、エンドポイントが変わってしまいます
そのため、WordPress 側の wp-config.php
で DB_HOST
を復元後の RDS のエンドポイントに変更する必要がありました
ALBのターゲットグループ
EC2とRDSの切り戻しを完了すると、サイトの挙動は正常な状態になりました
しかし、WordPressの管理画面にアクセスすると、プラグインが表示されない状況のままでした
確認したところ、ALBのパスベースのリスナールールで管理画面(/wp-admin/*)を特定のターゲットグループに振り分ける設定があり、その参照先が旧Web1のままになっていました
ターゲットグループを新しいWeb1に更新したことで、管理画面のプラグインも正常に表示されるようになりました
まとめ
- EC2の切り戻しだけでは WordPress のプラグインは復元されない
- DB(RDS)の状態もアップデート前に戻す必要がある
- RDS復元後は wp-config.php の DB_HOST を新しいエンドポイントに更新する(もしくはRDSをリネームする)
- ALBのリスナールールを確認して、管理画面が正しいターゲットに向くようにする
同じような構成で切り戻し作業を行う際、参考になれば幸いです
Discussion