水曜日, 5月 7, 2025
ホームニューステックニュースAWS完全初心者がスケーラブルウェブサイトを構築してみた話 #EC2 - Qiita

AWS完全初心者がスケーラブルウェブサイトを構築してみた話 #EC2 – Qiita



AWS完全初心者がスケーラブルウェブサイトを構築してみた話 #EC2 - Qiita

はじめに

こんにちは。Tsukasaです!
今日はAWS公式ハンズオンのスケーラブルウェブサイトを構築してみた事について記事にしてみようと思います。
後程紹介しますが、AWS公式サイトでは無料のハンズオン学習サイトが約30個あります。
AWSの職員の方が動画で解説してくださり、それに合わせてハンズオン学習を進めていく形になります。
動画ですので、わからないところがあったら、戻ったり、止めることもできるので便利ですね。
それでは、早速見ていきたいと思います!

今回やること

今回やることはスケーラブルウェブサイトを構築することになります。
ハンズオンの資料としては以下のものを使用しました。

今回は下記の構成図のようなスケーラブルウェブサイトを構築することがゴールとなります。
VPCを作成して、EC2とRDSを2つ作って、可用性を上げる。
認定試験でもよく出てきそうな内容ですよね。

image.png

今回やることは主に以下の通りとなります。
VPCの作成
EC2の作成
RDSの作成
ロードバランサーの作成
それでは1つずつ見ていきたいと思います。

VPCの作成

まずはVPCを作成します。
VPCとはVirtual Private Cloudの略です。
VPCはAWS上に自分専用の仮想ネットワークを作るための仕組みです。
EC2やRDSなどの基盤サービスを配置するために必要になります。

コンソールからVPCを検索し、開いたら、中央付近上側にあるVPCを作成というボタンをクリックします。
image.png

開いたら、必要事項を記入していきます。
基本的にはこちらのキャプチャの通り入力していただければ大丈夫です。
VPC名などはわかりやすいものが良いと思います。
image.png

画面をスクロールしていくと、アベイラビリティーゾーンの数を選択できます。
今回は2つです。
その際に第1アベイラビリティーゾーンと第2アベイラビリティーゾーンを選択します。
東京リージョンを使う人が多いと思うので、それぞれap-northeastを選びます。
image.png

その後、サブネットのCIDRブロックをカスタマイズします。
今回はパブリックサブネットとプライベートサブネットが2つずつ、合計で4つ必要になるので、
10.0.0.0/24~10.0.3.0/24まで設定します。
image.png

その他はデフォルトの設定のままで、一番下まで行き、VPCを作成ボタンを押し、VPCを作成します。
作成されると以下の画像のようにVPCの詳細が見れます。
サブネットが4つできている事がわかると思います。
これで、EC2とRDSを置くための土台が完成しました。
image.png

EC2の作成

次はEC2を作成します。
EC2は一言で言えば仮想サーバーです。
Webアプリを管理し、DBなどと連携する役割を持ちます。

コンソールからEC2を検索したら、下記のインスタンスを起動をクリックして、インスタンスの作成を行います。
image.png

まずは名前です。こちらもVPCと同様でわかりやすいものを付けてください。
マシンイメージ(AMI)ですが、今回はAmazon Linux2 AMIを選択してください。
image.png

VPCは先程作ったVPCを選択します。
パブリックIPの自動割り当てですが、下記キャプチャでは無効になっていますが、有効にします。
セキュリティグループ名もわかりやすい名前を付けます。
image.png

インバウンドセキュリティグループのルールですが、こちらはデフォルトでSSHが指定されています。
セキュリティグループルールを追加をクリックして、HTTPを追加します。
この際のソースは0.0.0.0/0を選択します。
image.png

高度なネットワーク設定を開いて一番下のユーザーデータに今回使用するWordpressのコードを入力します。
こちらはハンズオン資料にありますので、そちらでご確認をお願いします。
image.png

必要事項を全て入力して、インスタンスを起動をクリックすると、インスタンスが起動されます。
image.png

RDSの作成

RDSを作成する前にまずはセキュリティグループの作成を行います。
そもそも何故セキュリティグループが必要かと言うと、RDSはプライベートサブネットにあります。
これはRDSをインターネットから直接アクセスさせないための基本的なセキュリティ対策です。
ですが、アプリ側からの接続は必要ですよね?
今回WebアプリはEC2にあり、EC2はパブリックサブネットにあるため、アプリから接続できるようにするためにセキュリティグループの作成を行います。
セキュリティグループの作成はEC2の画面から作成が可能です。
左側にセキュリティグループというタブがありますので、そこをクリックして、右上にあるセキュリティグループの作成をクリックします。
image.png

