2014年1月22日水曜日

AWSのPostgreSQL(RDS)を使えるようになるまでの手順



ついにAmazon RDS for PostgreSQLがサポートされました。
今日は各項目をしっかり説明しつつ、実際に使いはじめるまでをまとめてみます。



1 RDSの説明

AWSのアカウントの作成はこちら

またAWS自体初めての方もいると思いますので参考になる情報は次のとおりです。

■ドットインストール
Amazon Web Services入門

■AWSのまとめ記事
2014年からはじめるAWSリンク集←オススメ!

AWSクラウドデザインパターン

■参考図書




■Amazon RDS for PostgreSQLの説明
Amazon RDS と PostgreSQL の概要(PDF)

RDS for PostgreSQLの中を覗いてみた

■PostgreSQLが初めてのかたはこちら
これからPostgreSQLを始める人のための自習用オンライン無料コンテンツ

セミナー資料 - SRA OSS, Inc. 日本支社

ドットインストールは特に分かりやすいのでオススメです。
2014年からはじめるAWSリンク集は非常に丁寧にまとまってますのでこちらもオススメです。
Amazon RDS と PostgreSQL の概要(PDF)にはRDSの詳細の設定項目の説明があります。
詳しく知りたい方はこちらを確認ください。

ということでAWSの知識は上記のリンク先で補充していただき、本題のRDSの作り方です。



2 RDSの作成

アカウントを作成したらログインしてマネジメントコンソールにアクセスします。
作成方法は前述のAmazon RDS と PostgreSQL の概要(PDF)にも書いてあります。
今回は新規アカウント作成した際に付いてくる1年間の無料枠に収まるように設定してみます。

無料枠の説明(公式ドキュメント)

マネジメントコンソールはこちら


まずはEC2のメニュー画面に移動します。



ここでドットインストールにもありますがRDS用のセキュリティグループを作ります。
セキュリティグループはファイアーウォールに用にアクセスするルールを指定できます。
デフォルトでは全て無効になっていますので任意のポートを開けます。


さらにポートを指定します。
※PostgreSQLのデフォルトのポートは5432です
例ではSource(接続元)は全て許可(0.0.0.0/0)になっています。
実際の環境はアプリケーションや開発環境に応じて適切に設定してください。
※このままだと接続先のアカウントとパスワードを知ってる人は誰でもアクセス出来ます



これでセキュリティグループにルールが追加されました。
問題なければ登録します。


これでRDSの下準備は終わりです。
いよいよRDSを作成しましょう。


RDSの画面に移動します。




Launch a DB Instanceを選択して新規作成します。



データベースはPostgreSQLを選択します。


Multi-AZとProvisioned IOPS を利用の有無を選択
Multi-AZの説明については

Amazon公式ドキュメント

または

Amazon RDS と PostgreSQL の概要(PDF)

の14ページに書いてあります。
ここでの選択は次の画面でのデフォルト表示を指定するだけです。


インスタンスの詳細設定です。

License Model:
DBのラインセンスです。
postgresql-licenseしか選べません。
ですがpostgresql-licenseはBSDライセンスベースです。
AWSの場合は特に気にする必要ありません。
詳細は原文をご確認ください。

The PostgreSQL Licence(英語)

DB Engine Version:
DBエンジンのバージョンです。
PostgreSQLのバージョンは現在は9.3.1と9.3.2が選べます。
環境に合わせてお使いください。
例では新しい9.3.2を選択しています。

DB Instance Class:
作成するRDSインスタンスのスペックを選択します。
構成については

Amazon RDS と PostgreSQL の概要(PDF)

の18ページに書いてあります。
価格表についてはAmazonの公式ドキュメントを参考にしてください。

Multi-AZ Deployment:
冗長化構成を取るMulti-AZを有効にするかどうかを指定します。
有効にすると自動でフェイルオーバーしてくれます。
概要はこちらのブログがわかりやすいです。


本手順では、無料枠で収めるためにNo(無効)としています。

Auto Minor Version Upgrade:
DBのマイナーバージョンアップの自動適用の有無です。
マイナーバージョンアップなのでセキュリティやバグフィックスが大半です。
基本的に上げましょう。
ですが停止を伴うためMulti-AZを利用していない場合はServiceが停止します。
今回はテストなのでYes(自動適用)にしています。
Multi-AZは利用していないのでこの構成のままだとServiceが停止する可能性があります。
詳しい注意点については下記のブログがわかりやすです。

【AWS】お知らせ:2013年11月のRDS自動マイナーバージョンアップグレードに際して注意することをまとめました

Allocated Storage:
DBインスタンスに割当てるディスク容量を記入します。
例では最小の5ギガを指定しました。

Use Provisioned IOPS:
IOPSの値を指定できます。
IOPSは一秒間のinputとoutputの回数です。
デフォルトは1000までです。
指定すると指定の値までスケールアウトします。
例では無料枠で収まるようにOFF(無効)としています。

DB Instance Identifier:
AWS上でのDBインスタンスです。
お好きにどうぞ。

Master Username:
DBにアクセスする際のユーザー名です。
こちらも任意で付けてください。
下記のMaster Usernameはhoge-userとなっていますが登録に-使えませんでした
実際の登録はhoge_userとしています。

Master Password:
DBにアクセスする際のパスワードをです。
こちらも任意ですが8文字以上とする必要があります。


次は詳細画面2です。

Database Name:
DB名です。
任意で付けてください。
またここでも-は使えません

Database Port:
アクセスするポート番号です。
ポートは事前に作ったセキュリティグループと合わせてください。
例ではPostgreSQLのデフォルトの5432を指定しています。

Choose a VPC:
RDSインスタンスをどのVPC内に作成するかを指定します。

