AWS ALBでメンテナンス画面表示(管理者のみアクセス許可)する方法

こんにちは! ZAICO開発チームです。

運営しているシステムがダウン💥する・・考えたくないですよね。。ですが必ず起きるのが障害です。

そんな時にユーザーに障害の発生をお知らせして、電話等でのお問い合わせの殺到を防ぐのがメンテナンス画面です。またそのような場合でも管理者はサーバーにアクセスしたい、という要望もあります。

これを対応するにはそれなりの仕組みが必要だと思いますが、AWSのALBだとWebコンソールからポチポチ設定するだけでできてしまいます!しかもALBで応答するのでサーバーが落ちていても表示できる上、サーバーへのリクエストを遮断できます。

うちでも使い始めたのでやり方を説明します!😃

 
 

メンテナンス画面をAWS ALBで表示する手順

ALBを使って、全てのリクエストに対して静的ページ、つまりメンテ画面を返す設定をすることが可能です。
 
EC2 > Load balancers より対象のALBを選び、メンテ画面を表示したいポートのRules列のView/edit rulesを選択してください。

 

表示されたルール一覧で、追加タブ > Insert Rule を選択してください。

 

下図のように条件(IF)にPathが*(ワイルドカード)、どうするか(THEN)にReturn fixed responseを選択し、レスポンスする固定ページのコンテンツ(html)を入力してSaveを選択してください。

 

すると全てのリクエストに対してメンテ画面が表示されるようになりました!

 

 

管理者にはメンテナンス画面を表示させないように設定する手順

ユーザーにはメンテ画面を表示しても管理者はサーバーにアクセスして確認したい時があると思います。そんな時も特定の接続元IPアドレスからのアクセスを許可することができます。

ルールの追加タブからルールを追加してください。条件(IF)にSource IPを指定し、管理者のIPアドレスを指定してください。CIDR形式で指定することができます。一つのIPアドレスごと指定するなら192.168.1.2/32のように記入してください。どうするか(THEN)についてはFoward toを選択し、リクエストを流すサーバーが存在するターゲットグループを指定してください。

 

下図のように上からルールが優先して適用されていきますので、上から管理者のIPアドレスからのリクエストならサーバーに転送する、メンテ画面を表示する、の順番にルールを設定してください。ルールは順番の変更タブから入れ替えられます。

これで管理者はサーバーにアクセスすることができるようになりました!

 

説明は以上になります。

障害の際に打てる手が一つでもあれば少しは枕を高くして眠れるというものです。。

最後までお読みいただきありがとうございました👋