WEBアプリケーションサーバのリプレイス作業で気をつけるべきポイント
WEBアプリケーションサーバのリプレイス作業は、考えることが多くて神経を使う作業です。新しいサーバで動作確認して問題なさそうに見えても、稼働すると問題が発生して、リプレイス前のサーバに緊急で戻し作業をすることはよくあります。自分がこれまで経験、もしくは見聞きしたサーバリプレイス作業の失敗事例をまとめてみました。
なお、僕はインフラを中心にエンジニアの経験を積んできたので、ここに書いてあるものはインフラエンジニアがサーバのリプレイス作業をするときに注意する点をまとめています。アプリ層ではまた異なった点で気をつけないといけないことがあるとは思いますが、今回は記載していません。
リプレイス作業チェックリスト
ミドルウェア
ホスト名, IPアドレスが直書きの設定ファイル
ミドルウェアが特定バージョンのライブラリに依存
設定ファイルの書き方が変わる
- ミドルウェアのバージョンによっては、設定ファイルの書き方が変わることがよくあります。起動しようとするとエラーになって落ちるのであれば気付きやすいのですが、挙動のみ変わる場合は意図しない動作のまま動き続ける可能性があります。設定ファイルの記述方法に変更がないか確認をよくしましょう。
ネットワーク
内部ネットワークのプロキシサーバ設定
ルーティングテーブルの設定
- 別のネットワークセグメントにサーバをリプレイスしたときには、そのルーティングテーブルの設定が移行前とは異なっていることがあります。ルーティングテーブルの差異が問題を起こすこともあります。例えば、目的のサーバと通信できている場合でも、InternetGatewayを経由する場合とNATを経由する場合ではトラフィックあたりのコストが大きく異なっていることがあるので気をつける必要があります。
IPアドレス制限
ネットワークセグメント
- 意外とあるミスとして、リプレイス後のサーバを本来配置する予定だったネットワークセグメントと異なる場所に配置してしまって、通信が正しく実施出来ないということがあります。例、本番のサーバをSTGのネットワークセグメントに構築していた。特定の通信のみ出来ない場合は気づきにくいので、正しいセグメントに配置しているかどうか確認を忘れずに。
リソース
cpu/memory/disk
- リプレイス前後では、cpu数やメモリサイズなどのサーバスペックは同じになるように揃えると思います。ただ、意外と見落としがちなのがディスクのサイズで、リプレイス前のサーバが特別にディスクサイズを増やしていた場合は、リプレイス後のサーバが稼働するようになった深夜にディスクフルのアラートで起こされることもあります。
ログ
ログローテート設定
- リプレイス後のサーバのログローテートが設定されていない、設定内容が間違っていたなど原因で、ディスクフルとなってしまうことがあります。リプレイス後のサーバが問題なくログローテートされているかどうか、リプレイス後に確認してみましょう。
error/criticalログ
- リプレイス前にはなかったerror/criticalレベルのログをリプレイス後のサーバで出していることがあります。気付かないでそのまま運用してしまうことも多いので、error/criticalレベルのログは通知されるように設定しておきましょう。
ログ転送
- ログ転送に使っているagentのバージョンが変わると、設定ファイルの書き方が変わりログを正しく転送出来きていなかったなんてことが、ログを調査したいときに初めてわかったりすることがあるので、リプレイス後のサーバは意図した通りにログを転送しているか確認しましょう。
=================================================================
以上、サーバのリプレイス時に気をつけるポイントをまとめました。考えてみれば当たり前のことばかりなのですが、リプレイス時に意外と見落としていることがあるのではないかと思います。他にも出てきたら更新したいと思います。誰かの役にたてれば嬉しいです。