見出し画像

AWSのLAMP環境で2つのアベイラビリティゾーンにまたがった冗長化構成のEC2とRDSを作成して耐障害性を高めたい

こんにちは!さっしです!

タイトル通りのAWSの設定内容を、自分の忘備録の意味を込めてまとめてみました。
まだシングル構成で設定されているAWSサーバがありましたら、ぜひ以下を参考に設定してみてください。

■完成図

画像1

■やりたいこと

・ロードバランサ ーを設置し、EC2の冗長化を実現する
・RDSをマルチAZ構成にし、冗長化を実現する
・冗長化構成が正常に機能するか確認する

■事前準備

・以下の構成を基に設定をしていきます
※記載設定事項以外は全てデフォルト設定となります
※詳細な設定方法は以下のブログを参考にしてください
https://note.com/sasshiii/n/n5593c6df1719

画像2

VPCの作成
IPv4CIDRブロック:10.0.0.0/21

ap-northeast-1aのサブネットの作成(パプリック1つ、プライベート1つ)
VPC ID:作成済みのVPC
アベイラビリティゾーン:ap-northeast-1a
IPv4CIDRブロック:10.0.0.0/24,10.0.1.0/24

ap-northeast-1cのサブネットの作成(パプリック1つ、プライベート1つ)
VPC ID:作成済みのVPC
アベイラビリティゾーン:ap-northeast-1c
IPv4CIDRブロック:10.0.4.0/24,10.0.5.0/24

インターネットゲートウェイの作成&作成済みのVPCにアタッチ

パブリックサブネットのルートテーブルの作成&パブリックサブネットに関連付け
送信先:0.0.0.0/0
ターゲット:作成済みのインターネットゲートウェイ

ap-northeast-1aのEC2の作成
ネットワーク:作成済みのVPC
サブネット:ap-northeast-1aのパブリックサブネット
自動割り当てパブリックIP:有効
セキュリティグループ:SSH,HTTPが全てのIPアドレスから許可されている

ap-northeast-1cのEC2の作成
ネットワーク:作成済みのVPC
サブネット:ap-northeast-1cのパブリックサブネット
自動割り当てパブリックIP:有効
セキュリティグループ:ap-northeast-1aのEC2と同じセキュリティグループ

ap-northeast-1aとap-northeast-1cのEC2にapacheとmysqlクライアントのインストール&/var/www/htmlindex.htmlを作成

DBサブネットグループの作成
VPC:作成済みのVPC
アベイラビリティーゾーン:ap-northeast-1a, ap-northeast-1c
サブネット:2つのプライベートサブネット

RDSのセキュリティグループの作成
VPC:作成済みのVPC
インバウンドルール:タイプ:MySQL/Aurola,ソース:EC2のセキュリティグループからのみ許可

ap-northeast-1aのRDSの作成
エンジンのタイプ:MySQL
テンプレート:開発/テスト
DBインスタンス識別子:practice-rds1
マスターパスワード:任意の値
DBインスタンスサイズ:db.t2.micro
Virtual Private Cloud (VPC):作成済みのVPC
サブネットグループ:作成済みのDBサブネットグループ
既存の VPC セキュリティグループ:作成済みのRDSのセキュリティグループ
アベイラビリティゾーン:ap-northeast-1a

■やること

1.「ロードバランサー」を作成する
2.EC2インスタンスへのアクセスをロードバランサーからのみ許可するように「セキュリティグループ」を編集する
3.「ロードバランサー」へのアクセスのみEC2にアクセスできることを確認する
4.EC2を1台停止し「障害テスト」を行う
5.RDSをマルチAZ(冗長化構成)構成に設定する
6.RDSを再起動し「フェイルーバー」されるか確認する

■1.「ロードバランサー」を作成する

・ナビゲーションバーの検索バーに「EC2」と入力し、表示されたサービスの「EC2」をクリックする

画像3

・ナビゲーションペインの「ロードバランサー」をクリック後、左上の「ロードバランサーの作成」ボタンをクリックする

画像4

・Application Load Balancerの「作成」ボタンをクリックする

画像5

