AWS Ruby on Rails プログラミング

RailsをEC2にデプロイする方法 その3

RailsをEC2にデプロイする方法の解説の続きです。
前回は下の記事でEC2インスタンスの設定まで行いました。

RailsをEC2にデプロイする方法 その2

RailsをEC2をデプロイする方法の解説の続きです。 前回は下の記事でVPCやルートテーブルの設定まで行いました。 今回はrailsアプリをデプロイするEC2を構築する手順について解説します。 全体 ...

続きを見る

今回はDBを運用するサービスであるRDSを設定する手順について解説します。

全体の手順

  1. セキュリティグループ作成
  2. サブネットグループ作成
  3. パラメータグループ作成
  4. RDSインスタンス作成

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

RDSを使うにはいくつか準備をする必要があります。
まずDB用のセキュリティグループを設定します。

セキュリティグループはEC2インスタンスの設定の際にも行いました。
セキュリティグループはアクセスを許可する設定で、
アクセスが来たらそのアクセスが許可しているものならアクセスを許可し、
それ以外は拒否することができるファイアウォールの役割を持ちます。

今回はEC2インスタンスに設定したwebサーバからのアクセスだけが来る様にします。

設定方法は以下の通りです。

  1. EC2を検索
  2. EC2のダッシュボードもしくは左メニューからセキュリティグループをクリック
  3. セキュリティグループ作成
  4. 以下の様に設定
    ・名前:test-db
    ・説明:test-db
    ・VPC:作成してあるVPC(test-vpc-01)
  5. [インバウンドルール]の項目で[ルールを追加]をクリックして以下の様に設定
    ・タイプ:MYSQL/Aurora
    ・プロトコル:TCP
    ・ポート範囲:3306
    ・ソース:カスタム、test-web (セキュリティグループ)

なお、インバウンドルールで個別のIPアドレスを指定することもできますが、
webサーバが複数台あると個別に設定しなければならないので手間がかかります。
セキュリティグループもここで指定することができ、
セキュリティグループ内のEC2インスタンスをまとめて設定することができます。
これでセキュリティグループ内のEC2インスタンス(webサーバ)から接続できるようになります。

サブネットグループ作成

続いてサブネットグループを作成します。
RDSインスタンスを配置するサブネットを複数作成し、
それをグループにまとめて使うわけです。

どうして複数使うかというと、
RDSインスタンスはMulti-AZという機能がありこれを利用するのに使うからです。
Multi-AZとはDBをレプリケーション、つまりDBのコピーを作って、
バックアップを取る様にできる機能になります。
異なるアベイラビリティーゾーンに配置してあるサブネットを作り、
それらをMulti-AZの対象とすることで使うことができる様になります。

ただし、Multi-AZを使用すると単純にRDSインスタンスを倍使うのと一緒のことになり、
料金も多く発生してしまいます。

今回は無料枠なので、Multi-AZを使いませんが、
設定方法だけを解説しているため、ここは飛ばしていただいても結構です。

サブネットグループの設定方法は以下の通りです。

  1. RDSを検索
  2. ダッシュボードもしくは左メニューからサブネットグループをクリック
  3. サブネットグループ作成
  4. 以下の様に設定
    ・名前:test-subnet-group
    ・説明:test-subnet-group
    ・VPC:作成済VPC(test-vpc-01)
    ・アベイラビリティーゾーン:ap-northeast-1a、ap-northeast-1c (作成したサブネットが所属するところ)
    ・サブネット:上のアベイラビリティーに所属するprivateサブネット (IPアドレスでいうと、10.0.20.0/24, 10.0.21.0/24)
    ※privateサブネットを2つ(10.0.20.0/24と10.0.21.0/24)は事前に作成しておいて下さい。

これでサブネットグループが作成できました。

パラメータグループ作成

続いてパラメータグループを作成します。

パラメターグループとはRDSインスタンスに作るDBのメタデータを設定になります。
通常、MySQLの場合my.cnfファイルに設定内容を記述していくのですが、
RDSの場合AWSコンソールのパラメータグループで設定を変更します。

MySQLの設定をパラメータグループで複数作っておけば、
コンソール上で簡単に切り替えることができるというメリットがあります。

パラメータグループの設定方法は以下の通りです。

  1. RDSを検索
  2. ダッシュボードもしくは左メニューからパラメータグループをクリック
  3. パラメータグループの作成
  4. 以下の様に設定
    ・パラメータグループファミリー:mysql8.0
    ・グループ名:test-mysql80
    ・説明:test-mysql80
  5. 作成パラメータグループ作成

