Amazon EC2 インスタンスと RDS インスタンスをつくって連携する手順
はじめに
Amazon EC2 インスタンスと RDS インスタンスをつくって連携する手順のメモです。
このエントリのゴール
Amazon EC2 でアプリインスタンス、Amazon RDS で DBインスタンスをそれぞれつくり、お互いに連携することです。staging と production それぞれの設定を記載しています。
前提
- Amazon EC2 のアカウントを持っている
- プロジェクト名は myproject とします。適宜おきかえてください
1. Amazon RDS で DBインスタンスをつくる
AWS Management Console を開き、RDS を選択します。
1.1. パラメータグループ・セキュリティグループをつくる(2014 年 7 月 16 日 更新)
まずはパラメータグループをつくります。Navigation > DB Parameter Groups > Create を選択し以下のとおり入力します。
- DB Parameter Group Family: mysql5.5
- DB Parameter Group Name: myproject
- DB Parameter Group Description: 任意
つくったパラメータグループを選択し、以下のパラメタを設定します(Viewingフォームでインクリメンタル検索してくれるので便利です)。
スロークエリに関する設定(参考)。
- slow_query_log: 1(0 or 1。1 を指定するとスロークエリがテーブルに吐かれます。use mysq; select * from slow_log limit 5; 等で中身を見られます)
- long_query_time: 0.5 くらい
文字コードの設定。
- character_set_client: utf8
- character_set_database: utf8
- character_set_server: utf8
Amazon EC2 のセキュリティグループを作成します。
- Name: myproject
- Description: 任意
次に RDS のセキュリティグループをつくります。Navigation > DB Security Groups > Create を選択し以下のとおり入力します。
- Name: myproject
- Description: 任意
つくった EC2 のセキュリティグループを選択し、以下のカラムを追加します。
1.2. DBインスタンスをつくる
パラメータグループ・セキュリティグループをもとに DBインスタンスをつくります。Navigation > DB Instances > Launch DB Instance を選択してください。
「ENGINE SELECTION」で MySQL を選択してください。
「DB INSTANCE DETAILS」で以下の項目を入力して continueボタンを押してください。
- License Model: General Public License
- DB Engine Version: MySQL 5.5.27 (default) # 適宜 ex. default にして最新にしておく
- DB Instance Class: 任意 # ex. staging: db.t1.micro, production: db.t1.small
- Multi-AZ Development ※A: No # ex. staging は No、production は Yes
- Auto Minor Version Upgrade ※B: No
- Allocated Storage: 10 # ex. staging は10、production は 100
- Use Provisioning IOPS: チェックなし
- DB Instance Identifier: myproject-[staging|production]
- Master Username: XXXX # ex. root
- Master Password: XXXX # 任意
以下、補足。
- ※A
- Multi-AZ にするとマスターが落ちた時にスレーブをマスターへ自動で昇格してくれる
- また、スレーブの数を自動で増やしてくれる
- ※B
- MySQL のマイナーバージョンがあがったら自動でアップグレードするかどうか
- Yes にするとアップグレードのたびにサービスが数分程度止まることがあるので No にした
- ただ、マイナーバージョンを 10 ほどアップデートしていないと、強制的に maintenance window のタイミングでアップデートされるようだ
「ADDITIONAL CONFIGURATION」で以下の項目を入力して continueボタンを押してください。
- Database Name: myproject_[staging|production]
- Database Port: 3306
- Availability Zone: 任意
- Multi-AZ Development を Yes にすると選択できないようだ
- 後ほどつくるアプリインスタンスの Availability Zone と同じにすると通信が高速になる
- Parameter Group: <つくったパラメータグループ>
- DB Security Group: <つくったセキュリティグループ>
「MANAGEMENT OPTIONS」で以下の項目を入力して continueボタンを押してください。環境別に記載します。
- staging
- Enabled Automatic Backups: No
- Mainteinance Window: No Preference
- production
- Enabled Automatic Backups: Yes
- Backup Retention Period: 1 days
- Backup Window: No Preference
- Mainteinance Window: No Preference
確認画面で確認し、OKならば launchボタンを押します。DBインスタンスの Status が available になれば完了です。10分くらいかかったのでゆっくり待ちましょう。
2. Amazon EC2 でアプリインスタンスをつくる
AWS Management Console の EC2 を選択します。画面右上の region から適宜選択します。
メニュー INSTANCES > Instances を選択します。
Launch Instanceボタンを押して classic wizard を選択し continueボタンを押します。
CHOOSE AN AMI で Amazon Linux AMI 2012.09.1 64bit を選択します。
INSTANCE DETAILS で以下のとおりに入力して continueボタンを押します。
- Number of Instances: 1
- Instance Type: 任意 # ex. staging: m1.small(ephemeral disk を使いたい。t1.micro は使えない), production: c1.medium(コストパフォーマンスがいい)
- Launch Instances > Launch info > Availability Zone:
続いて Advanced Instance Options が表示されるが特に何もせず continueボタンを押します。
さらに Storage Device Configuration でも何もせず continueボタンを押します。
タグも追加せず continueボタンを押します。
CREATE KEY PAIR で以下の項目を入力して createボタンを押します。
- product name: ex. myproject_production # 鍵の名前になる
- group name: サービス名
- description: 任意
Choose one or more of your existing Security Groups で、以下を Add Rule します。
- New Rule: HTTP で Source はそのまま
- New Rule: SSH で Source はそのまま
確認画面で確認して Launch ボタンを押します。こちらのインスタンスも作成まで時間がかかるのでしばらく待ちます。つくり終わったら SSH接続できることを確認します。
$ ssh -i <つくった pem> ec2-user@<アプリインスタンスの Public DNS>
また、SSH接続している状態で DB接続もできることを確認します。
$ mysql -u<ユーザ名> -h<DBインスタンスの Public DNS> -p
念のためセキュリティグループの外、たとえばローカルからつながらないことも確認しておきましょう。
Parameter Group の更新
Multi-AZ が有効になっている前提とする。
Parameter Group を更新したい場合は、値を更新して Save したのち、Instance Action > Modify を選択。Apply Immediately にチェックをつけて Continue。しばらくすると AWS Console のイベントログに "Updated parameter slow_query_log to 1 with apply method immediate" といったような表示がされる。
最後に
これで完成です! あとは Nginx を入れるなど好きなようにカスタマイズしましょう。