(DB・サーバー構築編)世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで

  • 221
    いいね
  • 4
    コメント
この記事は最終更新日から1年以上が経過しています。

世界一丁寧なAWS解説シリーズ 項目表

No. タイトル
1 下準備編
2 〜〜DB・サーバー構築編(今ここ)〜〜
3 デプロイ編①
4 デプロイ編②
5 Capistrano編

さぁ、3部作第2章の今回は、
アプリケーションをあげる核となる、サーバー、DBを作成していきます。
(下準備編をお読みでない方はこちらよりご確認ください)
(※前章の内容は既にご確認頂いている前提で話を進めさせて頂きます。ご了承ください。)
まずはDBからいってみましょう!

7.RDSインスタンスの作成

rds.png

RDSとは、Relational Database Serviceの略であり、簡単に言ってしまえばDBのことです。
AWSでDBを利用したい場合、

・EC2インスタンス(後述するサーバーのこと)にDBのシステムそのものをインストールする
・RDSを利用する

この2種類の方法があります。

本シリーズでは前者の方法を取っている為この第7項の作業は不要なものとなりますが、参考までにインスタンスの作成方法や諸項目の意味合い等を掲載させていただきました。

ですので、「余計な知識は入れたくない!」という方は、こちらを飛ばして頂いて第8項に進んで頂いて問題ございません。

ということで、RDSの作成方法を見ていきましょう。
まずは、Top画面→RDS→インスタンス→DBインスタンスの起動を選択します。

db_instance.png

インスタンスとは何ぞや!?
という声が聞こえてきそうですが、これは単純に
「DB製造マシーンから、自分用のDB(=インスタンス)をひとつ作成する」
といったイメージで大丈夫だと思います。
AWSではよくインスタンスという言葉が登場するので、今の内にアレルギーを無くしておいてください。

選択すると、「本番用のDBかどうか」が問われます。

db_instance_2.png

もちろん本番用なので選択肢は「はい」なのですが、
なにやらまた色々と難しい言葉が書かれていますね...

このインスタンスの作成中はデフォルト値として マルチ AZ 配置 と プロビジョンド IOPS ストレージ を使用します

「...は?」
と言いたい気持ちをぐっとこらえて! 下の説明を読んでください。

まず、マルチAZ配置とは、マルチアベイラビリティゾーンを配置する、つまり、
「DBを配置するデータセンターを、2箇所以上にします。」といった意味合いです。
前出の為詳しい解説は省略しますが、このように2箇所にDBを配置することで、データのバックアップやどちらかがダウンした際のアプリケーションの動作継続など、色々良いことがあったのですね。

次に、プロビジョンド IOPS ストレージ なのですが、このIOPSとは、Input Outout Per Seconds の略で、1秒間にどれだけデータの出し入れが出来るの? という処理能力を示しています。
そしてこのプロビジョンドIOPSを指定した場合、最大で4000IOPS(1秒で4000回データの出し入れが可能)まで処理能力を指定出来るのだとか。

つまり、本番環境を指定した場合この2つがデフォルトで指定される...
ということは、
どうやら上記は「「はい」を選ぶとこの機能とこの機能が追加されるよ」という説明をしていたようですね。 

ひとまず選択は完了です。次のステップへと移りましょう。

次はDBのスペック選択です。
ここは単純に使用したいスペックを選んでいく箇所なので、ご自身の使用したい容量に合わせて選択してください。

db_instance4.png

下記、筆者の設定です。

・DBエンジン:Mysql(選択済)
・ライセンスモデル:General Public License
・DBインスタンスのクラス:t2 micro
・マルチAZ配置:いいえ
・ストレージタイプ:汎用(SSD)
・DBインスタンスの識別子:mumu-mysql
・マスターユーザーの名前:(DBにアクセスするユーザー名)
・パスワード:任意

・DBインスタンスのクラス:t2 micro
・マルチAZ配置:いいえ
ここら辺を変更すると無料枠での使用が出来なくなるので注意してください。

画面左、画像の箇所より今現在の設定が無料枠の対象内かどうかを判別出来ます。

db_instance3.png

こちらが設定できれば、最後にセキュリティ面の設定を行います。

security.png

