LoginSignup
0
0

EC2とRDSでWeb環境構築するよ!(第4回:RDS編)

Last updated at Posted at 2024-05-17

EC2とRDSのWeb環境構築の第4回目です。
第3回:Route53編はこちら
https://qiita.com/kikurage2030/items/46154965781b49b93e0d

サービスの全体象

作りたいサービスの概要はこんな感じです。
image.png

EC2にWebサーバを立ててPHPのプログラムがMySQLにアクセスしてテーブルの情報を表示する画面を作ります。
いわゆる一般的なWebシステムの構成でWebサーバはPublicサブネットに公開し、DBサーバはPrivateサブネットで冗長構成としてEC2のみのアクセスを許可する制御とします。また独自ドメインを取得してDNSでの名前解決も行えるようにします。

このシリーズで取り組む内容は
第1回:VPC・サブネット周りの作業
第2回:EC2の構築
第3回:Route53の登録 
第4回:RDSの構築 ここ!
第5回:Web環境の構築
を予定しています。今回は第4回:RDS編となります。


RDS構築作業概要

今回はEC2上のアプリが接続するためのDBサーバ(RDS)を構築します。RDS構築にあたってはEC2と同様にセキュリティグループの作成が必要となります。
またRDS独自の可用性要件としてマルチAZ対応を前提とした構成を組みます。その後必要なDBパラメータの設定を行いこれらの作業のテンプレートをRDSのインスタンスにアタッチしてあげる作業を行います。

順序としては
1.セキュリティグループの作成
2.サブネットグループの作成
3.パラメータグループの作成
4.オプショングループの作成
5.RDSインスタンスの作成
6.RDSへの接続確認
の順番で実施。

1.RDS用のセキュリティグループを作成する

RDSへの接続を制御するためにセキュリティグループ(ファイアウォール)を設定します。
RDS(MySQL)に対してのインバウンドアクセスのみを許可する設定を行います。

「EC2」→「セキュリティグループ」→「セキュリティグループの作成」をクリック。

・セキュリティグループ名:launch-wizard-4
・VPC:my-vpc-01
・タイプ:MYSQL/Aurora
・ソース:EC2のセキュリティグループを指定(launch-wizard-3)

image.png
アクセスを許可するソースはWebサーバのIPでもセキュリティグループ指定でもどちらでもOKです。今後の拡張性を考えるとセキュリティグループの方が望ましいかもしれません。

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

DBのサブネットグループを作成します。RDSは冗長化を考慮した設計とするのでマルチAZ環境を組むためにサブネットグループ(複数のサブネットのチーミング作業)が必要となります。(第一回で作成したRDS用のサブネットを選択してグループを作成します。)

「RDS」→「サブネットグループ」をクリック

・名前:aws-db-subnet-group
・VPC:my-vpc-01
・アベイラビリティゾーン:ap-northeast-1a, ap-northeas-1c を選択
・サブネット:10.0.20.0/24, 10.0.21.0/24
image.png

サブネットグループが作成されるのでこの中にRDSインスタンスを構築していきます。
image.png

3.パラメータグループの作成

DBの初期パラメータを作成します。このパラメータグループで対象のRDMS製品を指定したり、その製品固有のパラメータ値(いわゆるDBのブロックサイズやバッファープールサイズなど)を設定してきます。設定したパラメータは後で作成するRDSのインスタンスにアタッチして使うことになります。

「RDS」→「パラメータグループ」をクリック

・グループ名:AWS-MYSQL-PARAMG
・Engine Type:Aurora MySQL
・パラメータグループファミリー:aurora-mysql8.0
・タイプ:DB Parameter Group
image.png


具体的なMySQLでのパラメータ値をセットしていきます。(今回は規定値のまま)
※タイプ適用:Static(再起動後反映)、Dynamic(即時反映)です。
image.png

4.オプショングループの作成

製品ごとに用意されている追加のプラグインなどの機能を使うかを選択します。

「RDS」→「オプショングループ」をクリック
・名前:AWS-MYSQL-OPTG
・エンジン:mysql
・メージャーバージョン:8.0
image.png

ここまでで下準備は完了です。

5.RDSインスタンスの作成

ここでRDSのインスタンスを作成して、前章までで作成したDBサブネットグループやパラメータグループ、オプショングループなどをアタッチしてあげます。(少々長いよ。)

「RDS」→「データベースの作成」クリック

・MySQLを選択
image.png


・エンジンバージョン:MySQL 8.0.34
・テンプレート:開発/テスト(本番を選ぶと高くなるの)
・可用性と耐久性:マルチAZ DBインスタンス

image.png


・DBインスタンス識別子:AWS-MYSQL-DB (MySQLのインスタンス名です、クライアントからの接続識別子)
・マスターユーザー:admin
・認証管理:セルフマネージド(自身でパスワード管理する場合選択)
・マスターパスワード:個別に設定
image.png


インスタンスクラスとストレージはお金がかからない最小構成を選択します。(スクショの通り)

image.png


・コンピューティングリソース:EC2コンピューティングリソースに接続しない
・VPC:my-vpc-01(RDSがぶら下がるVPCを選択)
・DBサブネットグループ:aws-db-subnet-group(先ほど作成したサブネットグループ)
・パブリックアクセス:なし
image.png

・セキュリティグループ:launch-wizard-4 (前章で作成したセキュリティグループ)
・アベイラビリティゾーン:ap-northeast-1a(RDSの動作するAZを選択)
・認証機関:デフォルトを選択
image.png

・最初のデータベース名:MYSQLDB
・DBパラメータグループ;前章で作成したパラメータグループを指定
・オプショングループ:前章で作成したオプショングループを指定
・バックアップ:自動バックアップ有効・保持期間7日(セキュリティ要件に応じて柔軟に決める)

image.png

最終的な月次の予定コストが表示されるので問題なければ「データベースの作成」クリック
image.png


DBが作成できました!
image.png

6.RDSへの接続確認

ここでEC2からRDSへの接続確認を実施します。MySQLのクライアントからRDSの接続情報を入力してDBに接続が可能か確認します。

EC2(第2回で作成済)にログインして、リポジトリにMySQLを追加してMySQLのクライアントをインストールします。以下コマンドのみ記載。

$sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
$sudo dnf -y install mysql-community-client


インストールが完了したら作成したRDSのエンドポイントに対してMYSQLのユーザー(admin)で接続します。

$mysql -h aws-mysql-db.ctg84chzcg8w.ap-northeast-1.rds.amazonaws.com -u admin -p

接続できました!
image.png

以上でRDSの作成は完了です。
次回は最終回でPHPプログラムからの接続を確認するよ!

0
0
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
0