初心に戻ってAWSでスケーラブルなウェブサイトを作成する


次の通り王道の構成ですが、昔とUIも変わってるということもあり、初心に戻ってAWSでスケーラブルなウェブサイトを作成する基礎の内容です。

![スクリーンショット 2020-11-09 19.15.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/d298b9d1-dfaa-3f6b-1f7a-ea4ae3e11628.png)

#1.VPCの作成#

「VPCウィザードの起動」より設定を行います。

・ステップ 1: VPC 設定の選択
「1 個のパブリックサブネットを持つ VPC」を選択。
![スクリーンショット 2020-11-09 19.25.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/eab1bd42-652b-4cc1-365c-6420a47fcd61.png)

・ステップ 2: ステップ 2: 1 個のパブリックサブネットを持つ VPC
**VPC:10.0.0.16**　と　アベイラビリティーゾーン 1aに　**パブリックサブネット-1a 10.0.0.0/24**　を作成する。
![キャプチャ1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/0c80bae3-74fa-56e5-27f7-09322d361404.png)

追加で以下のサブネットを作成する。
アベイラビリティーゾーン 1cに　**パブリックサブネット-1c 10.0.1.0/24**
アベイラビリティーゾーン 1aに　**プライベートサブネット-1a 10.0.2.0/24**
アベイラビリティーゾーン 1cに　**プライベートサブネット-1c 10.0.3.0/24**
![キャプチャ2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/ef1b5435-e6b5-109b-3693-b296ddef9608.png)

パブリックサブネット-1c のルートテーブルを パブリックサブネット-1a と同じルートテーブルに所属させる。
![キャプチャ3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/78a85cda-6621-50d6-20a1-84366f2c1ec6.png)

#2.EC2インスタンスの作成(WordPress)#

**パブリックサブネット-1a** に次のユーザーデータを追加し、EC2インスタンスを起動させる。

```
#!/bin/bash

yum -y update
amazon-linux-extras install php7.2 -y
yum -y install mysql httpd php-mbstring php-xml

wget http://ja.wordpress.org/latest-ja.tar.gz -P /tmp/
tar zxvf /tmp/latest-ja.tar.gz -C /tmp
cp -r /tmp/wordpress/* /var/www/html/
chown apache:apache -R /var/www/html

systemctl enable httpd.service
systemctl start httpd.service
```

次のセキュリティグループを開けておく。
・22
・80

wordpressが起動するか確認だけしておく。

#3.RDSの作成(MySQL)#

rds用のセキュリティグループを作成する。
・3306 EC2インスタンスからのアクセスのみを許可する。
![スクリーンショット 2020-11-10 19.28.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/5a171f22-4982-ecc4-c808-12b06e5f791b.png)

DBサブネットグループを作成する。
**プライベートサブネット-1a 10.0.2.0/24** と **プライベートサブネット-1c 10.0.3.0/24** 
![スクリーンショット 2020-11-10 19.35.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/c70a8c8b-71f2-fdf5-c8a4-834602f37dd9.png)

**プライベートサブネット-1a** にrdsインスタンス（MySQL）を作成する。
![スクリーンショット 2020-11-10 19.45.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/b70229fa-5ac6-6706-f878-3b9c52802d68.png)

#4.ALBの作成#

**パブリックサブネット-1a 10.0.1.0/24** と **パブリックサブネット-1c 10.0.1.0/24** に作成する。
![alb1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/069e9fae-a569-c2d2-fd20-0fbcab29f71d.png)

albのセキュリティグループを新しく作成し開けておく。
・80

ターゲットグループのパスは、次のとおりとする。
`/wp-includes/images/blank.gif`
![alb2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/8a54e068-1c98-9bef-d39a-654a83f27b87.png)

【2.EC2インスタンスの作成(WordPress)】で作成したEC2インスタンスをアタッチし、status が healthy になるまで待つ。
![alb3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/b124f010-8368-eafc-cda9-5b1f77514b0c.png)

alb のDNS名にアクセスし、表示されるか確認する。

#5.WordPressの作成#

データベースの設定などWordPressの初期設定を行い、
ELB - EC2 - RDSの構成で作成したブログにアクセスできることを確認する。

データベースの接続する為にRDSで作成した、ユーザー名、パスワード、データーベースのホスト名（エンドポイント）を入力する。
![スクリーンショット 2020-11-13 19.19.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/a2cdcc19-bcba-7591-f5d9-3e08655191b4.png)

「インストール実行」をクリック。
![スクリーンショット 2020-11-13 19.19.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/0ae9e710-99b2-93ce-d1ea-4786b1993a77.png)

必要事項を入力し、「WordPressをインストール」をクリック。
![スクリーンショット 2020-11-13 19.23.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/7c987fd6-c8f1-0e92-82c0-e27889c45ac8.png)

↑の必要事項で入力した情報で、wordpressにログインできるか表示されるか最後に確認する。

#6.AMIの作成と起動#

「2.EC2インスタンスの作成(WordPress)」で作成したEC2インスタンスのAMIを作成します。
＊1点注意点ですが、「再起動しない」にチェックが入っていません。すなわちイメージの作成中に再起動が発生します。
![スクリーンショット 2020-11-13 19.46.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/9ec148e7-50eb-91cb-04c0-8237ceab3b46.png)

作成したAMIを使って、**パブリックサブネット-1c 10.0.1.0/24**にEC2インスタンスを作成する。

ALBのターゲットグループにAMIで作成したEC2インスタンスを追加。

ここまでで、EC2の冗長構成をし、負荷分散がされていることが確認できました。

#7.RDSのマルチAZ配置#

【3.RDSの作成(MySQL)】で作成したRDSをマルチAZにします。

次から可用性について確認していきます。

#8.可用性#

ここでは、EC2インスタンスの停止やRDSのフェイルオーバー行い、障害時の動作について確認していきます。

1.「パブリックサブネット-1a 10.0.0.0/24」で作成したEC2インスタンスを停止しても、albのDNS名にアクセスし、表示されるか確認する。

2.RDSを再起動し、albのDNS名にアクセスし、表示されるか確認する。