はじめに
10月初旬にMyCoachをリリースいたしました。
MyCoachはタスク管理アプリ(iOS、Android)とコーチ検索サイトで構成されております。
アプリの使い方につきましてはこちらの記事をご確認ください。
今回はAWSのサーバ構築(EC2)をコーチ検索サイトの本番環境構築で行った流れに沿って紹介します。
関連記事
MyCoachの本番環境をAWS上に構築する 〜ネットワーク編〜
Amazon EC2を使ってみる
MyCoachで利用しているインスタンス
MyCoachはWebサーバとDBサーバの2台のEC2インスタンス(どちらもt2.micro)で構築されています。
設定する項目
設定する項目は下記のとおりです。
- キーペア
- セキュリティグループ
- インスタンス
- ターゲットグループ
- ロードバランサー
それぞれの項目について個別に説明します。
キーペアの作成
まず初めに行うのはキーペアの作成です。
キーペアはEC2インスタンスにSSHで接続する際に使用します。
まず、AWSコンソールのトップ画面の入力欄に「ec2」と入力し検索します。
すると、EC2ダッシュボードに遷移しますので左のメニューの「キーペア」をクリックします。
「キーペアの作成」をクリックし表示されたポップアップにキーペア名を入力して「作成」をクリックします。
すると、自動的にキーペアがダウンロードされます(ファイル名が【キーペア名】.pem.txtとなっているので、気になる場合は.txtを消します)
セキュリティグループの作成
キーペアを作成したことでインスタンスにアクセスできるようになりました。
ただし、インスタンスを作成する際にセキュリティグループを指定しますので、先にセキュリティグループを作成します。
まずはWebサーバ用のセキュリティグループを作成します。
左のメニューの「セキュリティグループ」をクリックし、「セキュリティグループの作成」をクリックします。
下記の画像の通り設定し、「作成ボタン」をクリックします。
(サーバ構築のためにHTTPとSSHをフルオープンにしていますが、リリース前に設定を修正します)
次にDBサーバ用のセキュリティグループを作成します。
セキュリティグループ名を「mycoach-ec2-db」にし、それ以外はWebサーバ同じ設定で作成します。
最後にALB用のセキュリティグループを作成します。
ALBのセキュリティグループの設定は下記の画像のとおりです。
これでインスタンスを作成するための準備が整いました。
インスタンスの作成
まずはWebサーバのインスタンスを作成します。
Webサーバのインスタンスを作成
左のメニューの「インスタンス」をクリックし、「インスタンスの作成」をクリックします。
表示されたOSの一覧からAmazon Linux AMIを選択します。
インスタンスタイプの設定画面ではt2.microが選択されてると思いますので、そのまま「次の手順」をクリックします。
下記の画像の通り設定し、「次の手順」をクリックします。
ストレージの追加画面ではインスタンスにアタッチするディスクのボリュームを指定します。
設定を編集せずに「次の手順」をクリックします。
タグの追加画面では下記の画像の通り入力し、「次の手順」をクリックします。
セキュリティグループの設定画面では、先程作成したセキュリティグループを指定して「確認と作成」をクリックします。
インスタンス作成の確認画面では内容を確認し、「作成」をクリックします。
表示されたチェックボックスにチェックを入れて「インスタンスの作成」をクリックします。
DBサーバのインスタンスを作成
DBサーバのインスタンスの作成はWebサーバのインスタンスの作成とほとんど同じです。
DBサーバは外部に公開しないので、サブネットは「mycoach-private-a」を選択します。
Webサーバの設定
インスタンスが立ち上がったらSSHでアクセスし、設定を行います。
下記のコマンドでインスタンスに接続します。
1 | ssh -i "mycoach-keypair.pem" ec2-user@xxx.xxx.xxx.xxx |
インスタンスに接続したら、yumのアップデート、ユーザの作成、不要なサービスの停止、必要なミドルウェアのインストールを行います。
参考URL:
https://qiita.com/yangci/items/ef2ab9b6f0d28bad0881
https://qiita.com/na0AaooQ/items/5bd62e630a2faf051a52
DBサーバの設定
DBサーバもWebサーバと同様に設定を行います。
注意点として、DBサーバはクローズドなネットワーク上にありますので、一時的にインターネットに接続できるようにする必要があります。
インターネットゲートウェイを作成し、「mycoach-private-a」のルートテーブルを編集します(設定が終わったら削除します)
インターネットに接続できるようになったら、MySQLをインストールしてDBを作成したら外部からアクセスできるようにユーザを作成します。
参考URL:
http://ext.omo3.com/linux/mysql_host.html
セキュリティグループの修正
設定が終わったら不要なポートを閉じます。
Webサーバのセキュリティグループは下記の画像の通り変更します。
DBサーバのセキュリティグループは下記の通り変更します。
ターゲットグループの作成
EC2インスタンスの準備ができたのでロードバランサーを作成して紐付けるのですが、ロードバランサーはターゲットグループに対してアクセスを振り分けるので、先にターゲットグループを作成します。
左のメニューから「ターゲットグループ」をクリックし、「ターゲットグループの作成」をクリックします。
下記の画像の通り入力し、作成ボタンをクリックします。
次にアクセスを振り分けるインスタンスの設定とヘルスチェックの設定を下記の画像の通り行います。
ロードバランサーの作成
ターゲットグループが作成できたのでロードバランサーを作成します。
左のメニューの「ロードバランサー」をクリックし、「ロードバランサーの作成」をクリックします。
次に「Application Load Balancer」の「作成」をクリックします。
下記の画像の通り設定し、「次の手順」をクリックします。
「ACMから新しい証明書をリクエスト」からサーバ証明書を発行する事ができます。
サーバ証明書を発行したら証明書の名前を発行した証明書にし、「次の手順」をクリックします。
下記の画像の通りセキュリティグループを設定し、「次の手順」をクリックします。
下記の画像の通りルーティングの設定を行い、「次の手順」をクリックします。
ターゲットの登録画面ではそのまま「次の手順」をクリックします。
確認画面で「作成」をクリックしてロードバランサーを作成します。
さいごに
今回はEC2とALBの設定を紹介しました。
費用を抑えるためにRDSではなくEC2上にDBを構築していますが、一般的にはRDSが利用されるのではないかと思います。