パラメータグループを編集したい場合は、
編集したいパラメータグループを選択して [アクション] > [編集]で変更することができます。

オプショングループ設定

RDSの準備の最後として、
オプショングループ作成を作成します。
オプショングループはDBの追加機能(プラグイン)やセキュリティ強化の設定をするグループなっています。

※こちらは私自身ちゃんと使ったことがないので、
用途が分かり次第記事を投稿して行こうと思います。

オプショングループの設定方法は以下の通りです。

  1. RDSを検索
  2. ダッシュボードもしくは左メニューからオプショングループをクリック
  3. 以下の様に設定
    ・名前:test-mysql80
    ・説明:test-mysql80
    ・エンジン:mysql
    ・メジャーエンジン:8.0
  4. 作成

これでRDSインスタンス作成に必要な設定が全て終わりました。
次はRDSインスタンスの設定を行います。

RDSインスタンス作成

RDSインスタンス作成を行います。
すでに作成したEC2インスタンスは仮想サーバを作成してくれるサービスでしたが、
RDSインスタンスはDBサーバを構築するするサービスとなっています。

RDSインスタンスを作成する手順は以下の通りです。

  1. RDSを検索する
  2. ダッシュボードもしくは左メニューからデータベースをクリック
  3. データベースの作成
  4. 以下のように設定
    [エンジンのオプション]
    ・データベース作成方法:標準作成
    ・エンジンのタイプ:MySQL
    ・バージョン:8.0.23[テンプレート]
    ・テンプレート:開発/テスト[設定]
    ・マスターユーザ名:root
    ・マスターパスワード:password[DBインスタンスサイズ]
    ・DBインスタンスクラス:バースト可能クラス
    ・DBインスタンスタイプ:db.t2.micro (以前の世代のクラスを含める)
    ※db.t2.microが無料枠です。[ストレージ]
    ・ストレージタイプ:汎用(SSD)
    ・ストレージ割当:20GiB
    ・ストレージの自動スケーリング:チェックなし[可用性と耐久性]
    ・マルチAZ配置:スタンバイインスタンスを作成しないでください
    ・Virtual Private Cloud (VPC):test-vpc-01
    ・サブネットグループ:test-subnet-group
    ・パブリックアクセス可能:なし
    ・VPCセキュリティグループ:既存のVPC
    ・既存の VPC セキュリティグループ:test-db
    ・アベイラビリティーゾーン:ap-northeast-1a
    ・データベースポート:3306

    [データベース認証]
    ・データベース認証オプション:パスワード認証

    [追加設定]
    ・最初のデータベース名:空白
    ・DB パラメータグループ:test-mysql80
    ・オプショングループ:test-mysql80
    ・自動バックアップの有効化:チェックなし
    ・拡張モニタリングの有効化:チェックなし
    ・ログのエクスポート:チェックなし
    ・マイナーバージョン自動アップグレードの有効化:チェックあり
    ・メンテナンスウィンドウ:選択ウィンドウ
    ・開始日:日曜日 開始時間:20:00UTC 期間:0.5時間
    ・削除保護の有効化:チェックなし

  5. データベースの作成

これでRDSインスタンスを作成することができました。
正しくRDSインスタンスが作成できたか接続して確認します。

接続する前にRDSインスタンスの「エンドポイント」を調べます。

  1. ダッシュボードから作成したRDSインスタンスのDB識別子をクリック
  2. RDSインスタンスの詳細画面上の[接続とセキュリティ]に記載してある[エンドポイント]をメモする
 command
// EC2インスタンスに接続します
ssh -i [pemファイルパス] ec2-user@[publicIPアドレス]
 
// webサーバ(EC2インスタンス)にmysqlをインストール
sudo yum install -y mysql
 
// DBに接続(先程メモしたエンドポイントを-hのあとに入力)
mysql -h [エンドポイント] -u root -p
 
// パスワード入力が求められるので、RDSインスタンス作成の際に設定したパスワードを入力してEnter
Enter password: password
 
// 下のような画面が表示されたら接続成功
Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 3971

Server version: 8.0.23 Source distribution

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

 

これでRDSインスタンスを作成して、DBを構築することができました。

 

続きはその4に続きます。

 

前回の記事

RailsをEC2にデプロイする方法 その2

RailsをEC2をデプロイする方法の解説の続きです。 前回は下の記事でVPCやルートテーブルの設定まで行いました。 今回はrailsアプリをデプロイするEC2を構築する手順について解説します。 全体 ...

続きを見る

-AWS, Ruby on Rails, プログラミング

© 2021 TatsuoBlog Powered by AFFINGER5