色々と設定項目が出てきますが、聞きなれない単語が多いだけで、決して難しい話ではありません。
下記、筆者の設定となります。

ネットワーク&セキュリティ

・VPC:MuMu用のVPC
・サブネットグループ:DB用に作成したサブネットグループ
・パブリックアクセス可能:いいえ(DBなので、一般ユーザーからはアクセス出来ないようにする)
・アベイラビリティゾーン:指定なし
・セキュリティグループ:MuMu-DB(DB用に設定したセキュリティグループ)

データベースの名前

・データベースの名前:空白
・データベースのポート:3306
・DBパラメーターグループ:default:mysql5.6
・オプショングループ:default:mysql5.6
・タグをスナップショットにコピー:チェック無し

バックアップ

・バックアップの保存期間: 1日
・バックアップウィンドウ(バックアップを実行する時間):指定なし

モニタリング

・拡張モニタリングを有効にする(DB監視・分析レポートの、拡張版を利用するかどうか): いいえ

メンテナンス

・マイナーバージョンの自動アップグレード: はい
・メンテナンスウィンドウ(メンテナンス発生時に、それを実行する時間を指定): 指定なし

また、下記単語集となります。

・DBパラメーターグループ: DBに関する設定をまとめたルールブックのようなもの。何も作成していない限りdefaultのみ選択可能
・オプショングループ: こちらもDBのオプションに関するルールブック。defaultを選択
・タグをスナップショットにコピー: DBに紐付けられたタグに関して、DBのバックアップ実行時に一緒に保存するかどうかを選択

単語の意味さえ理解出来れば、なんら難しいことは無いと思います。
上記の説明を参考にしながら、自分用に設定してみてください。

以上でRDSに関する設定は完了です。
「DBインスタンスの作成」を選択し、無事インスタンスが作成されれば、次のステップに進んでください。

8.EC2インスタンスの作成

ec2.png

さぁ、いよいよサーバー本体を作っていきますよ!EC2によるインスタンス生成です。
EC2とは、Elastic Compute Cloudの略で、クラウド上に存在する仮想のサーバーのことです。
「ん? サーバーってそもそも何よ?」
という方の為に噛み砕いて説明すると...
サーバーとは、パソコンのことだと思って頂いて問題ございません。

そのパソコンの中に、EXCELや音楽管理ソフトを入れるように、Webサイトを表示させるソフトを入れたり、メールの送受信を行うソフトを入れることで、パソコンが入れたソフトの役割を果たします。
(Webサイト表示用のソフトを入れたものはWebサーバーと呼ばれ、メール送受信ソフトを入れたものはメールサーバーと呼ばれます。)

つまり、「EC2インスタンスを作成する」とは「クラウド上に自分のパソコンを作成する」と同意義だと思って下さい。

では、あなただけのオリジナルPC、EC2を、Amazonの中に作っていきましょう!

Top→EC2→インスタンス→インスタンスの起動 を選択します。
ec2_1.png

すると、AMIを選択する画面へと移行します。
ami.png

AMIとは、Amazon Machine Imageの略で、今作成しようとしているパソコン(EC2)のタイプを選択するものです。

「仕事でよく使用する機能にフォーカスをあてたパソコン」
「音楽処理に適したパソコン」
といった具合に、一口にパソコンと言っても、それぞれタイプがあるかと思います。

AMIはまさにそのタイプに該当するもので、
OSや起動の許可等の情報、様々な情報がパッケージ化されて提供されています。

今回は、無料枠の範囲内で、一番上のAmazon Linuxを利用していきましょう。

お次はEC2インスタンスのタイプ選択です。
パソコンのスペックを決めるように、メモリやCPUなどを決めていきます。

instance_type.png

そして注目してください!
「無料枠」の文字に。
はい。迷わずこれを選択して次に進みます。
(※無料枠は、AWSに登録して1年未満のユーザーにのみ与えられる特権です。
ですので、表示されない方も多数いらっしゃることをご了承ください。)

次はEC2インスタンスの詳細設定です。
まずは筆者の設定を下記に記載致します。

