AWSのLAMP環境で2つのアベイラビリティゾーンにまたがった冗長化構成のEC2とRDSを作成して耐障害性を高めたい
こんにちは!さっしです!
タイトル通りのAWSの設定内容を、自分の忘備録の意味を込めてまとめてみました。
まだシングル構成で設定されているAWSサーバがありましたら、ぜひ以下を参考に設定してみてください。
■完成図
■やりたいこと
・ロードバランサ ーを設置し、EC2の冗長化を実現する
・RDSをマルチAZ構成にし、冗長化を実現する
・冗長化構成が正常に機能するか確認する
■事前準備
・以下の構成を基に設定をしていきます
※記載設定事項以外は全てデフォルト設定となります
※詳細な設定方法は以下のブログを参考にしてください
https://note.com/sasshiii/n/n5593c6df1719
・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」をクリックする
・ナビゲーションペインの「ロードバランサー」をクリック後、左上の「ロードバランサーの作成」ボタンをクリックする
・Application Load Balancerの「作成」ボタンをクリックする
・以下の内容を入力し「次の手順」ボタンをクリックする
名前:practice-alb
VPC:作成済みのVPC
アベイラビリティゾーン:ap-northeast-1a、ap-northeast-1c
サブネット:それぞれのAZのパブリックサブネット
・「手順 2: セキュリティ設定の構成」の警告文は無視をして「次の手順」ボタンをクリックする
・以下の内容を入力し「次の手順」ボタンをクリックする
セキュリティグループの割り当て:新しいセキュリティグループを作成する
セキュリティグループ名:任意
説明:任意
・以下の内容を入力し「次の手順」ボタンをクリックする
ターゲットグループ:新しいターゲットグループ
名前:任意
パス:/index.html
正常のしきい値:2
間隔:10
※10秒ごとにindex.htmlファイルへのヘルスチェックを行い、2回連続で正常であればそのインスタンスを正常とみなす
・2つのインスタンスをチェックし「登録済みに追加」ボタンをクリック後、「次の手順」ボタンをクリックする
・確認画面が表示されるので「作成」ボタンをクリックする
・ナビゲーションペインの「ターゲットグループ」をクリック後、「作成済みのターゲットグループ(practice-tg)」のリンクをクリックする
・「Targets」タブをクリックし、対象のインスタンスのStatusが「initial」から「healthy」になったことを確認する
■2.EC2インスタンスへのアクセスをロードバランサーからのみ許可するように「セキュリティグループ」を編集する
・ナビゲーションペインの「セキュリティグループ」をクリック後、EC2用のセキュリティグループをチェックし、「インバウンドルール」タブをクリック後、「インバウンドルールの編集ボタンをクリックする
・以下の内容を入力し「ルールを保存」ボタンをクリックする
タイプ:HTTP
ソース:ELB用のセキュリティグループ
■3.「ロードバランサー」へのアクセスのみEC2にアクセスできることを確認する
・ナビゲーションペインの「ロードバランサー」をクリック後、「DNS名」をブラウザに入力し、アクセスする
※事前に目印として2台のEC2のindex.htmlにそれぞれ「server1,server2」と入力しています
■4.EC2を1台停止し「障害テスト」を行う
・ナビゲーションペインの「インスタンス」をクリック後、どちらか停止したいEC2をチェックし「インスタンスの状態」→「インスタンスを停止」をクリックする
・ロードバランサーの「DNS名」をブラウザに入力しアクセスし、片方のサーバのみでアクセスできることを確認する
■5.RDSをマルチAZ(冗長化構成)構成に設定する
・ナビゲーションバーの検索バーに「RDS」と入力し、表示されたサービスの「RDS」をクリックする
・ナビゲーションペインの「データベース」をクリック後、変更したいRDSを選択し「変更」ボタンをクリックする
・以下の内容を設定し「変更」ボタンをクリックする
マルチAZ配置:スタンバイインスタンスを作成する (本稼働環境向けに推奨)
・以下の内容を設定し「DBインスタンスを変更」ボタンをクリックする
変更を適用するタイミング:すぐに適用
■6.RDSを再起動し「フェイルーバー」されるか確認する
・ナビゲーションペインの「データベース」をクリック後、再起動したいRDSを選択し「アクション」→「再起動」ボタンをクリックする
・以下の内容を設定し「確認」ボタンをクリックする
フェイルオーバーで再起動しますか?:チェック
・ナビゲーションペインの「データベース」をクリック後、確認したいRDSの「DB識別子」リンクをクリックする
・「ログとイベント」タブをクリックする
・以下の文言から、正常にフェイルオーバーされていることを確認する
確認文言:Multi-AZ instance failover completed
設定は以上になります。
いかがでしたでしょうか?
次回はEC2のオートスケーリング機能を設定し、負荷に応じてインスタンスを自動的に増減させ、高可用な環境を実現したいと思います。
この記事が気に入ったらサポートをしてみませんか?