*

手軽にインフラ環境構築の自動化を実現する(したい) 其ノ弐 CloudFormationでAurora環境を構築してみる。

      2015/11/25

前回(手軽にインフラ環境構築の自動化を実現する(したい) 其ノ壱)の続きです。

 

■目次
前提 CloudFormationとは(前回の記事)
CloudFormationの使い方 「テンプレートJSON」について(前回の記事)
CloudFormationの使い方 CloudFormationの操作方法(前回の記事)
・CloudFormationでAurora構成を東京リージョンに自動環境構築する(今回の記事)
・CloudFormationでCodeDeploy設定を東京リージョンに自動環境構築する(※次回予定)

 

■CloudFormationでAurora構成を東京リージョンに自動環境構築する
と言う事で、早速Auroraのシステム構成をJSONにして構築作業をCloudFormationにお願いしてみます。

因みにAuroraとは
「Amazon RDS」の機能の一つで、最近(2015年10月頃だったかな?)やっと東京リージョンで使えるようになったサービスです。
特徴として
・MySQLと互換性がある
・MySQLに比べて4倍パフォーマンスが良い
事だそうです。
「クラスタ」と言う箱を用意して、そこにRDSのインスタンスを関連付けして行き
RDSの使用者は「クラスタ」を一つのRDSと見なして接続・実行が行えます。
「クラスタ」は内部で自動的に紐付けられたRDSインスタンスに負荷分散や、Read・Writeレプリケーションを構成してくれるようです。

つまり、「スゴク便利で速いMySQL RDS」って事じゃねっ!(安直)

Amazonの説明はコレ

Auroraを構成するCloudFormationのテンプレートJSONはこんな感じになりました。

長え!!
・・・と、思ってもそっとその感想は心に閉まって下さい。

書いてる事を順番に説明します。

今回はParametersに色々増えてますw
先ず「VpcId」と言うパラメータ

Auroraを展開するVPCを指定出来る用にしてみました。
VPCのIDは
スクリーンショット 2015-11-12 1.21.07
vpc-xxxxxxx
こんな感じの文字列です。

次の「SubnetA」と「SubnetC」は

VPCで利用しているサブネットを指定出来るようにしてあります。
AuroraはマルチAZ構成が必須?なのか実は良く分かって無いのですが(おい!)
マルチAZ構成にしたいので、サンプル通りに素直にAZ構成になるように
AゾーンのサブネットとCゾーンのサブネットのIDを指定出来るようにしました。
コレでVPCから今回のAuroraに接続出来るようになります。

続いて「RDSInstanceClass」パラメータについて

Auroraはインスタンスのサイズにどうも制限があるそうです。
で、ココに列挙しているモノはAuroraに利用できるインスタンスのサイズの一覧にしてあります。
デフォルトはその中でも一番小さな「db.r3.large」としました。

次はDBの設定です。
「RDSInstanceDBName」「RDSInstanceMasterUsername」「RDSInstancePassword」

割りとピンとくるパラメータだと思います。
DB名とユーザー、パスワードの設定ですね。

パラメータはこんな感じです。

で、次はAuroraの「Resources」について。

「AWS::RDS::DBSubnetGroup」を作成します。
Auroraは先程もちょっと説明したマルチAZで利用出来る状態にしたいので
パラメータで入力したサブネットA、CをRDSのサブネットグループに紐付けするために「AWS::RDS::DBSubnetGroup」を作成しています。

続いて「AWS::EC2::SecurityGroup」

指定したVPCからの接続を許可するセキュリティグループを作成します。

どんどん行きます。「AWS::RDS::DBClusterParameterGroup」

やっとAuroraっぽい設定出てきた!
Auroraは「クラスタ」と言う箱がRDSの振る舞いをすると言う性質があるようで
DB設定はこの「AWS::RDS::DBClusterParameterGroup」に対して行うようです。
今回はRDSの文字コードをUTF8にしたいので、この設定を追加しています。

続いてついに「AWS::RDS::DBCluster」

今回の肝はココです。
まるでRDSインスタンスそのものを作っているんじゃないかと見えるこの感じ!

しかし、実際に作ろうとしているのは「クラスタ」です。
「Auroraの箱」をココでは定義しています。
ゾーンの指定も、DB名もユーザー名もサブネットもセキュリティグループも全てこの「クラスタ」に紐付けます。

そして「RDSDBInstanceA」「RDSDBInstanceB」をこの「クラスタ」に紐付ける事でAuroraは完成します。

