LoginSignup
140
130

More than 5 years have passed since last update.

見ながらやろう! AWSを始めよう -RDS編-

Last updated at Posted at 2018-02-28

第一回目: -事前準備編-
第二回目: -VPC構築編-

追記

第二回目のVPCの環境と名称が違っておりました。
3. EC2インスタンスの作成
で使うサブネット名は
test-public-subnet-a
となっております。

後日改定投稿いたします。
@mitch0807 さん、ご指摘いただきありがとうございました。


はじめに...

VPCを構築したら、[EC2]の接続先の[RDS]を構築して見ましょう。
前回作成したサブネット、セキュリティグループに適用していきます。
ぽちぽち進めていけばあっという間に終わってしまいますので、DBのメンテナンス用EC2構築までやって見ましょう。

EC2メインの回は別途行います。


やること

  1. RDSの設計
  2. セキュリティグループの作成、設定
  3. EC2インスタンスの作成
  4. Elastic IPの関連付け、EC2インスタンスにSSH接続
  5. EC2インスタンスからRDSへ接続

Screen Shot 2018-02-24 at 19.03.47.png

まずは[RDS]を設計しましょう。今回は[MySQL]を使います。
次にEC2を設置するセキュリティグループの接続設定を行います。
最後にEC2インスタンスを立ち上げ、[SSH]通信でデータベースに接続できることを確認します。

1. RDSの設計

今回のタイトルにもなっている[RDS]です。[Relational Database Service]と言います。
webサービスを作るにあたって、
サービスをローカルで作成するとき同じパソコンの中にDBをインストールするように、
「EC2を建てればその中にDBをインストールしてそこで運用する」こともできます。

では、RDSのメリットとは何か?

  • EC2から切り離されているので、耐障害性、冗長性、セキュリティが良い
  • AWSがサポートしてくれるので、クラウド内でリレーショナルデータベース(RDB)を簡単に設定、運用、およびスケールできる
  • バックアップやバージョンアップを自動化できる

などが挙げられると思います。
デメリットといえば、お金がかかることでしょうかね?

「自分でDB管理は全部できるし、管理する方が目的!」
ぐらいでないのであればRDSを使う一択でいいでしょう。

VPC:
https://aws.amazon.com/jp/rds/

ドキュメント:
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/Welcome.html


では始めていきましょう。
まずはサブネットグループの作成です。

AWS マネジメントコンソール.png

画面左上の[サービス]から[Reltional Database Service]をクリックします。

RDS · AWS Console100.png

まずは前回作成したDBサブネットをサブネットグループとしてまとめます。

RDS · AWS Console4.png

サブネットグループについての基本情報を記述します。

RDS · AWS Console5.png

DBサブネットが表示されているので、確認できたら[作成]を押しましょう。
このときwebapp用などのDBサブネット以外のサブネットが入っていたら外しておきましょう。

RDS · AWS Console6.png

画面が戻ってきて、作成したサブネットグループのステータスが[完了]になっていたら成功です。

RDS · AWS Console.png

DBインスタンスを作成していきます。サイドバー[インスタンス]から、[DBインスタンスの起動]を選択します。

RDS · AWS Console1.png

画面下部に[RDS無料利用枠の対象オプションのみを有効化]という項目をチェックし、[MySQL]を選択したら次に進みます。

1.png

詳細設定では、インスタンスのバージョンやクラスを選択できます。RDSの無料利用枠は[20GB]なので、注意しましょう。

RDS · AWS Console2.png

画面下部では、dbインスタンスに一意の命名をしたり、ユーザーやパスワードを設定します。
これは後ほどEC2からアクセスするときにも使いますので、しっかり考えて作りましょう。

Tips:
[DBインスタンス識別子]は_(アンダースコア)が使えず、また[マスターユーザー]は-(ハイフン)が使えません。注意しましょう。

RDS · AWS Console7.png

VPC、サブネットグループ共に作成したものを選びます。
パブリックアクセシビリティはそのままで、アベイラビリティゾーンは好みや値段で選んでください。
VPCセキュリティグループは[既存のVPCセキュリティグループの選択]にします。
そのままでは[default]が残っているので、削除してDBのセキュリティグループのみを選んでください。

