こんにちは、ロジカル・アーツの井川です。
第三回記事です。ちょうど折り返しですね。今回はRDSインスタンス(MySQL)を作成をして、EC2インスタンスを経由して接続してみたいと思います。各回のおおまかな流れは以下の通りでした。
- 第1回:VPC、サブネットの作成
- 第2回:EC2インスタンス(Amazon Linux)の作成、接続
- 第3回(今回):RDSインスタンス(MySQL)の作成、接続
- 第4回:ELBの作成とLAMP環境の構築
- 第5回:RDSのMulti-AZ配置
- 補足記事:AWS用語集
今回の作業を終えると、次のような構成が完成します。
不要に見えるサブネットたちがありますが、RDSインスタンスを作成するときに必要になります。 なお、前回までの記事を前提に進めていくので、あらかじめご承知おきください。
RDSとは
RDS(Relational Database Service)とは、その名の通りAmazonが提供するリレーショナルデータベースサービスのことです。現在は次の六種類のデータベースエンジンが利用可能です。今回はMySQLを使用します。
準備(サブネットの追加)
RDSインスタンス作成時に、DB(データベース)サブネットグループを作成する必要がありますが、このとき異なるアベイラビリティゾーンにあるサブネットを指定しなければなりません。そういうわけで、RDSインスタンスを作成する前に、サブネットを作成することから始めます。
1. 既存サブネットのリネーム
その前に、作成したサブネットがどのアベイラビリティゾーンで作られたかを分かり易くするため、名前を付け直しましょう。
VPC管理ページに移動します。左側の「サブネット」を選択し、「sample-public」と名前を付けたサブネットを選択します。それから、「タグの追加/編集」をクリックします。
値を「sample-public-1a」に変更し、「保存」をクリックします。
同様にして、「sample-private」サブネットを「sample-private-1a」にリネームします。
2. サブネットの作成
それではサブネットを作成していきます。作り方は以前とほぼ同じです。今回もパブリックサブネットとプライベートサブネットを一つずつ作ります。
左側の「サブネット」を選択し、「サブネットの作成」をクリックします。
次のように設定してサブネットを作成します。アベイラビリティゾーンは以前と異なる 「ap-northeast-1c」を選ぶことに注意してください。
名前 | VPC | アベイラビリティゾーン | IPv4 CIDR ブロック |
---|---|---|---|
sample-public-1c | 「sample」と名前を付けたもの | ap-northeast-1c | 10.0.3.0/24 |
sample-private-1c | 「sample」と名前を付けたもの | ap-northeast-1c | 10.0.4.0/24 |
サブネットを作成したら、「sample-public-1c」をパブリックサブネットにします。初回記事にあるように、ルートテーブルを次のように編集すれば完了です。
左側の「ルートテーブル」を選択し、「sample-public」と名前を付けたルートテーブルを選択します。それから「サブネットの関連付けの編集」をクリックします。
先程作成した「sample-public-1c」サブネットを関連付けて「保存」をクリックします。
これで準備が終わりました!
RDSインスタンスの作成
RDSインスタンスを作成していきますが、ここでも先に設定しておくことがあります。
DB用セキュリティグループの作成
まずはDB用のセキュリティグループを作成します。
EC2管理ページに移動します。左側の「セキュリティグループ」を選択し、「セキュリティグループの作成」ボタンを押下します。
「セキュリティグループ名」に「rds-sg」、「説明」に「Security group for RDS」と入力します。「VPC」はいつものように「sample」と名前の付けたものを選択します。 「ルールの追加」をクリックし、「タイプ」は「MySQL/Aurora」を選択します。「ソース」はEC2に割り当てたセキュリティグループ(ec2-sg)を選択します(ec2-sgと入力すると、該当するセキュリティグループが現れると思います)。最後に「作成」をクリックします。こうすることで、作成したRDSインスタンスには前回作成したEC2インスタンス(正確に言えばec2-sgという名前のセキュリティグループが割り当てられているインスタンス)を経由したアクセスしか許可しません。
これで、DB用のセキュリティグループの作成が終わりました。
DBサブネットグループの作成
次にDBサブネットグループを作成していきます。
マネジメントコンソール画面から「RDS」と検索し、表示された「RDS」をクリックしてRDS管理ページに移動します。
左側の「サブネットグループ」を選択し、「DBサブネットグループの作成」をクリックします。
「名前」に「rds subnet sample」、「説明」に「sample」と入力し、「VPC」は例のごとく「sample」と名前の付いたものを選択します。
画面の下の方に遷移して、サブネットを追加していきます。まず「アベイラビリティゾーン」は「ap-northeast-1a」を選択し、「サブネット」は「10.0.2.0/24(プライベート)」を選択します。「サブネットを追加します」をクリックすれば、指定したサブネットが追加されます。同様にして、アベイラビリティゾーン「ap-northeast-1c」のサブネット「10.0.4.0/24」を追加します。その後、「作成」をクリックします。
RDSインスタンス(MySQL)の作成
ようやくインスタンスの作成に入ります。RDS管理ページに戻り、左側の「データベース」を選択して「データベースの作成」をクリックします。
今回は「標準作成」を選択し、エンジンのタイプは「MySQL」を選択します。
テンプレートは「無料利用枠」を選択しましょう。
「DBインスタンス識別子」を「sample」とし、「マスターユーザー名」は「admin」とします。パスワードは自動生成を選択するか、自分で決めたものをマスターパスワード欄とパスワードを確認欄に入力します。
以下しばらくは特に変更せず進みます。
「VPC」は「sample」と名前を付けたものを選択し、「追加の接続設定」をクリックします。「サブネットグループ」は上で作成した「rds subnet sample」を選択します。
「VPCセキュリティグループ」は「既存の選択」を選び、上で作成した「rds-sg」を選択します。「アベイラビリティゾーン」は「ap-northeast-1a」を選択します。
あとはそのままにして、「データベースの作成」をクリックします。
しばらく待つとデータベースが作成されるので、作成されたらEC2インスタンスを経由して接続してみましょう。「ステータス」が「作成中」から「利用可能」に変われば作成されています。
作成したMySQLへの接続
まず、EC2インスタンスにSSH接続する必要があります。接続方法は前回の記事を参考にしてください。 MySQLに接続するためにはMySQLコマンドラインクライアントをインストールする必要があります。 EC2インスタンスに接続できたら、次のコマンドを実行しましょう:
sudo yum install -y mysql
インストールが完了したら、次のコマンドを実行します。このコマンドで作成したMySQLに接続できます(入力時に波括弧は必要ありません)。
mysql -u {マスターユーザー名} -p -h {RDSのエンドポイント}
マスターユーザー名は「admin」でした。RDSエンドポイントは次のようにして得られます。 まず、RDS管理ページに移動し、DB識別子(sample)をクリックします。
「接続とセキュリティ」にあるエンドポイントをすべてコピーして貼り付ければ大丈夫です。
パスワードの入力が求められるので、上で設定したマスターパスワードを入力します(パスワードは画面に表示されません)。パスワードが正しければ以下の画面になります。
これで接続ができました!
ついでにひとつコマンドを実行してみましょう:show databases;
このコマンドを実行すると、接続したMySQLサーバにあるデータベース一覧が表示されます。
RDSインスタンスの削除方法
不要なRDSインスタンスは次のように削除できます。
RDS管理ページから左側の「データベース」を選択した状態で、削除したいRDSインスタンスを選択します(下の例では「DB 識別子」が「sample」のもの)。その後、「アクション」プルダウンメニューをクリックし、「削除」をクリックします。
次の画面で、「最終スナップショットを作成しますか」のチェックをはずし、「インスタンスの削除後、~」にチェックを入れます。下の入力欄に「delete me」と入力し、「削除」をクリックすればRDSインスタンスが削除されます。
おわりに
スケーラブルな構成が、だんだんと形になってきました。ここまで読まれてきた方にとって、RDSインスタンスの作成自体はそれほど大変ではなかったと思います。相変わらず何をしているかは分かりにくいですが、、、今回と同じような構成をもうひとつ作ればスケーラブルになりそうに見えますが、実は次回が一番大変です。