スポンサーリンク

Amazon EC2 デプロイ(CD/CI)

Elastic Load Balancing-EC2でSpringBoot-RDSのMySQL

投稿日:

1層、2層での構築ができていれば、3層化するのは簡単。
ELBを1層目に設定して、EC2サーバに振り分けるだけです。

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に転送するようにします。

s

最後に、最下部の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番ポートがあれば、それも閉じてください。

Udemyのハンズオン動画講座でSpringBootのスキルを磨く!

スポンサーリンク

-Amazon EC2, デプロイ(CD/CI)

Copyright© 【Spring Hack】 , 2022 All Rights Reserved Powered by AFFINGER5.