RDS · AWS Console8.png

データベースに名前を決めて、ポートの解放を設定します。
MySQLのポートである[3306]が自動で入力されているので特にいじらなくて大丈夫です。

RDS · AWS Console9.png

吐き出すログの種類を選択します。
とりあえず全部チェックしておくで最初はいいと思います。
以上を入力したら画面下部から[インスタンスの作成]を押してください。

RDS · AWS Console10.png

これでインスタンスの部分に作成中と表示されましたね。完了するまでに5分ほどかかるので、先に進みましょう。

2. セキュリティグループの作成、設定

VPCからこの後作成する[DBメンテナンス用EC2]を配置するセキュリティグループを作成します。

セキュリティグループ   VPC Management Console.png

ここは前回と手順は同じですね。[サービス]からサイドバー[セキュリティグループ]を選択し、[セキュリティグループの作成]をクリックします。

セキュリティグループ   VPC Management Console (1).png

はい、これでメンテナンス用のセキュリティグループの作成が完了しました。
このままMySQLのポート[3306]を通過できるように設定してしまいましょう。

セキュリティグループ   VPC Management Console.png

DBセキュリティグループに、作成したセキュリティグループからのアクセスを許可します。
DBセキュリティグループの[インバウンドのルール]から[編集]をクリックします。

セキュリティグループ   VPC Management Console1.png

この作業は「[DBセキュリティグループ]に、ソースセキュリティグループとしての[メンテナンス用のセキュリティグループ]から"3306/tcp"に対する通信を許可するルール」を設定します

字面だけではわかりにくいが、通信の穴を開けているだけです。

3. EC2インスタンスの作成

では、ここからメンテナンス用EC2の立ち上げを行います。

EC2 Management Console.png

画面左上[サービス]から[EC2]を選択します。
サイドバー[インスタンス]から[インスタンス作成]を実行します。

EC2 Management Console1.png

クイックスタートの中にある[Amazon Linux 2]を選択します。
ここには[Red Hat]や[Windows]も含めて多くのマシンイメージ(AMI)が揃っています。
自身の使いたい環境に合わせて構成してください。

EC2 Management Console2.png

次にインスタンスタイプの選択です。DBのメンテナンスに大掛かりなものは必要ないので、そのまま無料枠の[t2.micro]を使いましょう。

aws-black-belt-online-seminar-2018-reinvent-recap-compute-container-and-network-15-1024.jpg

ちなみにインスタンスの種類についてはAWSが詳しく解説してくださっている資料があります。[コンピューティング最適化]だったり[メモリの最適化]、[FPGA]などと[HPC]の分野が好きな方はここだけでニヤニヤできますね。
私は大好きです。

一般的なWebappなどの配置に使う程度でしたら現行世代の[m3~m5]のあたりを使えば十分でしょう。
他は[機械学習]や[ビックデータ]などの分野で扱うことがあるでしょうね。

EC2 Management Console3.png

次にインスタンス数を決めて、ネットワークとサブネットを前回作成したものを指定します。
この辺りの詳しい内容はEC2がメインの回で説明します。

EC2 Management Console4.png

特に変更する箇所はありません。
無料利用枠は[30GB]までなので、数字を大きくしすぎると無料利用枠を超えてしまいますので注意してください。

EC2 Management Console5.png

タグを設定して次に進みます。

EC2 Management Console.png

セキュリティグループを設定します。
既存のセキュリティグループから、今回はメンテナンス用のEC2ですので[db-maintain-sg]を選択します。

EC2 Management Console1.png

まだセキュリティグループに穴を開けていないので「このままではアクセスできませんよ」と警告してもらえます。この後セキュリティグループをいじるので、このまま進みましょう。

EC2 Management Console7.png

設定の確認が終わると、最後に[キーペア]の作成画面になります。
キーペアとは、サーバーのパソコンにアクセスして中身をいじる[SSH]通信で必要になるものです。
名前をつけてダウンロードしましょう。

EC2 Management Console8.png

