Amazon RDS を使ってDrupal を動かそう!!

AWSのMySQLベースのリレーショナル・データベースを使ってDrupalをインストールしてみました。

AWS RDSのサービス申込をしてから、Javaベースのコマンドを用意します。こちらからダウンロードできます。これを端末にインストールします。インストールはここにある通りやれば簡単に動作させることができます。このコマンドはEC2のコマンドツール同様にEC2のインスタンスマシンにインストールする必要はありません。手元のWinやMacOSでもまったく構いません。コマンド・ツールのインストールと設定についてはここに詳しいので、ここではデータベースの作成方法とアクセスするまでについてメモしておきます。

データベースインスタンスの作成

次にDB専用のインスタンスを立ち上げるのですが、このコマンドが

#rds-create-db-instance tosharecomudb --allocated-storage 20 --db-instance-class db.m1.small --engine MySQL5.1 --master-username tosharecomu --master-user-password tosharecomu --db-name tosharecomu001 --headers

これで簡単に、20GBのtosharecomudbという名前のMySQL5.1ベースのデータベース・インスタンスがスモール(Small DB Instance: 1.7 GB memory, 1 ECU (1 virtual core with 1 ECU), 64-bit platform)をベースに作られます。さらに、データベースにアクセスするためのユーザとパスワード'tosharecomu'とデータベース'tosharecomu001'が作られます。

作成に成功すると次のような応答があります。

DBINSTANCE  DBInstanceId   Class        Engine    Storage  Master Username  Status    Backup Retention  PendingCredentials
DBINSTANCE  tosharecomudb  db.m1.small  mysql5.1  20       tosharecomu      creating  1                 ****              
      SECGROUP  Name     Status
      SECGROUP  default  active
      PARAMGRP  Group Name        Apply Status
      PARAMGRP  default.mysql5.1  in-sync

まだ、作成中(creating)のステータスなのでどこにアクセスしたら良いかわかりません。しばらくして、

#rds-describe-db-instances --headers

を実行して状態を確認します。

DBINSTANCE  DBInstanceId   Created                   Class        Engine    Storage  Master Username  Status     Endpoint Address                                        Port  AZ          Backup Retention
DBINSTANCE  tosharecomudb  2010-02-15T06:44:20.788Z  db.m1.small  mysql5.1  20       tosharecomu      available  tosharecomudb.cdsfas9rufpivtr.us-east-1.rds.amazonaws.com  3306  us-east-1b  1               
      SECGROUP  Name     Status
      SECGROUP  default  active
      PARAMGRP  Group Name        Apply Status
      PARAMGRP  default.mysql5.1  in-sync

ここに利用状態が可能(available)に変わっています。これでデータベースにアクセス出来る状態になります。これでひとまず準備完了です。接続セキュリティを以下の方法で設定します。

rds-authorize-db-security-group-ingress default --cidr-ip 0.0.0.0/0 --headers

これで全てのIPアドレスからアクセスできるようになります。本番で使うのであれば、CIDRの部分をサーバのIPアドレスに変えて下さい。このコマンドも即時適用ができないので、暫く待ちます。※確認する方法は、rds-describe-db-security-groups default --headers を使います。

ここまで来たらあとは、通常のMySQLと同じ方法で接続してユーザ追加、テーブル作成が可能です。

mysql -h tosharecomudb.cdsfas9rufpivtr.us-east-1.rds.amazonaws.com -u tosharecomu -p

実際にDrupalに使ってみた

今回はレイテンシの少ないWest(カリフォルニア)に立ち上げたEC2のインスタンスから接続してみましたが、スモールサイズのDBではやはり少し重く感じます。memcacheの利用で閲覧速度には多少改善できますが、実用に耐えるレベルでは無いようです。mysqlコマンドレベルではそれ程速度の違いは感じられないのですが、実際にDrupalと連動させてみると使えるレベルにはならないようです。あと、現在、EC2のインスタンスと違いEast/Westの選択ができないので恐らくEastしか使えないのかと思います。

まだ1GB以上使っているような大規模なDrupal運用は当分なさそうなので、コンテンツ配信に利用できそうなS3の方をもう少し研究いこうかと思います。

2010-02-16追記:先にDBを作って、RDSと同じゾーン(二回とも東)にEC2インスタンスを作って接続したら、ちゃんと内部接続になってレイテンシーの問題が解決されました。

ソーシャル・リンク

コメント

新しいコメントの投稿

このフィールドの内容は非公開にされ、公表されることはありません。

書式オプションに関するより詳しい情報...

CAPTCHA
このフォームは投稿者が人間であるかどうか確認し、自動的なスパム投稿を妨げるために実施しています。
Image CAPTCHA
Enter the characters shown in the image.

 

Drupal Association Organisation Member

お奨めサイトフィード

Drupal ブログ

Walnutsスタッフブログ

コンテンツ配信

ウィジェット