Aurora ServerlessでWordPressのセットアップできた


はじめに

Aurora ServerlessをWordPressのデータベースとして使用できるかな?

結果として

EC2と同じVPC,サブネットグループに設定できれば、Aurora Serverless 問題なく使えました。

ようやくリリースされたAurora Serverless

2017年のAws re:Inventで、2018年の早いうちにリリースされると言われてたAurora Serverlessが2018年8月にリリースされました。すごく待ってました。S3 SelectがもしかしてAurora Serverlessなのかな?と思ったもののS3 SelectはどちらかといえばDynamoDB風だったので、RDBとしてはちょっと心もとない。

AWS設定

VPCとSubnetとセキュリティグループ

あらかじめ設定をしておいたほうがよいです。Aurora Serverlessのクラスタ設定ウィザード中でも登録できるのですが若干ハマりポイントがあります。

Aurora Serverless

  1. Create database

    • エンジンのオプション:Amazon Aurora
    • エディション:MySQL 5.6 との互換性
      • Aurora Serverless capacity is only available with this edition.
        Serverlessはこっちを選んでねとのことなので、MySQL5.6を選択。
  2. DB 詳細の指定 > 設定

    • Capacity type: Serverless
      • 必要なリソースの最小量を最大量を指定すると、Aurora によってデータベースの負荷に基づきキャパシティーがスケールされます。
        具体的なキャパシティー(主に使用メモリ量)を次のステップで設定します。
    • DB クラスター識別子 …… DBクラスターの名前
    • マスターユーザの名前 …… rootユーザーとするID
    • マスターパスワード, パスワードの確認 …… そのパスワード
  3. [詳細設定] の設定 > キャパシティーの設定

    • 最小 Aurora キャパシティーユニット, 最大 Aurora キャパシティーユニット
      • キャパシティーユニット:2 …… 4GBのメモリを持つDBインスタンス・コンテナ。今回はWordPressがインストールできるか?が検証目標なので最小値の2を設定しています。(キャパシティーユニットによってコネクション数などが変わってくるのかな?)
    • スケーリングの追加設定
      • 初期設定:5分(最大24時間)
  4. ネットワーク & セキュリティ

    • Virtual Private Cloud (VPC)
    • サブネットグループ
    • VPC セキュリティグループ
      • 毎度おなじみのAWS内ネットワーク設定です。自動で作ることもできるのですが、その場合、1VPCで3サブネットグループ(各AZに1つずつ)と1つのVPCセキュリティグループが生成され、VPCセキュリティグループにはMySQL/Aurora(3306)の接続元IPが、ユーザー設定してるときのIPアドレスが自動的に設定されます。
  5. Database endpointをメモする

    1. [[DB クラスター識別子]].cluster-1q2w3e4r5t6y7u8i.ap-northeast-1.rds.amazonaws.com みたいな文字列があります。後で使います。

以上でAurora Serverlessの設定が完了です。

EC2インスタンス

  1. Aurora Serverlessで設定したネットワーク & セキュリティと同じVPC,サブネットグループにインスタンスを割り当て。

  2. phpとMySQLクライアントが使えるように設定

$ sudo yum install php72 php72-mysql 
$ sudo yum install mysql
  1. Apache/nginxのhttpdをインストール
  2. WordPressをダウンロード&展開
  3. httpdでWordPressを表示できるように設定

  4. MySQLクライアントからDBクラスターに接続、そしてデータベースの作成

$ mysql -u [[マスターユーザの名前]] -p -h [[DB クラスター識別子]].cluster-1q2w3e4r5t6y7u8i.ap-northeast-1.rds.amazonaws.com 

データベースを作ります。そしてDB用ユーザーIDも。
完了。

その他

Aurora Serverlessの作成ウィザード内でVPCを作成した場合、MySQL/Aurora(3306)の接続元IPが制限された状態で登録されています。同じVPC,サブネットでもつながらないときは、セキュリティグループの該当サブネットのIP範囲がインバウンドルールに含まれていることを確認したほうが良いです。

参考

設置したWordPressの設定

  1. いつもの設定。
    • DB名 …… 作成したデータベース
    • ユーザー名 …… DB用ユーザーID
    • パスワード …… DB用ユーザーのパスワード
    • 接続先 …… [[DB クラスター識別子]].cluster-1q2w3e4r5t6y7u8i.ap-northeast-1.rds.amazonaws.com
    • 接頭語 …… wp_

完了。

WordPress設定

一般公開するなら気にしたいこと

  • できる限りWordPressからデーターベースに接続させないようにする。
    • ディスクキャッシュ系プラグインを導入 & CDNの活用
    • 検索をしないでも使いやすいメニュー構成や各種サイト内リンク

料金

ログ

  • WordPressをインストール&日本語テーマのテストデータをインポート。
  • 東京リージョンで5分間を3回、動かした感じです。
Sat Aug 11 22:32:40 GMT+900 2018    The DB cluster is paused.
Sat Aug 11 22:31:32 GMT+900 2018    The DB cluster is being paused.
Sat Aug 11 22:17:33 GMT+900 2018    The DB cluster is resumed.
Sat Aug 11 22:17:29 GMT+900 2018    DB instance restarted
Sat Aug 11 22:17:10 GMT+900 2018    The DB cluster is being resumed.
Sat Aug 11 21:41:56 GMT+900 2018    The DB cluster is paused.
Sat Aug 11 21:40:48 GMT+900 2018    The DB cluster is being paused.
Sat Aug 11 21:35:12 GMT+900 2018    DB instance restarted

3時間のスケールで表示しています。

かかったコスト

料金に反映されたので掲載。お安い。

終わりに

チューニングされた高スペックなMySQLが従量課金で使えるのはスゴイです。日次に集めたデータを週末にまとめて集計する用途には使えそう。IoTでリアルタイムでは必要のないデータとかS3を格納して、バッチ処理してデータ登録・集計、DUMPを出力して参照用DBに登録するとか面白そうです。