セキュリティグループ名を付けて、説明を書きます。
内容は下記のキャプチャを参考にしていただけたらと思います。
VPCは既に作成済みのものを選択します。
インバウンドルールは、今回はMySQL/Auroraを選択します。
ソースは、先程EC2で作成したセキュリティグループ名を選択します。
後は全てデフォルトのままで、一番下まで行き、セキュリティグループを作成ボタンを押して、セキュリティグループができたことを確認します。
image.png

セキュリティグループが完成したら、ここからRDSの作成を行います。
コンソールからRDSと検索して、開いたら、右上のDBサブネットグループを作成をクリックします。
image.png

厳密にはここではDBの作成ではなくDBサブネットの作成になります。
DBサブネットとはRDSを使用する際にDBインスタンスをどのネットワーク上に配置するかを決めるサブネットの集合となります。
その上で下記の設定を行います。
名前を付けて、説明を記入します。
VPCは作成済のものを選択します。
サブネットを追加からアベイラビリティーゾーンを選択します。
image.png

サブネットはプライベートサブネットの2つを選択します。
後はデフォルトの設定で。作成ボタンを押して、DBサブネットグループを作成します。
image.png

DBサブネットグループが確認できましたね。
image.png

そしたらここから実際のDBの作成に入ります。
画面左側のデータベースを選択して、画面右上にある、データベースの作成をクリックします。
image.png

今回はMySQLを使用しますので、MySQLを選択します。
スクリーンショット 2025-05-06 17.43.28.png

エンジンバージョンはデフォルトのままで大丈夫です。
テンプレートでは今回はハンズオンなので一番右の無料利用枠を選択します。
image.png

設定は下記のようにしていただければ大丈夫です。
DBインスタンス識別子とマスターユーザー名も自由に付けて大丈夫です。
パスワードを設定する必要があるので、忘れずに覚えられるものにしましょう。
image.png

セキュリティグループとアベイラビリティーゾーンを選択します。
image.png

データベース名を付けます。
今回はWordpressにしました。
後はデフォルトの設定で大丈夫です。
一番下まで行き、データベースの作成ボタンをクリックして、データベースを作成します。
image.png

ELBの作成

ELB(Elastic Load Balancer)とはアプリケーションへのアクセス(リクエスト)を複数のサーバーに分散させることで、負荷を軽減し、可用性やスケーラビリティを高めるための機能です。
今回はEC2サーバーを2つ作成しますので、ELBを作成することで2つのEC2サーバーに負荷を分散させることができます。
ELBを作る前にELBのセキュリティグループを作成する必要があります。
セキュリティグループの作成はEC2の画面からできるんでしたよね。
セキュリティーグループの画面で必要事項を記入していきます。
インバウンドルール実際にアクセスするポート番号とIPアドレスを指定します。
HTTPを選択して、ソースはAnywhere-IPv4を選択します。
後はデフォルトで大丈夫です。
image.png

セキュリティグループが完成しました。
image.png

続いてターゲットグループを作成します。
ターゲットグループとは、ELBがトラフィックを分散する対象のEC2インスタンスやサービスのグループのことです。
ターゲットグループ = ELBの送り先リストのことです。
ELB自体はどこにリクエストを送るかを知りません。
そこで、「このグループに属するサーバーたち(ターゲット)に振り分けてね」という設定をするのがターゲットグループです。ここで言うサーバーとはEC2インスタンスのことになります。
要するに振り分けるためのEC2インスタンスをここで登録するのです。

image.png

下記のように必要事項を記入します。
VPCは作成済のものを選択します。

image.png

ヘルスチェックパスはハンズオン資料に添付ファイルとしてありますので、そちらをご確認ください。
スクリーンショット 2025-05-06 18.03.33.png

紐付けたいEC2インスタンスを選択します。
選択したら、ターゲットグループの作成ボタンをクリックして、ターゲットグループを作成します。
スクリーンショット 2025-05-06 18.04.48.png

セキュリティグループとターゲットグループが完成したらロードバランサーを作成します。
スクリーンショット 2025-05-06 18.05.30.png

今回はALBになりますので、一番左のApplication Load Balancerを選択します。
スクリーンショット 2025-05-06 18.06.16.png

下記のように必要事項の記入と選択を行なってロードバランサーを作成します。
image.png
image.png

WordPressの初期設定

こちらはハンズオン上ですと、初期設定をする必要がありますが、こちらでは割愛させていただきます。

