1層、2層での構築ができていれば、3層化するのは簡単。
ELBを1層目に設定して、EC2サーバに振り分けるだけです。
Contents
Elastic Load Balancingの基礎知識
EC2のコンソール画面、左メニュー下方の「ロードバランシング」からロードバELBは設定します。
見ての通り、
・ロードバランサー
・ターゲットグループ
この2つの設定が必要です。
ロードバランサーとは、一般ユーザーからのリクエストを振り分けるソフトウェアです。
ターゲットグループとは、振り分け先となるEC2のグループです。
以降の手順は、既にEC2とRDSをデフォルトVPC上に作成済みの前提です。
2層目のEC2はEC2-1インスタンスでnginx-SpringBoot-MySQL-redisを構築の手順で作成します。
3層目のRDSはEC2でnginx-SpringBoot-RDSのMySQLの手順で作成します。
1層目-Elastic Load Balancing の設定
ターゲットグループを作成
まずは振り分け先となるEC2のグループを作成します。
グループの構成員となるEC2は1台以上必要です。
Specify group details画面
基本的にはデフォルト設定でOKです。
Choose a target type...EC2インスタンスに振り分けたいので、「Instances」でOKです。
Target group name...任意のグループ名を入れます。
Protocol:Port...そのままでOKです。これは、ELBがどのプロトコル:ポートで待つかという設定です。EC2側の話ではありません。
最後にNextボタンを押します。
Register targets画面
振り分けたいEC2を選択します。
EC2インスタンスを起動していないと、表示されません。
EC2が起動できていない場合は、起動してあげてください。
Ports for the selected instances...EC2のSpringBoot内蔵のtomcatに振り分けたいので「8080」とします。
最後にCreate target groupボタンを押します。
ロードバランサーを作成
ロードバランサー本体を作成し、ターゲットグループを紐づけていきます。
Select load balancer typeは「Application Load Balancer」を選択します。
Basic configuration>Load balancer name...任意の名前でOKです。
Network mapping>Mappings...ELBを配置したいサブネットを指定します。複数選択しておきます。
Security groups...タイプ=HTTPのソース=AnywhereIPv4のインバウンドを許可したセキュリティグループを選択(なければCreate new security groupから作成)します。
Listeners and routing>Default action...先に作成しておいたターゲットグループを選択し、EC2に転送するようにします。
最後に、最下部のCreate load balancerを押して、ELBを作成します。
ELBの動作確認
作成したロードバランサーが状態=Activeとなっていることを確認します。
DNS名をコピーして、EC2にロードバランシングしてくれるか確認します。
アプリが期待通りに動いてくれれば、OKです。
3層化の完成です。
DNS名にアクセスしたら「タイムアウト」
ELBまでリクエストが届いていないです。
ELBに対して「インバウンド 80番ポート AnywhereIPv4」のセキュリティーグループを設定できているか確認してください。
DNS名にアクセスしたら「502 BadGateway」
DNS名にアクセスして「502 BadGateway」と表示された場合、
ターゲットグループの振り分け先が生きてるか確認します。
Healthy=1以上になっている必要があります。
EC2でSpringBootが起動できているか確認してください。
3層化の仕上げ
上記までで3層化ができています。
1層→2層→3層と本サイトに従って進めてきた場合、EC2にnginxがありますが、ELBに置き換わってますので、nginxのサービスを停止して良いでしょう。
[ec2-user@ip-172-31-3-48 ~]$ sudo systemctl stop nginx
[ec2-user@ip-172-31-3-48 ~]$ sudo systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
Active: inactive (dead)
また、EC2のセキュリティグループのインバウンドに80番ポートがあれば、それも閉じてください。