・インスタンス数:1(作成するインスタンスの数を選択)
・スポットインスタンスのリクエスト:チェックなし(後述)
・ネットワーク:MuMu用VPC
・サブネット:MuMu、Public用サブネット
・自動割り当てパブリックIP:有効化
・IAMロール:なし(後述)
・シャットダウン動作(EC2をシャットダウンした際に、削除するのか、それとも停止させるだけなのかを選択):停止
・削除保護の有効化(インスタンスの削除を禁止するかどうか):チェック
・モニタリング:チェックなし
・テナンシー(ハードウェアを占有するか、それとも他の利用者と共有するかを選択):共有

また、下記単語集です。

・スポットインスタンス :同じ地域の使用されていないインスタンスを、入札制で使用出来る仕組み。費用削減が期待できる。
・IAMロール : IAMというユーザーの種類別にリソースの使用権限を割り振ったもの。誰がこのインスタンスにアクセス出来て、誰が出来ないかなどを設定できる。
・モニタリング :CloudWatchというインスタンス監視サービスを利用するかどうかを選択。利用すると追加料金が発生する。

ここも単語の問題ですね。
上記説明を参考にしながら設定してみてください。

また、その下に続くネットワークインターフェイスは、
「ネットワークの利用に関する約束事をまとめたもの」といった意味合いです。
よくプロトコルと対比されるのですが、
・プロトコル: 通信に関する約束事をまとめたもの
・ネットワークインターフェイス: ネットワークの利用に関する約束事をまとめたもの

ですので、混乱しないようにしましょう。
何も設定しないとデフォルトの設定が適応されるので、今回はこのままでOKです。

お次はルートボリュームに関する設定です。
ルートボリュームとは、ストレージシステム(EC2)の管理に役立つ特別なディレクトリと構成ファイルが格納されている場所で、Windwowで言う所の「Cドライブ」に該当します。

今回は

・ボリュームタイプ:汎用(SSD)
・サイズ:8GB

でいきましょう。
それ以外は元々設定されているままで大丈夫です。

次のページでは、作成しているEC2インスタンスにタグを設定出来ます。
instance_tag.png

ここはインスタンスを認識しやすくする為の設定なので何でも良いのですが、
参考までに筆者は、

・Neme: MuMu-instance

とタグ付けを行いました。

最後はセキュリティグリープの設定です。

こちらは前半で作成したセキュリティグループを適応させる為、

・既存のセキュリティーグループを選択する
↓
・前章で作成したセキュリティグループを適応

この流れで紐付けを行っていきます。

instance_sg.png

その後、内容を確認し、作成を選択してください。

以上でEC2インスタンスの作成は完了です。
ですが、もう一つだけしなければいけないことがあります。

9. Elastic IPの作成、紐付け。

インターネットに接続を行う場合、どのサーバーも例外なくグローバルIPというものを持たなければなりません。(これにより、どのサーバーからの通信かなどを特定しています。」)

そして先ほど作成したEC2インスタンスにも作成時にパブリックIPが自動で割り振られるのですが、なんと、サーバーを再起動させるたびにこのパブリックIPが変わってしまうという欠点を持っています。

IPが変わってしまうということは...
設定ファイル等を、その都度書き換えなければなりません。

これはあまりにも面倒ですよね。

そこで登場するのがElastic IP
これは、先に固定のIPアドレスを他に使用されないように押さえてしまい、それをパブリックIPとしてEC2インスタンスに紐付けることで、インスタンスの起動、停止に関わらず常に同じIPで通信をしよう。というものです。

実際に取得→紐付けまでの流れを見ていきます。

elastic_ip.png

まずは画像の手順で、Elastic IPを一つ取得するところまで行った後、
取得したElastic IPを選択→アクション→アドレスの関連づけを選択し、

elastic_ip_ec2.png

上記の画像のように、EC2との紐付けを行ってください。

問題なく処理が完了すれば、EC2インスタンスのパブリックIPが今取得したElastic IPになっているかと思います。

そしてこれにて、(DBと)サーバーが完成し、全ての準備が整ったこととなります!
お疲れ様でした!
いやー長かった。

そして次節からは、今まで作成したものを紐付けて、
実際にアプリをアップロードするデプロイ編をお届けします。

ここまで読み進めて頂いた方!
ぜひ最後まで読んで頂いて、アプリのアップロードを完了させてくださいね。

それではまた次章でお会いしましょう!

次章: デプロイ編①