上記の設定が全てうまくいくとこのようなWordpressのサイトにアクセスできるようになります。
image.png

AMIの作成と作成したAMIから2つ目のEC2インスタンスの作成

AMI(Amazon Machine Image)は、EC2インスタンスのテンプレート(ひな形)です。
言い換えると、OSやアプリの状態を丸ごと保存して再利用できる仕組みです。
この仕組みを使って、2つ目のEC2インスタンスを作成しようと思います。
先程EC2とRDS、ELBを作成しましたが、現状では下記のような状況です。
EC2インスタンスが2つないといけないのですが、まだ1つしかありません。
image.png

EC2インスタンスの画面を開きます。
image.png

既に作成済のEC2インスタンスを選択し、インスタンスの状態から、イメージとテンプレートを選択します。
image.png

必要事項を記入して、イメージを作成します。
image.png

画面左側からAMIを選択すると先程作成したイメージが表示されています。
image.png

イメージを選択して、AMIからインスタンスを起動をクリックします。
これで2つ目のEC2インスタンスが作成されます。
image.png

1つ目のEC2インスタンスを作成した時と同じように必要事項を記入していきます。
image.png
image.png

1つ目のEC2インスタンスを作成した時には、ユーザーデータにWordpressのコードを入力しましたが、今回は不要となります。何故なら1つ目のEC2インスタンスの情報を持ったAMIからインスタンスを作成するので、既にWordpressのコードは登録済だからです。
一番右下のインスタンスを起動をクリックしてインスタンスを起動させます。
image.png

これで2つ目のEC2インスタンスが完成しました。
しかし、これだけでは、せっかく作ったEC2インスタンスが使えません。
どうすれば良いのでしょうか?
そうです。ターゲットグループを作成して、ELBに紐づける必要があるんですよね。
image.png

ターゲットグループの作成方法は上記で紹介したので、こちらでは割愛いたします。
成功すると下記のようになります。
スクリーンショット 2025-05-06 20.26.30.png

RDSのマルチAZ配置

EC2インスタンスも2つできましたが、何か物足りないですよね?
そうです。RDSがまだ1つしかありません。
image.png

ここでは下記の図のようにRDSをマルチAZ配置にする必要があります。
image.png

RDSを検索して、データベースから先程作成したデータベースを選択します。
image.png

可用性と耐久性の項目で
スタンバイインスタンスを作成するを選択します。
デフォルトではスタンバイインスタンスを作成しないでくださいにチェックが入っているので、それを変えます。
image.png

変更のスケジュールの項目ですぐに適用にチェックを入れます。
その後右下のDBインスタンスを変更ボタンをクリックします。
image.png

適用されるまで数分かかります。
マルチAZの項目がありとなれば、成功です。
image.png

Webシステム全体の可用性の確認

最後に可用性の確認を行います。
今回EC2インスタンスが2つあるので、片方を停止した上でWordpressが稼働しているかどうかの確認を行いたいと思います。

EC2インスタンスの画面から、停止したいインスタンスを選択して、インスタンスの状態からインスタンスを停止をクリックします。
image.png

インスタンスが停止済となりました。
image.png

その上でWordpressが動くか確認します。
おーー!!しっかり動いています!
今は一時的に敢えてEC2インスタンスを停止しましたが、もし何らかの理由でサーバーが停止しても
2つのアベイラビリティーゾーンに展開しているので、問題なく動きそうですね。
可用性の高いシステムの完成です!!
image.png

終わりに

いかがでしたでしょうか?
やっていることとしては難しいことではありませんが、設定したり、インスタンスを作ったりとやることは沢山ありました。
ハンズオンでは動画を見ながら進める形ですが、正直手を動かしている時は、そっちに夢中となっていたので、全てを理解することはできませんでした。
しかし、今こうやってアウトプットを言語化することで、曖昧だった部分も理解できたように思えます。
セキュリティグループの作成やターゲットグループの作成等は今まで曖昧な理解でしたが、今こうやって記事にすることで何故それが必要なのか?を理解できました。
AWSを理解する上でハンズオンは必須ですが、ハンズオンの後に何かしらの形でアウトプットすることが更なる知識の定着に繋がると感じました。これに認定試験の勉強までやればもう鬼に金棒ですね!
特に初心者の方はこの無料のハンズオンに是非挑戦してみてください!



フラッグシティパートナーズ海外不動産投資セミナー 【DMM FX】入金

Source link

Views: 2

RELATED ARTICLES

返事を書く

あなたのコメントを入力してください。
ここにあなたの名前を入力してください

- Advertisment -

Most Popular

Recent Comments