0
1

スケーラブルWebシステム構築

Posted at

はじめに

EC2やRDSを使用した基本的なスケーラブルWebシステム構築をハンズオン形式で行います。

完成イメージ

スクリーンショット 2023-12-24 190608.png

アジェンダ

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に修正し、保存を押下します。

スクリーンショット 2023-12-23 183927.png

サブネット名の編集

左カラムからサブネットを押下します。
一覧画面のhandson-user1-subnet-public1-ap-northeast-1aにカーソルを合わせると、ペンシルアイコンが表示されるので、それを押下します。

パブリックサブネット-1aに修正し、保存を押下します。

スクリーンショット 2023-12-23 190012.png
同じ要領で他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のルールはデフォルトで設定されています。
スクリーンショット 2023-12-23 193243.png
HTTPアクセスを許可するルールを追加します。
セキュリティグループルールの追加を押下し、下記画像のように編集します。
スクリーンショット 2023-12-23 193450.png

ストレージを設定

デフォルトのまま進みます。

高度な詳細

ユーザーデータの項目以外はデフォルトのまま進みます。

ユーザーデータ

ユーザーデータとは、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 アドレスをコピーし、新規タブに貼り付けます。
スクリーンショット 2023-12-23 194603.png
※オープンアドレスのリンクを押下でもOKです。

画像のように表示されれば成功です。
スクリーンショット 2023-12-23 194902.png

これで、EC2が稼働していること、WordPressが稼働していることが確認できました。

Step3. RDSの作成

RDSのDBインスタンスをパブリックサブネット-1a上に作成します。

事前準備①

DB用のセキュリティグループの作成

EC2コンソール画面の左カラムのセキュリティグループを選択します。
セキュリティグループの作成を押下します。

基本的な詳細

セキュリティグループ名

db-user1と入力します。

説明

RDS for MySQLと入力します。

VPC

作成したhandson-user1のVPCを選択します。

インバウンドルール

ルールの追加を押下し、画像のように入力します。
ソースに関しては、Webサーバにアタッチされているセキュリティグループからのアクセスを受け入れるという設定をします。
※ソースに「web」と入力すれば表示されます。
スクリーンショット 2023-12-23 195944.png

アウトバウンドルール

デフォルトのまま進みます。

セキュリティグループの作成を押下します。

事前準備②

サブネットグループの作成

RDSのコンソール画面に遷移し、左カラムのサブネットグループを押下します。
DBサブネットグルプの作成を押下します。
スクリーンショット 2023-12-23 200404.png

サブネットグループの詳細

名前

db-subnet-user1と入力します。

説明

RDS for MySQLと入力します。

VPC

作成したhandson-user1のVPCを選択します。

サブネットを追加

アベイラビリティーゾーン

ap-northeast-1aap-northeast-1cを選択します。

サブネット

ap-northeast-1cは末尾が10.0.3.0/24のものを選択します。
ap-northeast-1aは末尾が10.0.2.0/24のものを選択します。

ここまでできたら作成を押下します。

RDS DBインスタンスの作成

データベースの作成

左カラムのデータベースを押下します。
データベースの作成を押下します。
スクリーンショット 2023-12-23 201148.png

データベース作成方法を選択

標準作成を選択します。

エンジンのオプション

エンジンのタイプ

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をメモしておきます。
スクリーンショット 2023-12-23 203652.png

Step4. ELBの作成

事前準備①

ELB用のセキュリティグループの作成

EC2コンソール画面の左カラムのセキュリティグループを選択します。
セキュリティグループの作成を押下します。

基本的な詳細

セキュリティグループ名

elb-user1と入力します。

説明

elb-user1と入力します。

VPC

作成したhandson-user1のVPCを選択します。

インバウンドルール

ルールの追加を押下し、画像のように入力します。
ソースに関しては、すべてのIPv4アドレスからのアクセスを受け入れるという設定をします。
スクリーンショット 2023-12-24 091608.png

アウトバウンドルール

デフォルトのまま進みます。

セキュリティグループの作成を押下します。

事前準備②

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

EC2のコンソール画面左カラムのターゲットグループを押下します。
スクリーンショット 2023-12-24 092018.png

基本的な設定

ターゲットタイプの選択

インスタンスを選択します。

ターゲットグループ名

target-user1を選択します。

プロトコル : ポート,プロトコルバージョン,IPアドレスタイプ

デフォルトのまま進みます。

VPC

handson-user1を選択します。

ヘルスチェック

ヘルスチェックプロトコル

HTTPを選択します。

ヘルスチェックパス

下記を入力します。

/wp-includes/images/blank.gif

ここまでできたら次へを押下します。

ターゲットを登録

使用可能なインスタンス

webserver#1-user1にチェックを入れたら、
保留中として以下を含めるを押下します。
スクリーンショット 2023-12-24 092848.png
すると、ターゲットを確認の項目に、チェックしたEC2が追加されます。

ここまでできたらターゲットグループの作成を押下します。

ALBの作成

ロードバランサーの作成

EC2のコンソール画面左カラムのロードバランサ―を押下します。
ロードバランサーの作成を押下します。
スクリーンショット 2023-12-24 093254.png

ロードバランサータイプ

