AWS_冗長化とスケーラビリティ

まずは現状の説明をすると以下の図のような感じで、
![冗長化_構成図_v1_after - コピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1032344/c00d6e0e-6d42-c696-e29a-4a2acadf527d.png)
ブラウザにWEBサーバのパブリックDNS名をたたくと、リバースプロキシでAPサーバまで転送される。
APサーバ内のtest.jspを実行すると、RDS内のDBを参照する仕組みである。
![DB参照1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1032344/5b21fb13-10ff-016c-7063-7afbd9887ac6.png)
今回はWEBサーバ前面にELBを配置して、ブラウザにはELBのパブリックDNS名を入力すると
WEBサーバに振り分けてくれるようにしたい。

以下の構成図を目標に作業を実施する。
①ELBの作成と振り分け
②Auto-Scailingにより、WEBサーバが負荷によりスケーラブルにEC2インスタンスが立ち上がるようにする。
![冗長化_構成図_v1_after.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1032344/37c81a5a-c922-9be1-a183-9e50820ad64b.png)

◆***ELBの作成***
[サービス]-[EC2]-[ロードバランサー]から[ロードバランサーの作成]
![ELB1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1032344/b88b8cba-3537-c805-821f-6c745ac795fc.png)
WEBサーバの振り分ける用途のため、ELBの種類はALBを選択する。
![ELB2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1032344/458cf125-7ef4-7e93-e707-714e2ee85eab.png)
・スキーム→インターネット向け
・プロトコルはHTTP
・AZはPublic-Subnet(1a)およびPublic-Subnet(1c)を選択
![ELB3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1032344/8186aeba-cd3b-a256-b155-f66dfa422d65.png)
セキュリティグループはELB用として新規作成し、HTTPをすべてのアドレス(0.0.0.0/0)から許可するものに設定する。
![ELB4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1032344/495d1ca3-5238-37db-79b5-7ef7ded00b8c.png)
ヘルスチェックに使うプロトコルはHTTPと、閾値はデフォルトのままにした。
![ELB5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1032344/7ca6db79-aefe-eae6-5b50-1f8ebff90403.png)
ターゲットにはパブリックサブネット配置の2つのWEBサーバを選択し、「登録済みに追加」を押す。
![ELB6.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1032344/154207ea-95f6-8f90-42e2-5a810a6a15d6.png)
確認画面を確認してELBを作成
![ELB7.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1032344/05e39c68-7c07-2717-5240-fd67b705fbd7.png)
WEBサーバにはELB経由でアクセスするようにしたため、WEBサーバのセキュリティグループには
ソースがELBからのHTTP通信のみを許可するように設定した。
![SG-1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1032344/5e524d86-4dfb-5d86-0ead-da44af0e6c6d.png)
どちらかに振り分けらているか不明だが、作成したELBのDNS名でAPサーバの画面が表示されることを確認した。
![ELB8.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1032344/1ef04e9d-da63-4c35-33cd-90a2f6c46cc2.png)
ここで片方のWEBサーバを停止したが、APサーバが表示されたブラウザを更新した後も問題なかったため、
ちゃんと冗長が取れていることが確認できた。
![WEBサーバ停止.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1032344/4a0c42de-0d47-cdc4-32a4-242056161dc9.png)

◆***Auto-Scailingの設定***
WEBサーバが高負荷になった際に、自動的にWEBサーバを増やしてくれるようにAuto-Scailingの設定をする。
WEBサーバを選択し、[イメージとテンプレート]-[インスタンスからテンプレートを作成]
![Auto0.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1032344/4a233889-d4e7-ab1f-eeaf-e4d6311c1c81.png)
下の画像では、「WEB-Server」となっているが、起動テンプレートのバージョンがわかるように起動テンプレート名は「WebServer1.0.1」とした。
![Auto1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1032344/23d8401a-2eda-1426-b9c8-4d19f8f6279c.png)
インスタンスからテンプレートを作成しているため、パラメータは入っている。
![Auto2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1032344/e95417ee-6c18-a0b8-cdb4-baf403e93e2e.png)
![Auto3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1032344/57bb3ac4-be97-3d9f-2670-64d3580cac93.png)
最初テンプレートの作成ができなかったのだが、
元にしたインタンスが終了保護などを設定していたため、
高度な設定で、黄色の箇所は起動テンプレートには含めないようにした。
![Auto4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1032344/eb78407b-2154-8c32-e7db-33989a0f9e13.png)
Auto-Scailingのグループ名を入力し、起動テンプレートを選択し、次へ。
![Auto5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1032344/4de543b0-5cd0-1ac1-85f4-7cdec88f502b.png)
[起動テンプレートに準拠する]を選択し、対象のVPC/サブネットを選択する。
![Auto6.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1032344/0a0223e7-d4d5-b996-a754-8b8a432275f9.png)
\[既存のロードバランサーにアタッチ](ALBまたはNLB)を選択し、
ターゲットグループには先ほどテンプレート作成時に名前を付けたTG-1を選択した。
![Auto7.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1032344/ec160153-9abe-da67-f742-c624d59d9402.png)
スケーリングポリシーでは、希望するインタンス数(2)/最小インスタンス数(2)/最大インスタンス数(4)を選択。
![Auto8.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1032344/2d7c7458-3409-c158-9082-4393c31f2dbb.png)
スケールアウトする条件としては、平均CPU使用率が30%になるように自動調整の設定をし、
急激な増減を抑えるため、300秒のウォームアップの時間を設定した。
![Auto10.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1032344/81d93c25-b64e-da35-fd76-c1b850b54ee0.png)

◆**終わりに**
実際にWEBサーバに負荷をかけようと思ったのだが、WEBサーバはリバースプロキシの設定をしているため、
すぐにAPサーバに転送する関係からAuto-ScailingするならAPサーバ側じゃない？と思えた・・・。
またAutoScailingには起動設定(Lanch configurations)と起動テンプレート(Auto Scailing Group)と2種類あるが、
ブラウザからクリックしたときに英語に変わったり、設定が色々ややこしい・・・。