0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【AWS】EC2とRDSを冗長化しALBで通信を振り分ける

Last updated at Posted at 2021-11-18

#■はじめに
AWSでEC2(wordpress),RDSシングル構成を構築したので、そこから冗長化する際の手順をまとめました
AMIによるEC2複製手順、MultiAZ機能によるRDS冗長化手順、ALB作成手順となります。

#■対象者
本記事はAWS初学者向けの情報共有として構築手順をまとめています。
また、自分用の手順メモでもあります。

#■構成図

image.png

まず、冗長化していない構成図は上記。

  • userはブラウザからIPを入力しhttp通信でEC2にアクセスする。
  • EC2にはmysql、wordpressをインストールし、SQL発行でRDSにアクセス、データを取得し画面表示を行う。
  • ssh接続はteratermでEC2に接続する際に利用する。
  • EC2は外部のユーザからのアクセスを受けるが、RDSにはアクセスさせない。そのためEC2はパブリックサブネットに配置し、RDSはプライベートサブネットに配置する。

ここから以下のように変更する。

image.png

  • EC2をAMIを用いて別AZに複製する。
  • RDSはマルチAZ機能で別AZに冗長化する。
  • EC2が複数になるので、前段にALBを配置し、通信を振り分ける。

#■作業内容
大まかに以下。

  1. EC2を複製する
  • ロードバランサーを作成する
  • ブログアドレスの設定変更を行う
  • EC2セキュリティグループの設定変更を行う
  • RDSをmultiAZ構成にする

#■作業手順詳細

##1. EC2を複製する

【EC2のAMIを取得】

1-1. EC2画面から EC2選択 - アクション - 停止を実行

1-2. 停止したら EC2選択 - アクション - image and templates - イメージを作成 を選択

image.png

1-3. 「イメージを作成」画面 以下を入力

項目名 入力値
イメージ名 WebServer
イメージの説明 WebServer

その他項目はデフォルトで「イメージの作成」押下

image.png

【AMIを用いてEC2起動】

1-4. EC2画面から「インスタンスを起動」押下

1-5. 左ペイン マイAMI に 作成した AMI があるので選択

image.png

1-6. インスタンスタイプの選択
t2.micro を選択

1-7. インスタンスの詳細の設定
以下を入力

項目名 入力値
ネットワーク MyVPC1
サブネット Public Subnet2
自動割り当てパブリックIP 有効

1-8. ストレージの追加
デフォルトの8GiBとする

1-9. タグの追加 以下を入力

項目 入力値
キー Name
WebServer2

1-10. セキュリティグループの設定
「既存のセキュリティグループを選択する」にチェックを入れ、Web-SG-1 を選択
※既存のEC2もAMIで複製したEC2も同じセキュリティグループを使うということ

1-11. キーペアの選択
「既存のキーペアを選択」、任意のキーペア名を選択し、「インスタンスの作成」押下

これでEC2複製は完了。

##2. ロードバランサーを作成する

【ALB作成】

2-1. EC2左ペイン ロードバランサー - ロードバランサーの作成 を選択を押下

2-2. ロードバランサータイプの選択画面
Application Load Balancer を選択

image.png

2-3. Application Load Balancer を作成画面 以下を入力

・基本的な設定

項目 入力値
ロードバランサー名 LB-1
スキーム インターネット向け
IPアドレスタイプ ipv4

・ネットワークマッピング

項目 入力値
VPC MyVPC1
マッピング ap-northeast-1aとPublicSubnet1, ap-northeast-1cとPublicSubnet2

どのアベイラビリティーゾーンのどのターゲットにルーティングするかを設定

【LB用のセキュリティグループの作成】

・セキュリティグループ
「新しいセキュリティグループの作成」を選択し、セキュリティグループ設定画面で以下を入力

項目 入力値
セキュリティグループ名 LB-SG-1
インバウンドルール タイプ:カスタムTCP, プロトコル:TCP, ポート範囲:80, ソース:カスタム,0.0.0.0/0

image.png

作成したら、「Application Load Balancer を作成」画面で LB-SG-1を選択し、defaultは×で削除

【ターゲットグループの作成】

・リスナーとルーティング
「ターゲットグループの作成」押下