・以下の内容を入力し「次の手順」ボタンをクリックする
名前:practice-alb
VPC:作成済みのVPC
アベイラビリティゾーン:ap-northeast-1a、ap-northeast-1c
サブネット:それぞれのAZのパブリックサブネット

画像6

画像7

・「手順 2: セキュリティ設定の構成」の警告文は無視をして「次の手順」ボタンをクリックする

・以下の内容を入力し「次の手順」ボタンをクリックする
セキュリティグループの割り当て:新しいセキュリティグループを作成する
セキュリティグループ名:任意
説明:任意

画像8

・以下の内容を入力し「次の手順」ボタンをクリックする
ターゲットグループ:新しいターゲットグループ
名前:任意
パス:/index.html
正常のしきい値:2
間隔:10
※10秒ごとにindex.htmlファイルへのヘルスチェックを行い、2回連続で正常であればそのインスタンスを正常とみなす

画像9

画像10

・2つのインスタンスをチェックし「登録済みに追加」ボタンをクリック後、「次の手順」ボタンをクリックする

画像11

・確認画面が表示されるので「作成」ボタンをクリックする

・ナビゲーションペインの「ターゲットグループ」をクリック後、「作成済みのターゲットグループ(practice-tg)」のリンクをクリックする

・「Targets」タブをクリックし、対象のインスタンスのStatusが「initial」から「healthy」になったことを確認する

画像12

画像13

■2.EC2インスタンスへのアクセスをロードバランサーからのみ許可するように「セキュリティグループ」を編集する

・ナビゲーションペインの「セキュリティグループ」をクリック後、EC2用のセキュリティグループをチェックし、「インバウンドルール」タブをクリック後、「インバウンドルールの編集ボタンをクリックする

画像14

・以下の内容を入力し「ルールを保存」ボタンをクリックする
タイプ:HTTP
ソース:ELB用のセキュリティグループ

画像15

■3.「ロードバランサー」へのアクセスのみEC2にアクセスできることを確認する

・ナビゲーションペインの「ロードバランサー」をクリック後、「DNS名」をブラウザに入力し、アクセスする

画像16

画像17

画像18

※事前に目印として2台のEC2のindex.htmlにそれぞれ「server1,server2」と入力しています


■4.EC2を1台停止し「障害テスト」を行う

・ナビゲーションペインの「インスタンス」をクリック後、どちらか停止したいEC2をチェックし「インスタンスの状態」→「インスタンスを停止」をクリックする

画像19

・ロードバランサーの「DNS名」をブラウザに入力しアクセスし、片方のサーバのみでアクセスできることを確認する

画像20

■5.RDSをマルチAZ(冗長化構成)構成に設定する

・ナビゲーションバーの検索バーに「RDS」と入力し、表示されたサービスの「RDS」をクリックする

画像21

・ナビゲーションペインの「データベース」をクリック後、変更したいRDSを選択し「変更」ボタンをクリックする

画像22

・以下の内容を設定し「変更」ボタンをクリックする
マルチAZ配置:スタンバイインスタンスを作成する (本稼働環境向けに推奨)

画像24

・以下の内容を設定し「DBインスタンスを変更」ボタンをクリックする
変更を適用するタイミング:すぐに適用

画像23

■6.RDSを再起動し「フェイルーバー」されるか確認する

・ナビゲーションペインの「データベース」をクリック後、再起動したいRDSを選択し「アクション」→「再起動」ボタンをクリックする

画像25

・以下の内容を設定し「確認」ボタンをクリックする
フェイルオーバーで再起動しますか?:チェック

画像26

・ナビゲーションペインの「データベース」をクリック後、確認したいRDSの「DB識別子」リンクをクリックする

画像27

・「ログとイベント」タブをクリックする

画像28

・以下の文言から、正常にフェイルオーバーされていることを確認する
確認文言:Multi-AZ instance failover completed

画像29

設定は以上になります。

いかがでしたでしょうか?
次回はEC2のオートスケーリング機能を設定し、負荷に応じてインスタンスを自動的に増減させ、高可用な環境を実現したいと思います。

この記事が気に入ったらサポートをしてみませんか?