3層アーキテクチャのスケーラブルウェブサイトを構築してみた
はじめに
こんにちは、山本翔大です。
この記事では、AWSを使用してスケーラブルな3層アーキテクチャのウェブサイトを構築したのでその手順を画像とともに説明します。具体的な構造は以下のとおりです。
やってみた
1.VPCの作成
まずはVPCを作成します。
今回は可用性を高めるため、パブリックサブネットとプライベートサブネットを複数のAZに1つずつ配置します。
【現在の構成】
2.EC2インスタンスの作成
次にEC2インスタンスをパブリックサブネット1a上に作成します。
AMIとインスタンスタイプはブログ執筆時においてデフォルトのものを使用しました。
- Amazon Linux 2023 AMI 2023.8.20250908.0 x86_64 HVM kernel-6.1
- t3.micro
EC2のセキュリティグループは以下のように設定しています。
インバウンドルール
- SSH TCP 22 マイIP
- HTTP TCP 80 0.0.0.0/0
アウトバウンドルール
- Default
ユーザーデータにはWordPressのインストールをするスクリプトを記述しました。
#!/bin/bash
dnf update -y
dnf install -y httpd wget php-fpm php-mysqli php-json php php-devel mariadb105
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
1つ目のEC2インスタンスの作成完了後、カスタムAMIを作成します。このWordPressがインストール済みカスタムAMIを使って2つ目のEC2インスタンスをパブリックサブネット1c上に作成します。
【現在の構成】
3.ロードバランサーの作成
負荷を分散するためのロードバランサーを設定します。
先ほど作った2つのインスタンスをターゲットグループに登録します。
ターゲットグループは
- プロトコル : HTTP ポート: 80
- プロトコルバージョン : HTTP1
のDefault設定で進めてください。
ターゲットグループが作成できたらロードバランサーの作成からApplication Load Balancerを選択し、2つのパブリックサブネットを設定します。
ALBのセキュリティグループは以下のように設定しています。
インバウンドルール
- HTTP TCP 80 Anywhere-IPv4 0.0.0.0/0
アウトバウンドルール
- Default
【現在の構成】
4.RDSの作成
次にRDSを作成します。エンジンはMySQL、バージョンはデフォルトのものを選択しました。
サブネットはプライベートサブネット1aに設定します。
RDSのセキュリティグループは以下のように設定しています。
インバウンドルール
- MYSQL/Aurora TCP 3306 EC2 でアタッチしているSG名をソースとして選択
アウトバウンドルール
- Default
なお、データベースの設定時のマスターユーザー名とマスターパスワードはこの後のWordPressの設定で使用するため忘れないよう保存してください。
5.RDSのマルチAZ化
次に作成したRDSをマルチAZ化します。
先ほど作成したデータベースを選択し変更をクリックします。可用性と耐久性から「スタンバイインスタンスを作成する (本稼働環境向けに推奨)」を選択するとマルチAZ配置にすることができます。
設定が完了したら続行をクリックし、変更のスケジュールを「すぐに適用」に設定してください。
【現在の構成】
6.WordPressの初期設定
最後にWordPressの初期設定を行います。
ロードバランサーに表示されているDNS名にアクセスするとWordPressを開くことができます。
データベース名、ユーザー名、パスワードを入力する欄があるのでデータベースを作成した際に設定したものを入力してください。
システム全体の検証
以上で構築は終了です。
設定が正常にできているかテストを行います。
EC2インスタンスの片方を停止させます。この状態でロードバランサーのDNS名にアクセスすると、自動的に稼働中のもう片方のインスタンスにルーティングされます。
停止するインスタンスを入れ替えても同様の動きになることが確認できればロードバランサーの設定ができています。
次にデータベースのテストをします。
作成したデータベースを選択し、アクションから再起動を選択します。「フェイルオーバーで再起動しますか?」というチェックボックスが出てくるのでチェックして確認を押すとデータベースの再起動が始まります。再起動が完了して10~20分ほど経過するとリージョンとAZがap-northeast-1aからap-northeast-1cに変更されます。
参考資料
構成参考
・AWS Hands-On for Beginners スケーラブルウェブサイト構築編
ユーザーデータ参考
・スケーラブルWebサイト構築ハンズオン
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。