【AWS】ElasticBeanstalkを利用した負荷分散環境の立ち上げ(2018年UI版)



　前回、前々回、記事のタイトルに「2018年UI版」と書いてしまったがために、「年内に記事書かないとダメなのでは？」と思い、急ぎで今回の記事を書きました。

と書いたところで下書きを保存し、2019年になってしまいました。。。w
申し訳ないですm(・ω・)m

それと本記事、結構長いです。ご了承ください(ﾉ≧ڡ≦)てへぺろ

---
　さて今回は、ElasticBeanstalkを利用して負荷分散(ロードバランサー)を含む環境の構築を行います。
以下の手順で作業を進めます。

- EC2キーペアの作成
- EC2セキュリティグループの作成
- ElasticBeanstalkを利用したサーバー構築

　もし、VPC、RDSの構築が済んでない場合は、以下の記事を参考にしてください。

- [【AWS】VPC作成(2018年UI版)](https://qiita.com/joe_hirata/items/0f2cc6eeeb2052cfc284)
- [【AWS】RDS(Aurora)作成(2018年UI版)](https://qiita.com/joe_hirata/items/1987aa832a9a692f4287)

また、今回ElasticBeanstalk(以下、EB)を利用してロードバランサーも組むわけですが、ロードバランサーはApplicationLoadBalancer(以下、ALB)を利用します。

## EC2キーペアの作成

 まずはじめに、EC2インスタンスへSSHログインする際に利用する「キーペア」を作成していきましょう。
EC2インスタンスにSSHログインしない場合は不要かもしれませんが、僕は有事の際に検証ができるように登録する派です。
EC2インスタンスにSSHログインできるため、セキュリティグループはしっかりと組まないといけないですけどね。










 TOP> EC2> キーペア の順でクリックして、キーペア一覧ページを表示します。
![001.png](https://qiita-image-store.s3.amazonaws.com/0/275273/e6421a5e-55d7-7b04-5538-65895ca5dc34.png)

 そうしましたら**キーペアの作成**をクリック。











![002.png](https://qiita-image-store.s3.amazonaws.com/0/275273/cce9a01e-5406-c20e-265a-bc48fefa65ef.png)

適当な(わかりやすい)名前をつけて**作成**をクリック。
するとキーペアが生成されますので、**必ずキーペアを保存**したのを確認してください。










## セキュリティグループの作成

続きまして、EBにより作成されるインスタンスに適応するセキュリティグループを作成していきましょう。

今回作成するセキュリティグループは

- 社内アクセスからのアクセス用
- ロードバランサー用
- VPC用

を作成していきます。
１つのセキュリティグループにまとめても良いのですが、用途や権限レベル、もしくは部署などで分けた方が後々管理が楽になります。

またロードバランサー用、VPC用はなくても多分大丈夫だと思います。
EBで環境を作成する際に自動でセキュリティグループが作成されるので、そちらで代用可能です。
VPC、ロードバランサーに個別にアクセス制限をかけたい場合はそれぞれを自前で作成しても良いでしょう。


作成に伴い、 EC2 > セキュリティグループ をクリックしていき、セキュリティグループの画面へ進みましょう。


まずは社内アクセス用。

**セキュリティグループの作成** ボタンをクリック。

- 適当な名前
- わかりやすい説明
- VPC は作成したVPC

上記を入力し、インバウンドルールを設定していきます。
今回は社内アクセス=管理者として扱いたいので、

- タイプ
 - すべてのトラフィック
- ソース
 - カスタム - 会社のグローバルIPアドレス/32
- 説明
 - 適当な説明

と入力しました。

![001.png](https://qiita-image-store.s3.amazonaws.com/0/275273/1e390513-1a12-a793-f0fb-aa4ad57a5d2c.png)

入力を終えましたら、**作成**ボタンをクリックしてセキュリティグループを作成しましょう。

以下のように、ロードバランサー、VPC用のセキュリティグループも作成します。

![002.png](https://qiita-image-store.s3.amazonaws.com/0/275273/039db56d-0ff0-c295-8ff3-87901644510f.png)
↑ロードバランサー用

![003.png](https://qiita-image-store.s3.amazonaws.com/0/275273/29f01edf-c1fa-934c-207f-3631008927b2.png)
↑VPC用(HTTPのソース項目に、ロードバランサー用のセキュリティグループを指定してください)
SSHの項目はよしなに。

## ElasticBeanstalkを利用したサーバー構築

さて、いよいよEBを利用した環境構築です。

Elastic Beanstalk > 新しいアプリケーションの作成 をクリック。
アプリケーション名と説明を入力し、アプリケーションを作成しましょう。

次に アクション > 環境の作成 をクリック。
これは、アプリケーションに紐づく環境を作成するということになります。
開発環境や本番環境もろもろ。

<img width="961" alt="001.png" src="https://qiita-image-store.s3.amazonaws.com/0/275273/014e3dd8-6f0b-ff63-58df-000ec448e65d.png">

今回はウェブサーバー環境を立ち上げたかったので、項目を選択して次の画面へ。

![002.png](https://qiita-image-store.s3.amazonaws.com/0/275273/32e7f222-514a-35bd-786d-3fb174f11aec.png)
名前などは適当に入力していき、プラットフォームはマルチコンテナーDockerを利用したかったのでそちらを選択。各々の環境に合わせてください。
サンプルアプリケーションを指定して環境を作成します。

通常であれば**環境の作成**をクリックして終了。となるところですが、今回は自前で作成したVPCを利用したいので、**さらにオプションを設定**をクリック。

![003.png](https://qiita-image-store.s3.amazonaws.com/0/275273/072260fe-3cf3-93be-c39e-582f3823e6b0.png)
このような画面になったかと思います。

それぞれの項目を設定していきましょう。

---
### インスタンス

![004.png](https://qiita-image-store.s3.amazonaws.com/0/275273/9c508d06-3b72-2459-6072-5248cb6d7d72.png)
セキュリティグループの項目は作成したセキュリティグループを設定しましょう。
設定したら**保存**をクリック。元の画面へ遷移します。

---
### 容量



![005.png](https://qiita-image-store.s3.amazonaws.com/0/275273/5f203f89-3392-64d6-a511-3fd3c2fd63d9.png)
この項目ではサーバーの台数やスケーリング条件の設定ができます。
ALB配下に複数台のサーバーをぶら下げたかったので、負荷分散を選択しました。
「スケーリングトリガー」については個人でお好きなように設定してください。

---
### ロードバランサー

![006.png](https://qiita-image-store.s3.amazonaws.com/0/275273/e7dac360-0d29-882b-5765-5aff43a13ca7.png)
ALBを選択。

![007.png](https://qiita-image-store.s3.amazonaws.com/0/275273/fd7f73e6-9797-41ab-c8df-80b67a2a5043.png)
ここら辺は現時点では特にいじる必要はないかなと思います。HTTPS化する際にまた訪れましょう。

---
### セキュリティ

![008.png](https://qiita-image-store.s3.amazonaws.com/0/275273/9660d96b-8ee6-8840-52df-f11a32269b80.png)
このページでは先ほど作成したEC2キーペアを指定して、**保存**をクリック。
これは、インスタンスにSSHログインする際に必要となります。もしSSHログインしない or キーペアを利用しないのであれば特に必要ないかなと思います。

### ネットワーク


![009.png](https://qiita-image-store.s3.amazonaws.com/0/275273/d83aca4e-c6a3-aba7-ec75-99f0c180a5ff.png)
お次はネットワーク周りの設定。
作成したVPCを指定し、ロードバランサーのサブネットを指定します。VPC作成時に一緒に作成したサブネットを選択しましょう。




![010.png](https://qiita-image-store.s3.amazonaws.com/0/275273/cfbe0225-1e5f-a4bb-9a94-1412a31e85e8.png)
ページ下部ではインスタンスに対する設定項目があります。
**パブリックIPアドレス**にチェックをつけます。
ロードバランサーのサブネット指定と同様に、インスタンスのサブネットを指定します。

**保存**をクリック。

元の画面へ遷移します。

## 環境の作成

一通り設定を終えましたら**環境の作成**をクリック。
環境構築が開始されます。(10分程度かかるかと思います)

---
## 失敗した場合

何らかの理由で環境構築に失敗した場合、いくつか考えられる要因があります。

- セキュリティグループが影響してヘルスチェックに失敗
- VPCの設定ミス。または設定漏れ
- AWSリソースアクセスの権限が不足している...etc

もし行き詰まったら、エラーログを全コピしてGoogleさんに聞いてみましょう。

---


結構ボリューミーな内容になってしまったのでどこか漏れがあるかもしれません('・ω・`)
もし気になる点あればコメント等で教えていただけると助かります。



### あなたへオススメするかもしれない記事☆

- [【AWS】RDS(Aurora)作成(2018年UI版)](https://qiita.com/joe_hirata/items/1987aa832a9a692f4287)
- [【AWS】VPC作成(2018年UI版)](https://qiita.com/joe_hirata/items/0f2cc6eeeb2052cfc284)
- [スタバで逆ナンされる方法(＊´・∀・＊)](https://qiita.com/joe_hirata/items/372212f1a5d9fd5b98cd)