環境
Amazon Web Service
- EC2(Amazon Linux 2 , t2.micro , 汎用SSD 8GB)
- RDS(MySQL , db.t2.micro)
- ALB
ローカルPC
- MacBook Pro(2.9 GHz デュアルコアIntel Core i5 , 8 GB 2133 MHz LPDDR3)
- macOS 11.3.1(20E241)
概要
EC2等が何らかの障害によりWebページを表示できない時に備えて、sorryページへ通信を流せるようにする。
具体的にはフェイルオーバールーティングにて、プライマリをALBを設定して、セカンダリをS3バケットに設定する。
S3のバケットを作成
S3 > バケットを作成
- 以下の項目を入力していく。
- バケット名: (独自ドメイン名)
ドメインとバケット名は揃える必要がある。Route53のレコード作成時に必要な条件となる。 - AWS リージョン:
ap-northeast-1
- パブリックアクセスのブロックをすべてオフにする。
-
バケットを作成
をクリックする。
- バケット名: (独自ドメイン名)
Sorryページファイルのアップロード
- アップロードするためのページを開く。
Amazon S3 > (独自ドメイン) > オブジェクトタブ > アップロード
をクリックする。 - sorryページ用のhtmlファイルをアップロードする。
ファイルを追加 > (任意のhtmlファイルや画像)を選択 > アップロード
をクリックする。
静的ウェブサイトホスティングを編集する
- 静的ウェブサイトホスティング編集ページを開く。
Amazon S3 > (独自ドメイン) > プロパティタブ > 静的ウェブサイトホスティング > 編集
をクリックする。 - 以下の項目を入力してく。
- 静的ウェブサイトホスティング:
有効にする
- インデックスドキュメント:
index.html
- エラードキュメント:
error.html
- 静的ウェブサイトホスティング:
-
変更の保存
をクリックする。
バケットポリシーの設定をする。
- バケットポリシーの編集ページを開く。
Amazon S3 > (独自ドメイン) > アクセス許可タブ > バケットポリシー > 編集
をクリックする。 - バケットポリシーを編集する。
以下のAWS公式ページから、バケットポリシーをコピーして、設定するバケットポリシーにペーストする。そしてBucket-Name
の部分を独自ドメインに変更する。
カスタムドメインを使用した静的ウェブサイトの設定 ステップ 8: バケットポリシーをアタッチする - sorryページにアクセスする。
Amazon S3 > (独自ドメイン) > プロパティタブ > 静的ウェブサイトホスティング > バケットウェブサイトエンドポイント
に記載のURLをクリックする。
Route53でプライマリ/セカンダリの設定をする
- 既存のAレコードをプライマリのレコードへ編集する。
Route 53 > ホストゾーン > yoshiki-mbp.com > (既存のAレコード) > レコードを編集
をクリックする。 - 以下の項目を入力して、
保存
をクリックする。- ルーティングポリシー:
フェイルオーバー
- フェイルオーバーレコードタイプ:
プライマリ
- レコードID:
LB-Primary
- ルーティングポリシー:
- セカンダリのレコードを作成する。
レコードを作成
をクリックして、以下の項目を入力していく。- レコード名:
blog
- レコードタイプ:
A
- エイリアス: オンにする
- トラフィックのルーティング先:
- エンドポイント:
S3ウェブサイトエンドポイントのエイリアス
- リージョン:
ap-northeast-1
- S3エンドポイント: (先ほど作成したS3バケットが表示されるはず)
- エンドポイント:
- ルーティングポリシー:
フェイルーオーバー
- フェイルオーバーレコードタイプ:
セカンダリ
- レコード ID:
LB-Secondary
- レコード名:
障害試験
- EC2インスタンスが
実行中
の状態で正常にWebページが表示されることを確認する。 - EC2インスタンスを2台とも
停止
する - すぐにWebページにアクセスすると、
503 Service Temporarily Unavailable
が表示されるが、TTLの設定時間待ち、再度Webページにアクセスするとsorryページが表示される。