DB Subnet Group:
どのDB Subnet Groupに作成するかを指定します。
VPC内に1つしかない場合は自動的に指定された状態となります。

これらはAWS上でのセキュリティにかかる部分です。
詳細は公式ドキュメントを参照ください。

Publicly Accessible:
有効にするとDBにVPCの外から直接アクセス出来るようになります。
Noの場合は同VPC上のECなどからアクセス出来ます。
仮にNoの状態で外からアクセスするには同VPC上に踏み台を用意する必要があります。

Availability Zone:
どのAvailability Zoneに作成するかを指定します。
Multi-AZのAZはAvailability Zoneのことです。
指定しなかった場合、任意のZoneに作成されます。
リージョンとアベイラビリティーゾーンの説明の公式ドキュメントはこちらです。
例では特に指定していません。

Option Group:
DBの設定オプションを選べます。
自分で作成していない場合はデフォルトが作成されます。
カスタムしたい場合はRDSの設定画面でOption Groupを作成してください。
OracleやMySQLの時に利用できす。
つまりPostgreSQLは現在(平成26年1月22日)ではOption Groupの設定がありません。
したがってデフォルトのOption Groupを使って問題ありません。

Parameter Group:
DBのチューニング時に設定するパラメータのことです。
こちらも自分で作成していない場合はデフォルトが作成されます。
事前に定義しておいたParameter Groupを指定することで、初期設定を変更できます。
PostgreSQLのパラメータはpostgres.confで設定するような
  • autovacuum
  • checkpoint_timeout
などが設定できます。
チューニングが必要な際はご検討ください。
デフォルト値については前述のとおり、Nagayasuさんが

RDS for PostgreSQLの中を覗いてみた

で調査されてGithubに記載されてます。

postgresql.conf @ RDS for PostgreSQL

ただし、調査日が2013年11月16日なので最新情報が知りたい方は

SELECT name,setting,unit FROM pg_settings;

をSQLで実行して確認してみてください。
今回はデフォルトのままとしています。

VPC Security Group(s):
最初に下準備として作成したセキュリティグループです。
アクセスするポートは5432を指定したので例では作成したPostgreSQLを指定します。



次はバックアップとメンテナンスの設定です。

Enabled Automatic Backups:
自動バックアップの設定でYesで有効です。
有効にすると

1 日 1 回の RDS インスタンスのスナップショット + その日の差分情報

がバックアップされます。
ただし差分は5分置きなのです。
なのでリストアの最新の復元期間は最大で現時刻の5分前です。

Backup Retention Period:
バックアップの保持期間です。

Backup Window:
スナップショットのバックアップを取得するタイミングを指定します。
No Preferenceとすると任意のタイミングで取得されます。
ただし取得時には数分無応答となる可能性があります。
停止時間を把握するため実運用ではアクセスの時間帯に指定しましょう。
Multi-AZを有効にしている場合はこの問題は発生しません。
(スレーブ側からバックアップを取得するため)

Maintenance Window:
AWSの運営がRDSへのメンテナンスする時間を指定できます。
こちらもNo Preferenceとすると任意のタイミングでメンテナンスを実行されます。
パッチを当てる場合など、再起動を伴う可能性があります。
停止時間はメンテナンス内容によって様々です。
ただしこちらもMulti-AZを有効にしている場合はスレーブと切り替えながら行ってくれます。
(ダウンタイムは少なくなるがマスターの切り替えの時間の停止時間は発生する)

これらの詳細は

Amazon RDS と PostgreSQL の概要(PDF)

の20ページから書いてあります。


確認画面です。
問題なければLaunch DB Instance !!


完了すると


と表示されます。
これでRDSの作成は完了です。
Closeをbuttonを押してもそのままウインドウを閉じても問題ありません。
それでは実際に接続してみましょう。
※ただしRDSのInstanceは作成してから起動するまでに時間がかかります。



3 RDSへの接続

やっと待ちにまった接続です。
ネットで検索するとみなさんCUIからpsqlを叩いています。
実際にはGUIで使いたいですよね?
今回の接続方法はGUIツールとしてpgAdmin Ⅲ(以下 pgadmin3)を使います。

■pgadmin3

Windows版

MacOS版

今回は現時点(平成26年1月22日現在)の最新版の1.18.1を使います。

まずはインストール。
インストールについてはバージョンが違いますがこちらがわかりやすくまとめてあります。

※Windows版です
PostgreSQL 9.2にクライアントから接続する pgAdminのインストール設定

基本的にはインストール‐ウィザードにしたがって進んでください。
インストール終わったらまずはAWSのマネジメントコンソールでRDSの管理画面にアクセスします。
そしてInstanceのメニューを開き、接続先を確認します。
※IPアドレスは変わる可能性があるのでエンドポイント名で接続します



接続先を確認したらpgadmin3を起動させます。
接続先の新規追加を行います。
※補足ですが1.18からSSLトンネルできるようになってます


pgadmin3は設定時に一旦接続確認を行います。
設定で弾かれる場合はRDSの設定やセキュリティグループを確認してみてください。
無事接続先が増えた場合は接続できています。


無事な中身が見えました。
これでRDSの簡単な管理はpgadmin3上で出来るようになりました。
またpgadmin3はPostgreSQL専用ツールなだけあって他にも色んな機能があります。
PostgreSQLの高機能な部分を余すこと無くサポートしていますので是非お試しください。
時間がある時に調べてみると便利な発見があると思いますよ。

公式ドキュメント(英語)

GUIでデータベースを簡単にいじれるpgAdminとっても便利ですね

WindowsでPostgreSQLを使ってみよう


それではRDS for PostgreSQLライフをお楽しみにください!!