ターゲットタイプの選択

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を押下します。
スクリーンショット 2023-12-24 094825.png

すると詳細画面が表示されますので、DNS 名をコピーします。
スクリーンショット 2023-12-24 095217.png

次にリスナーとルールタブのデフォルトアクションの項目にあるtarget-user1を押下します。
スクリーンショット 2023-12-24 095449.png

登録済みターゲットを確認します。
webserver#1-user1というEC2インスタンスがターゲットグループに登録されていること
②ヘルスステータスがHealthyであること
①、②を満たしていれば、EC2インスタンスが正常に動いている、ということが確認できます。

Step5. WordPressの初期設定

WordPressの設定画面にアクセス

アクセスの確認

EC2のコンソール画面左カラムのロードバランサ―を押下します。
elb-user1のDNS名をコピーし、新規タブに貼り付けます。
すると、画像ようにWordPressが表示されます。
スクリーンショット 2023-12-24 100219.png
さあ、始めましょう!を押下します。

データベース名

wordpressを入力します。

ユーザー名

adminを入力します。

パスワード

amazon1234を入力します。

データベースのホスト名

メモしておいたRDSのエンドポイントを貼り付けます。

テーブル接頭辞

デフォルトのまま進みます。

ここまでできたら送信を押下します。
スクリーンショット 2023-12-24 100951.png

この部分のインストールは無事完了しました。と表示されるので、インストール実行を押下します。

Wordpressの情報を入力

サイトのタイトル

はじめてのAWSと入力します。

ユーザー名

adminと入力します。

パスワード

デフォルトで入力されているものをそのまま使います。
※ログイン時に必要になるのでメモしておきます。

メールアドレス

自身のメールアドレスを入力します。

検索エンジンでの表示

検索エンジンがサイトをインデックスしないようにするにチェックを入れます。

ここまでできたら、WordPressをインストールを押下します。
スクリーンショット 2023-12-24 101632.png

成功すれば画像のように表示されるので、ログインを押下します。
スクリーンショット 2023-12-24 101808.png

ログイン画面に遷移しますので、はじめてのAWS へ移動を押下します。
スクリーンショット 2023-12-24 101956.png

すると、画像のようにWordPressのサイトが表示されます。
スクリーンショット 2023-12-24 102131.png

Step6. AMIの作成と2つ目のEC2インスタンスを作成

WordPressがインストールされたEC2インスタンスからAMIの作成を行い、そのAMIから2つ目のEC2インスタンスを作成します。
次に、ELBに登録することで、Webサーバの冗長化を行います。

AMIの作成

イメージの作成

EC2コンソール画面の左カラムのインスタンスを選択します。
画像のように作成したEC2インスタンスにチェックを入れ、アクションタブからイメージの作成を押下します。
スクリーンショット 2023-12-24 104732.png

イメージを作成

イメージ名

wordpress-user1と入力します。

イメージの説明

wordpress-user1と入力します。

再起動しない

有効化にチェックをいれないまま進みます。

その他の項目はデフォルトのまま進み、イメージを作成を押下します。

ここまででAMIが作成できました。

2つめのEC2インスタンスの作成

イメージの作成

EC2コンソール画面の左カラムのAMIを選択します。
画像のように作成したAMIにチェックを入れ、AMI からインスタンスを起動を押下します。
スクリーンショット 2023-12-24 105937.png

名前とタグ

名前

webserver#2-user1と入力します。

キーペア (ログイン)

キーペアなしで続行 (推奨されません)と選択します。

ネットワーク設定

編集を押下し、項目を表示させます。

VPC

handson-user1を押下します。

サブネット

パブリックサブネット-1cを選択します。

パブリック IP の自動割り当て

有効化を選択します。

ファイアウォール (セキュリティグループ)

既存のセキュリティグループを選択するを選択します。

共通のセキュリティグループ

web-user1を選択します。

ここまでできたらインスタンスを起動を押下します。

2つめのEC2インスタンスをELBに登録

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

EC2コンソール画面の左カラムのターゲットグループを選択します。
作成したターゲットグループを押下します。
スクリーンショット 2023-12-24 111159.png

登録済みターゲットまでスクロールし、ターゲットを登録を押下します。
スクリーンショット 2023-12-24 111527.png

webserver#2-user1にチェックを入れ、保留中として以下を含めるを押下します。
スクリーンショット 2023-12-24 111714.png

保留中のターゲットの登録を押下します。

ここまででELBに2台のEC2インスタンスが紐づきました。

Step7. RDSのマルチAZ配置

DBインスタンスをマルチAZ配置に変更

RDSコンソール画面の左カラムのデータベースを選択します。
画像のように作成したRDSにチェックを入れ、変更を押下します。
スクリーンショット 2023-12-24 112255.png

可用性と耐久性

マルチ AZ 配置

スタンバイインスタンスを作成する (本稼働環境向けに推奨)にチェックを入れる。

チェックを入れたら、DB インスタンスを変更を押下します。
すると、変更のサマリーのページに遷移します。

変更のスケジュール

変更を適用するタイミング

すぐに適用にチェックを入れる。

チェックを入れたら、DB インスタンスを変更を押下します。

ここまででRDSのマルチAZ配置ができました。

以上で、スケーラブルなウェブサイトの構築が完了しました。

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