「AvailabilityZone」パラメータや「DBSubnetGroupName」は、Auroraの場合はどうも必須じゃ無いっぽい(おいっ!!)んですが
指定する事で明示的にどちらのRDSインスタンスをクラスタ上のAゾーン、Cゾーンに割り振るかを決められる模様。
後は当然、「Engine」パラメータは「aurora」とします!

コレでテンプレートの準備が整いました。
実際にCloudFormationしてみましょう。

→ CloudFormationの操作方法はコチラ

・・・さて、実行した結果がコチラです。(3分クッキング)
https://ap-northeast-1.console.aws.amazon.com/rds/home?region=ap-northeast-1へ移動

スクリーンショット 2015-11-12 2.36.36

2台のRDSインスタンスが増えてます。
そして、詳細を見ると「クラスタ」が存在する事が分かります。
さらにクラスタ内に、今回立ち上げたRDSインスタンスがそれぞれ「Read」「Write」など自動的に構成されているのが分かると思います

この「Aurora」を利用する側は、「クラスタ」のエンドポイントを利用してMySQLの用に繋ぐだけで
MySQLと同じように利用出来ます。
僕は今のところMySQLと全く同じようにALTERしたり、CREATE INDEXしたりGRANTしたりできています。

そして、クラスタ内で自動で「ReadはコッチのRDS」「WriteはコッチのRDS」「レプリカと同期〜」とかしてくれているようです。(おいおいっ!!!)
レプリカの設定とかした覚え無いのにスゴイな〜 と、ただただ関心。

うーん、マーベラス。

日本での情報が少ないので、僕も試してみた結果でしか語れていない部分が多々ありましたがご容赦下さい。m(__)m
是非是非、ご参考下さい。
勿論間違いの指摘歓迎致します!

さて、次回は「CodeDeploy」もCloudFormationしてみます。

目次に戻る

Author Profile

saimushiTwitter:@saimushi
「UNICORN-Project」と言うPHPフレームワーク(RubyのUnicronとは無関係)のMain Autherをやってます。
社内でも幾つかの案件で、採用して頂いています。
iOS(Objective-c)、PHPを得意とし、他にもcocos2d-x(C++)が出来たり、AWSをゴニョゴニョしたりと、割りと幅広く業務させて頂いています。

UNICORN-Projectはコミッターを絶賛募集中です!
是非触って見て、感想だけでも下さい。
http://unicorn-project.github.io
  • このエントリーをはてなブックマークに追加


  関連記事

amazon_icon
【速報】PHP7をAmazon Linuxに早速入れてみて、5.6とのベンチマークを取ってみた。

PHP7が11年ぶりに正式リリースされたそうなので、早速試してみたです速報。 試 …

AWS_CloudFormation-200x200
手軽にインフラ環境構築の自動化を実現する(したい) 其ノ壱 CloudFormationの使い方をマスターする

DQには実はインフラ専任のエンジニアは居ません。 案件担当のエンジニアがインフラ …

amazon_icon
DNSサーバ移行 – Roadworker

DNSサーバを移行する必要があり、手動で作成されたZoneファイルを見ながら愕然 …

1
Storyboardを使ってContainerView+PageViewのサンプルを作ってみた

概要 横スクロールするメニュー+メニューに連動してメインビューが切り替わる、 S …

amazon_icon
AWS re:Inventをまとめておいた

先日行われた AWS re:Invent の内容をカンタンにまとめてみました。 …

akerun
勤怠管理システムにAkerunを組み込んでみた

どうも、デジタルクエストのヒヨコエンジニアのyokoです。 以前、Google …

スクリーンショット 2016-06-14 17.01.23
SPAJAM2016 東京D予選に出てみた話 – 決戦編 –

前回の続き SPAJAM2016 東京D予選に行ってきました -決戦編-。 SP …

amazon_icon
手軽にインフラ環境構築の自動化を実現する(したい) 其ノ参 CloudFormationでCodeDeploy設定を自動構築してみる。

前々回(手軽にインフラ環境構築の自動化を実現する(したい) 其ノ壱)の続きです。 …

girl-1076998_1920
結局わたしでしょ?♡

Hi!ミシェルさんです 😀   サービスの企画とかUXについての意見て …

DigitalQuest
オフィス移転のご報告

本日5/23より、株式会社デジタルクエストは新オフィスにて営業を開始しております …