RDSとEC2を使ってみた
概要
AWSをつかって簡単にデータベースが構築できるサービス、RDSを利用してみたのでそのメモを書いておきます。
EC2とは
Amazonの提供するIaaSのサービス。計算リソースとコストに応じて利用するインスタンスのタイプを選ぶことができます。たくさんあるインスタンスタイプのうち、今回はt2.mediumを利用しました。t2インスタンスはCPUのリソースを使わない時にはトークンが貯まり、CPU boundな処理(ビルドなど)を行う際には実CPUのリソースをフルに活用出来るという仕様のようです。(インスタンスタイプを参照)
RDSとは
Amazonの提供するRDBMSをEC2のインスタンス上にセットアップして提供してくれるサービス。利用可能なRDBMSとしてはMySQLやPostgreSQLといったオープンソースのものから、OracleやSQL Serverといったライセンスが必要なものまであり、高価なライセンスをはじめに払うほかにライセンスが従量課金の金額に含まれる形態のものもあるため、簡単に試せそう。スナップショットやインスタンスタイプの変更も可能で、Multi-AZ構成にすることでデータセンター単位での障害にも対応できるようです。
しかし、RDSのインスタンスタイプの変更はフェイルオーバー時間がある程度かかるという記事もあるので、注意が必要かもしれません。
今回はPostgreSQLをt2.microインスタンスで利用してみました。ストレージは5GB。
RDSのアプリケーションからの見え方
これが個人的にはじめよくわからなかった部分です。
RDSのセットアップでは、Database名とユーザー名を入力し、インスタンス等を選択してlaunchするというごく普通の手順を踏みます。その際、DNSが設定されて外部からアクセスできるようになり、今後はそのドメインを利用してアクセスすることができるようになります。
RDSのセットアップ方法
VPC Security Groupの作成
- EC2のコンソールを開き、左のメニューからSecurity Groupsを開き、Create Security Groupをクリック。
- ポップアップが出るので、Security group name、Descriptionを記述して、sshができるようにRuleを図のように追加します。
- Createを押すと、コンソールに次のように出てきます。
EC2インスタンス(RDSにアクセスするノード)のセットアップ
- Instancesを開き、Launch Instanceをクリックします。
- OSがインストール済みのイメージからCloneします。今回はUbuntu Server 14.04を選びました。
- いろいろあるInstance Typeから、適当なものを選びます。ここではt2.microを選びました。
- 最後に確認が出るので、Edit Security Groupを選択し、先ほど作ったものを選択。
- Launchをクリックして、EC2のインスタンスを起動します。
- EC2のコンソールから、Private IPsのIPをコピーし、Security Groupsを開きます。
- 作成したGroupを選択し、InboundをEditし、Custom TCP Ruleからポート5432、SourceをCustom IPでコピーしたIPを入力(172.32.0.0/32というマスクのついた形式)
RDSのセットアップ
- RDSのコンソールを開き、Launch DB Instanceをクリック。
- DBのエンジンを選択。ここではPostgreSQLを選択しました。
- Multi-AZにするかどうかを選択できますが、今回は必要がない(上に無料なので)Single-AZにしました。
- インスタンスの設定を行います。ここで設定したMaster Userはデータベースにアクセスするためのユーザーになります。
- ネットワークやデータベースの設定を行います。VPC Security Zoneは、EC2のコンソールのほうから設定したものを選択することになります。
- さいごにLaunch DB InstanceでRDSのインスタンスを立ち上げることができます。
- コンソールに戻ると、次のような画面になります。このインスタンス一覧のすぐ下にある、Endpointがそのノードにアクセスするためのドメインになります。
RDSの利用
EC2のインスタンスにSSHで入ってからの操作をメモします。といってもこれだけ。 ちなみに、ubuntu serverの場合はデフォルトのユーザはubuntuなので注意。(普段Amazon Linuxをつかっていると、ついec2-userで入ろうとして死ぬ。)
$ sudo aptitude install postgresql-9.3 $ psql -U masteruser -h ${Endpointに書いてあったドメイン} testdb
雑感
DBサーバをlaunchするのは非常に簡単にできて驚きました。ただ、同一セキュリティグループ内でもInboundのルールが適用される点などはいまいちまだ理解できていないので、AWSの仕組みについてはもうすこし勉強する必要がありそうです。
この記事はクラウド基盤構築の課題として提出しました。
ちなみに、課題は以下のようなものです。
クラウド基盤構築コース、もしくは、これまでITシステムに関わった経験の中で、自身で調べた(Linux、仮想化、クラウドなどに関連する)技術要素について、その技術解説をBlog等にまとめてください。 その際、以下の内容を含めるようにしてください。 ・ その技術が必要な場面 ・ その技術の利用手順 ・ その技術の背景にある仕組みの解説 体裁や言葉遣いなどはあまり気にせずに、「その技術を知らない人が読んだ時に、技術の必要性、使い方、仕組みを理解して納得できるかどうか」という点を重視して作成してください。
中井さんの授業はとてもおもしろかったので、またlinux関係のイベントとかいったらお世話になりたいと思います!
(48-146421)