インスタンスの画面に戻り、表示に[running]があれば無事インスタンス作成完了です。

セキュリティグループ   VPC Management Console10.png

先ほどのDBセキュリティグループと同じように、メンテナンス用のセキュリティグループに今度は"22/tcp"の穴を開けましょう。今度は自分で確認するために外部に解放する必要があるので、ソースは[0.0.0.0/0]という誰でも使える設定にしておきます。

4. EC2インスタンスにSSH接続

まずは先ほど作ったEC2インスタンスに[Elastic IP]を関連付けます。
[Elastic IP]については別途解説しますのでここでは割愛させていただきます。

EC2 Management Console.png

まずはサイドバー[Elastic IP]から[新しいアドレスの割り当て]を実施します。

EC2 Management Console (1).png

[割り当て]を押すだけで簡単に割り当てられてしまいます。

EC2 Management Console (2).png

次は画面上部から[アドレスの関連付け]をクリックします。

EC2 Management Console (3).png

インスタンスの項目をクリックすると、選択肢に先ほど建てたEC2インスタンスが出てきますので、選択して[関連付け]をクリックすれば完了です。

EC2 Management Console (4).png

インスタンスの項目を選択し、画面下部の[Elastic IP]に割り振られた数字が記載されていれば大丈夫です。


今度は自分のパソコン上での操作になります。今回は初期設定の保存先である[Download]上でそのままSSH接続を行います。

Screen Shot 2018-02-24 at 18.54.58.png

ターミナル上から自身の[Downloadフォルダ]に移動します。

EC2 Management Console.png

次にEC2インスタンスから[接続]をクリックすることで、EC2インスタンスへアクセスするためのコードが出てきますので、これを上から順番にコピー&ペーストしてください。

Screen Shot 2018-02-24 at 19.23.35.png

[ssh -i ~]の入力がされると(yes/no)の選択肢が出てきますので、[yes]と入力してください。

Screen Shot 2018-02-24 at 19.25.00.png

アスキーアートで[EC2]と表示され、無事作成したEC2インスタンスにSSh接続できました。

5. EC2インスタンスからRDSへ接続

まずは接続先のRDSがわからないと困ります。なので接続先を確認しましょう。

RDS · AWS Console (1).png

画面左上[サービス]から[Relational Database Service]を選択。
サイドバー[インスタンス]から作成したインスタンスをクリックします。
画面を下がっていくと中段ほどに[接続]という項目があります。

ここにある[エンドポイント]というのが接続先のことなので、控えておきましょう。


次はコンソール上でサーバーに必要な内容をインストールしていきます。

[ec2-user@ip-10-0-0-72 ~]$ sudo yum -y update
[ec2-user@ip-10-0-0-72 ~]$ sudo yum -y install mysql

これでシステムのアップデートと[MySQL]をインストールしました。このままRDSに接続してみましょう。

[ec2-user@ip-10-0-0-72 ~]$ mysql test_db -h <エンドポイント> -P 3306 -u test_user -p
Enter password: -> DB設定に使ったパスワードを記述

-h -> エンドポイント
-u -> ユーザー名
-p -> パスワードを要求する

Screen Shot 2018-02-28 at 20.26.34.png

はい、ということで先ほど作った[RDS]の[MySQL]にアクセスできましたね!
これでmysqlのコマンドをぽちぽちして楽しめます。

RDS · AWS Console.png

RDSのインスタンス画面を確認すれば、しっかり接続数が1になっていますね。

最後に...

ということで今回はRDS編でした。RDSとの接続方法が分かればEC2でDB環境が必要なときに簡単に接続できますね。EC2の中にDBを配置するのも良いですが、せっかく集めたデータが消し飛んじゃうのは嫌ですしね。

今回は触れませんでしたがRDSの設定の項目にバックアップの時間指定や、アップデートの管理、スナップショットの作成など、まだまだ奥深く面白い項目もあるので、今後触れていきたいと思います。

さて、もう2週間しないで[JAWS DAYS 2018]が開催ですね。今からワクワクしています!
皆さんも楽しいAWSライフをお過ごしください!

140
130
3

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
140
130