はじめに
EC2やRDSを使用した基本的なスケーラブルWebシステム構築をハンズオン形式で行います。
完成イメージ
アジェンダ
Step1. VPCの作成
Step2. EC2の作成
Step3. RDSの作成
Step4. ELBの作成
Step5. WordPressの初期設定
Step6. AMIの作成と2つ目のEC2インスタンスを作成
Step7. RDSのマルチAZ配置
Step1. VPCの作成
アベイラビリティゾーン1aと1cに、パブリックサブネットとプライベートアブネットを1つずつ作成します。
VPCを作成
VPCのコンソール画面に遷移し、VPCを作成
を押下します。
VPCの設定
作成するリソース
VPCなど
を選択します。
名前タグの自動生成
自動生成
・自動生成にチェックを入れ、handson-user1
と入力します。
IPv4 CIDR ブロック
10.0.0.0/16
のままにしておきます。
IPv6 CIDR ブロック
IPv6 CIDR ブロックなし
のままにしておきます。
テナンシー
デフォルト
のままにしておきます。
アベイラビリティゾーン (AZ) の数
2
のままにしておきます。
▼AZのカスタマイズ
を押下します。
第 1 アベイラビリティーゾーン
ap-northeast-1a
になっていることを確認します。
第 2 アベイラビリティーゾーン
ap-northeast-1c
になっていることを確認します。
パブリックサブネットの数
2
のままにしておきます。
プライベートサブネットの数
2
のままにしておきます。
▼サブネット CIDR ブロックをカスタマイズ
を押下します。
ap-northeast-1a のパブリックサブネット CIDR ブロック
10.0.0.0/24
に変更します。
ap-northeast-1c のパブリックサブネット CIDR ブロック のパブリックサブネット CIDR ブロック
10.0.1.0/24
に変更します。
ap-northeast-1a のプライベートサブネット CIDR ブロック
10.0.2.0/24
に変更します。
ap-northeast-1c のプライベートサブネット CIDR ブロック
10.0.3.0/24
に変更します。
NAT ゲートウェイ ($)
なし
のままにしておきます。
VPC エンドポイント
なし
のままにしておきます。
DNS オプション
DNS ホスト名を有効化
にチェックが入っていることを確認します。
DNS 解決を有効化
にチェックが入っていることを確認します。
※追加のタグ
は今回触らないのでそのままでOKです。
ここまで入力出来たらVPCを作成
を押下します。
VPC・サブネットの名称変更
VPC名の編集
左カラムからお使いのVPC
を押下します。
一覧画面のhandson-user1-vpc
にカーソルを合わせると、ペンシルアイコンが表示されるので、それを押下します。
handson-user1
に修正し、保存
を押下します。
サブネット名の編集
左カラムからサブネット
を押下します。
一覧画面のhandson-user1-subnet-public1-ap-northeast-1a
にカーソルを合わせると、ペンシルアイコンが表示されるので、それを押下します。
パブリックサブネット-1a
に修正し、保存
を押下します。
同じ要領で他3つのサブネットの名称も変更します。
handson-user1-subnet-public2-ap-northeast-1c
→ パブリックサブネット-1c
handson-user1-subnet-private1-ap-northeast-1a
→ プライベートサブネット-1a
handson-user1-subnet-private2-ap-northeast-1c
→ プライベートサブネット-1c
ここまでで、VPCの作成が完了しました。
Step2. EC2の作成
EC2インスタンスをパブリックサブネット-1a上に作成します。
EC2インスタンスの作成
EC2のコンソール画面に遷移します。
インスタンスを起動
を押下します。
インスタンスを起動
名前とタグ
名前
webserver#1-user1
と入力します。
Application and OS Images (Amazon Machine Image)
Amazon マシンイメージ (AMI)
Amazon Linux 2
を選択します。
※デフォルトではAmazon Linux 2023になっているので注意
インスタンスタイプ
インスタンスタイプ
t2.micro
が選択されていることを確認します。
キーペア (ログイン)
キーペア名 - 必須
今回は不要であるため、キーペアなしで続行
を選択します。
ネットワーク設定
編集
を押下します。
VPC
(handson-user1)
と書かれているVPCを選択します。
サブネット
パブリックサブネット-1aに作成するため、パブリックサブネット-1a
を選択します。
パブリック IP の自動割り当て
有効化
を選択します。
ファイアウォール (セキュリティグループ)
セキュリティグループを作成
を選択します。
セキュリティグループ名
web-user1
を入力します。
説明
web-user1
を入力します。
インバウンドセキュリティグループのルール
SSHのルールはデフォルトで設定されています。
HTTPアクセスを許可するルールを追加します。
セキュリティグループルールの追加
を押下し、下記画像のように編集します。
ストレージを設定
デフォルトのまま進みます。
高度な詳細
ユーザーデータの項目以外はデフォルトのまま進みます。
ユーザーデータ
ユーザーデータとは、EC2起動時に実行されるスクリプトのことです。
ここにWordPressの初期設定を行うスクリプトを行うことで、自動的にインストールと立ち上げを行うことができます。
下記をコピーしてユーザーデータ欄に貼り付けます。
#!/bin/bash
yum -y update
yum -y install php httpd mysql
PHP_VERSION=`php -v | head -n 1 | awk '{print $2}' | awk -F "." '{print $1}'`
while [ ${PHP_VERSION} -ne 7 ]
do
amazon-linux-extras install php7.4 -y
PHP_VERSION=`php -v | head -n 1 | awk '{print $2}' | awk -F "." '{print $1}'`
done
yum -y install 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
ここまでできたらインスタンスを起動
を押下します。
WordPressにアクセス
EC2インスタンスの一覧画面に移動します。
webserver#1-user1
にチェックを入れると詳細が表示されます。
パブリック IPv4 アドレスをコピーし、新規タブに貼り付けます。
※オープンアドレスのリンクを押下でもOKです。
これで、EC2が稼働していること、WordPressが稼働していることが確認できました。
Step3. RDSの作成
RDSのDBインスタンスをパブリックサブネット-1a上に作成します。
事前準備①
DB用のセキュリティグループの作成
EC2コンソール画面の左カラムのセキュリティグループ
を選択します。
セキュリティグループの作成
を押下します。
基本的な詳細
セキュリティグループ名
db-user1
と入力します。
説明
RDS for MySQL
と入力します。
VPC
作成したhandson-user1
のVPCを選択します。
インバウンドルール
ルールの追加
を押下し、画像のように入力します。
ソースに関しては、Webサーバにアタッチされているセキュリティグループからのアクセスを受け入れるという設定をします。
※ソースに「web」と入力すれば表示されます。
アウトバウンドルール
デフォルトのまま進みます。
セキュリティグループの作成
を押下します。
事前準備②
サブネットグループの作成
RDSのコンソール画面に遷移し、左カラムのサブネットグループ
を押下します。
DBサブネットグルプの作成
を押下します。
サブネットグループの詳細
名前
db-subnet-user1
と入力します。
説明
RDS for MySQL
と入力します。
VPC
作成したhandson-user1
のVPCを選択します。
サブネットを追加
アベイラビリティーゾーン
ap-northeast-1a
とap-northeast-1c
を選択します。
サブネット
ap-northeast-1cは末尾が10.0.3.0/24
のものを選択します。
ap-northeast-1aは末尾が10.0.2.0/24
のものを選択します。
ここまでできたら作成
を押下します。
RDS DBインスタンスの作成
データベースの作成
左カラムのデータベース
を押下します。
データベースの作成
を押下します。
データベース作成方法を選択
標準作成
を選択します。
エンジンのオプション
エンジンのタイプ
MySQL
を選択します。
テンプレート
無料利用枠
を選択します。
可用性と耐久性
デフォルトのまま進みます。
設定
DB インスタンス識別子
rds-user1
と入力します。
マスターユーザー名
admin
のまま進みます。
マスターパスワード
任意のパスワードを入力します。
例:amazon1234
※後で使いますので、絶対にメモしておいてください。
インスタンスの設定、ストレージ
デフォルトのまま進みます。
接続
Virtual Private Cloud (VPC)
handson-user1
を選択します。
DB サブネットグループ
先ほど作成したサブネットグループ(db-subnet-user1
)を選択します。
パブリックアクセス
なし
が選択されていることを確認します。
VPC セキュリティグループ (ファイアウォール)
既存の選択
が選択されていることを確認します。
既存の VPC セキュリティグループ
db-user1
を選択し、default
は削除します。
アベイラビリティーゾーン
ap-northeast-1a
を選択します。
データベース認証
デフォルトのまま進みます。
モニタリング
拡張モニタリングの有効化
が選択されていないことを確認します。
追加設定
押下すると、項目が表示されます。
最初のデータベース名
wordpress
と入力します。
バックアップ
自動バックアップを有効にします
のチェックを外します。
残りの項目はデフォルトのまま進み、データベースの作成
を押下します。
データベースが正常に作成されると、一覧画面が移ります。
ここで、作成したrds-user1
を選択します。
後で使用しますので、下記エンドポイントのURLをメモしておきます。
Step4. ELBの作成
事前準備①
ELB用のセキュリティグループの作成
EC2コンソール画面の左カラムのセキュリティグループ
を選択します。
セキュリティグループの作成
を押下します。
基本的な詳細
セキュリティグループ名
elb-user1
と入力します。
説明
elb-user1
と入力します。
VPC
作成したhandson-user1
のVPCを選択します。
インバウンドルール
ルールの追加
を押下し、画像のように入力します。
ソースに関しては、すべてのIPv4アドレスからのアクセスを受け入れるという設定をします。
アウトバウンドルール
デフォルトのまま進みます。
セキュリティグループの作成
を押下します。
事前準備②
ターゲットグループの作成
EC2のコンソール画面左カラムのターゲットグループ
を押下します。
基本的な設定
ターゲットタイプの選択
インスタンス
を選択します。
ターゲットグループ名
target-user1
を選択します。
プロトコル : ポート,プロトコルバージョン,IPアドレスタイプ
デフォルトのまま進みます。
VPC
handson-user1
を選択します。
ヘルスチェック
ヘルスチェックプロトコル
HTTP
を選択します。
ヘルスチェックパス
下記を入力します。
/wp-includes/images/blank.gif
ここまでできたら次へ
を押下します。
ターゲットを登録
使用可能なインスタンス
webserver#1-user1
にチェックを入れたら、
保留中として以下を含める
を押下します。
すると、ターゲットを確認の項目に、チェックしたEC2が追加されます。
ここまでできたらターゲットグループの作成
を押下します。
ALBの作成
ロードバランサーの作成
EC2のコンソール画面左カラムのロードバランサ―
を押下します。
ロードバランサーの作成
を押下します。
ロードバランサータイプ
ターゲットタイプの選択
Application Load Balancer
の下にある作成
を押下します。
インスタンス
を選択します。
基本的な設定
ロードバランサー名
elb-user1
と入力します。
スキーム、IP アドレスタイプ
デフォルトのまま進みます。
ネットワークマッピング
VPC
handson-user1
を選択します。
マッピング
ap-northeast-1a (apne1-az4)
にチェックを入れます。
サブネットが表示されるので、パブリックサブネット-1a
を選択します。
ap-northeast-1c (apne1-az1)
にチェックを入れます。
サブネットが表示されるので、パブリックサブネット-1c
を選択します。
セキュリティグループ
セキュリティグループ
elb-user1
を選択します。
default
は削除します。
リスナーとルーティング
先ほど作成したターゲットグループを選択します。
target-user1
を選択します。
ここまでできたらロードバランサ―の作成
を押下します。
ELBの一覧画面に遷移し、作成したelb-user1
を押下します。
すると詳細画面が表示されますので、DNS 名
をコピーします。
次にリスナーとルールタブのデフォルトアクションの項目にあるtarget-user1
を押下します。
登録済みターゲットを確認します。
①webserver#1-user1
というEC2インスタンスがターゲットグループに登録されていること
②ヘルスステータスがHealthy
であること
①、②を満たしていれば、EC2インスタンスが正常に動いている、ということが確認できます。
Step5. WordPressの初期設定
WordPressの設定画面にアクセス
アクセスの確認
EC2のコンソール画面左カラムのロードバランサ―
を押下します。
elb-user1
のDNS名をコピーし、新規タブに貼り付けます。
すると、画像ようにWordPressが表示されます。
さあ、始めましょう!
を押下します。
データベース名
wordpress
を入力します。
ユーザー名
admin
を入力します。
パスワード
amazon1234
を入力します。
データベースのホスト名
メモしておいたRDSのエンドポイントを貼り付けます。
テーブル接頭辞
デフォルトのまま進みます。
この部分のインストールは無事完了しました。と表示されるので、インストール実行
を押下します。
Wordpressの情報を入力
サイトのタイトル
はじめてのAWS
と入力します。
ユーザー名
admin
と入力します。
パスワード
デフォルトで入力されているものをそのまま使います。
※ログイン時に必要になるのでメモしておきます。
メールアドレス
自身のメールアドレスを入力します。
検索エンジンでの表示
検索エンジンがサイトをインデックスしないようにする
にチェックを入れます。
ここまでできたら、WordPressをインストール
を押下します。
成功すれば画像のように表示されるので、ログイン
を押下します。
ログイン画面に遷移しますので、はじめてのAWS へ移動
を押下します。
すると、画像のようにWordPressのサイトが表示されます。
Step6. AMIの作成と2つ目のEC2インスタンスを作成
WordPressがインストールされたEC2インスタンスからAMIの作成を行い、そのAMIから2つ目のEC2インスタンスを作成します。
次に、ELBに登録することで、Webサーバの冗長化を行います。
AMIの作成
イメージの作成
EC2コンソール画面の左カラムのインスタンス
を選択します。
画像のように作成したEC2インスタンスにチェックを入れ、アクションタブからイメージの作成
を押下します。
イメージを作成
イメージ名
wordpress-user1
と入力します。
イメージの説明
wordpress-user1
と入力します。
再起動しない
有効化
にチェックをいれないまま進みます。
その他の項目はデフォルトのまま進み、イメージを作成
を押下します。
ここまででAMIが作成できました。
2つめのEC2インスタンスの作成
イメージの作成
EC2コンソール画面の左カラムのAMI
を選択します。
画像のように作成したAMIにチェックを入れ、AMI からインスタンスを起動
を押下します。
名前とタグ
名前
webserver#2-user1
と入力します。
キーペア (ログイン)
キーペアなしで続行 (推奨されません)
と選択します。
ネットワーク設定
編集
を押下し、項目を表示させます。
VPC
handson-user1
を押下します。
サブネット
パブリックサブネット-1c
を選択します。
パブリック IP の自動割り当て
有効化
を選択します。
ファイアウォール (セキュリティグループ)
既存のセキュリティグループを選択する
を選択します。
共通のセキュリティグループ
web-user1
を選択します。
ここまでできたらインスタンスを起動
を押下します。
2つめのEC2インスタンスをELBに登録
ターゲットグループの作成
EC2コンソール画面の左カラムのターゲットグループ
を選択します。
作成したターゲットグループを押下します。
登録済みターゲットまでスクロールし、ターゲットを登録
を押下します。
webserver#2-user1にチェックを入れ、保留中として以下を含める
を押下します。
保留中のターゲットの登録
を押下します。
ここまででELBに2台のEC2インスタンスが紐づきました。
Step7. RDSのマルチAZ配置
DBインスタンスをマルチAZ配置に変更
RDSコンソール画面の左カラムのデータベース
を選択します。
画像のように作成したRDSにチェックを入れ、変更
を押下します。
可用性と耐久性
マルチ AZ 配置
スタンバイインスタンスを作成する (本稼働環境向けに推奨)
にチェックを入れる。
チェックを入れたら、DB インスタンスを変更
を押下します。
すると、変更のサマリーのページに遷移します。
変更のスケジュール
変更を適用するタイミング
すぐに適用
にチェックを入れる。
チェックを入れたら、DB インスタンスを変更
を押下します。
ここまででRDSのマルチAZ配置ができました。
以上で、スケーラブルなウェブサイトの構築が完了しました。