・基本的な設定

項目 入力値
ターゲットタイプの選択: インスタンス
ターゲットグループ名: TG-1
プロトコル: HTTP
ポート: 80
VPC: MyVPC1
プロトコルバージョン: HTTP1

image.png

・ヘルスチェック

項目 入力値
ヘルスチェックプロトコル: HTTP
ヘルスチェックパス: /readme.html
curlコマンド実行時に200が帰ってくるような適切な実在するパスを設定する必要がある

・ヘルスチェックの詳細設定
EC2インスタンスのヘルスチェック間隔、閾値を設定

項目 入力値
正常のしきい値: 2
間隔: 10

image.png

・ターゲットの登録画面
インスタンスでwebserver1,2両方選択し、「保留中として以下を含める」を押下

そうすると登録済みターゲットにwebserver1,2が表示される
これでwebserver1,2に通信が振り分けられるようになった

image.png

「ターゲットグループの作成」押下

2-4. 「Application Load Balancer を作成」画面に戻り、リスナーとルーティング - デフォルトアクションに ターゲットグループ TG-1を選択

2-5. 「ロードバランサーの作成」押下

ターゲットグループ TG-1 のターゲットタブからwebserver1,2のヘルスチェックのステータスを確認できる
ステータスチェックが問題なければhealthyとなる
image.png

ヘルスチェックの設定を変更する場合はアクションから変更可能
image.png

##3. ブログアドレスの設定変更を行う

【RDSのサイトアドレスを書き換える】

前段にALBを配置したため。userからのアクセスはALBが受けるので、
ブログサイトアドレスをEC2のパブリックIPからALBのエンドポイントに変更する。

3-1. teratermでwebserver1,2どちらかにログインし以下コマンドでRDSにCLI接続する

3-2. 以下を実行

# mysql -h database-1.xxxxxxxxxxxxxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -u XXXXXXXX -p

※伏字となっている部分はRDS - database-1 - 接続とセキュリティタブに出ているエンドポイント名
 -u はwordpressインストール時に指定したユーザ名

> USE wordpress
> SELECT * FROM wp_options WHERE option_name IN ('siteurl', 'home');

※ここで表示されるのはどちらかログインした方のEC2のパブリックIPが登録されている

> UPDATE wp_options SET option_value = 'ロードバランサーのDNS名' WHERE option_name IN ('siteurl', 'home');

ロードバランサーのDNS名は以下
image.png

##4. EC2セキュリティグループの設定変更を行う

【EC2はLBからの通信のみ許可する】

EC2のセキュリティグループは、HTTP通信のすべてを許可する設定されているので、ロードバランサーからの通信のみ許可するよう変更する

4-1. EC2画面 - セキュリティグループ - Web-SG-1 - インバウンドルールタブ - インバウンドのルールを編集を押下

4-2. インバウンドルールを編集
HTTPすべて(ソース:0.0.0.0/0,::0/)があるので、LB以外からのインバウンドも許可することになっている。そのため削除する。その代わりに タイプ:HTTP ソース:LB-SG-1 を追加する。
ただし、teratermで接続するのでSSHは残す。
以下のようにHTTPのソース LB-SG-1を設定したものを作成し保存する

image.png

##5. RDSをMultiAZ構成にする

【シングルからMultiAZへ】

5-1. RDS - database-1にチェックを入れ「変更」 押下
image.png

5-2. DB インスタンスを変更: database-1 画面

・可用性と耐久性
マルチAZ配置:スタンバイインスタンスを作成する (本稼働環境向けに推奨)にチェックを入れて続行を押下

image.png

・変更のスケジューリング
すぐに変更にチェックを入れる

image.png

変更後、時間がたつとマルチAZありに変わる

image.png


【補足 フェイルオーバーのやり方】

補足-1. データベース - database-1 - アクション - 再起動 を選択
image.png

補足-2. DBインスタンスを再起動画面で「フェイルオーバーで再起動しますか?」にチェックを入れて確認を押下
image.png

補足-3. AZが切り替わっていることが確認できる

・再起動前
image.png

・再起動後
image.png

※何度か再起動を繰り返してみたが、表示が変わらないことがあった。表示が変わるまでラグがある?


以上

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?