まずは現状の説明をすると以下の図のような感じで、
ブラウザにWEBサーバのパブリックDNS名をたたくと、リバースプロキシでAPサーバまで転送される。
APサーバ内のtest.jspを実行すると、RDS内のDBを参照する仕組みである。
今回はWEBサーバ前面にELBを配置して、ブラウザにはELBのパブリックDNS名を入力すると
WEBサーバに振り分けてくれるようにしたい。
以下の構成図を目標に作業を実施する。
①ELBの作成と振り分け
②Auto-Scailingにより、WEBサーバが負荷によりスケーラブルにEC2インスタンスが立ち上がるようにする。
◆ELBの作成
[サービス]-[EC2]-[ロードバランサー]から[ロードバランサーの作成]
WEBサーバの振り分ける用途のため、ELBの種類はALBを選択する。
・スキーム→インターネット向け
・プロトコルはHTTP
・AZはPublic-Subnet(1a)およびPublic-Subnet(1c)を選択
セキュリティグループはELB用として新規作成し、HTTPをすべてのアドレス(0.0.0.0/0)から許可するものに設定する。
ヘルスチェックに使うプロトコルはHTTPと、閾値はデフォルトのままにした。
ターゲットにはパブリックサブネット配置の2つのWEBサーバを選択し、「登録済みに追加」を押す。
確認画面を確認してELBを作成
WEBサーバにはELB経由でアクセスするようにしたため、WEBサーバのセキュリティグループには
ソースがELBからのHTTP通信のみを許可するように設定した。
どちらかに振り分けらているか不明だが、作成したELBのDNS名でAPサーバの画面が表示されることを確認した。
ここで片方のWEBサーバを停止したが、APサーバが表示されたブラウザを更新した後も問題なかったため、
ちゃんと冗長が取れていることが確認できた。
◆Auto-Scailingの設定
WEBサーバが高負荷になった際に、自動的にWEBサーバを増やしてくれるようにAuto-Scailingの設定をする。
WEBサーバを選択し、[イメージとテンプレート]-[インスタンスからテンプレートを作成]
下の画像では、「WEB-Server」となっているが、起動テンプレートのバージョンがわかるように起動テンプレート名は「WebServer1.0.1」とした。
インスタンスからテンプレートを作成しているため、パラメータは入っている。
最初テンプレートの作成ができなかったのだが、
元にしたインタンスが終了保護などを設定していたため、
高度な設定で、黄色の箇所は起動テンプレートには含めないようにした。
Auto-Scailingのグループ名を入力し、起動テンプレートを選択し、次へ。
[起動テンプレートに準拠する]を選択し、対象のVPC/サブネットを選択する。
[既存のロードバランサーにアタッチ](ALBまたはNLB)を選択し、
ターゲットグループには先ほどテンプレート作成時に名前を付けたTG-1を選択した。
スケーリングポリシーでは、希望するインタンス数(2)/最小インスタンス数(2)/最大インスタンス数(4)を選択。
スケールアウトする条件としては、平均CPU使用率が30%になるように自動調整の設定をし、
急激な増減を抑えるため、300秒のウォームアップの時間を設定した。
◆終わりに
実際にWEBサーバに負荷をかけようと思ったのだが、WEBサーバはリバースプロキシの設定をしているため、
すぐにAPサーバに転送する関係からAuto-ScailingするならAPサーバ側じゃない?と思えた・・・。
またAutoScailingには起動設定(Lanch configurations)と起動テンプレート(Auto Scailing Group)と2種類あるが、
ブラウザからクリックしたときに英語に変わったり、設定が色々ややこしい・・・。