1つのALBで複数のサイトを作る

テスト用のサイトを3つ作ることになり、あまりお金をかけたくないということで、ELB(ALB)1つにサーバを2台で冗長化することになりました。

マルチサイト?ですね。

EC2を冗長化する必要あるの?と思ったのですが、冗長化することでの問題点をテスト環境で確認したいということでそんなことになりました。

 

【環境】

・OS:Amazon Linux2

・Webサーバ:Nginx

・アプリ:Springbootを使って作成

JavaAmazon Corretto 11

※あまり本編とは関係ないですが、記載しました

 

構成図

・ALB1台

・サーバ2台

・ターゲットグループ3つ(サイトごと)

ドメインはR53で作成

SSLACMで作成

AWS構成図

AWS構成図

手順概要

  1. サーバ:アプリをサイトごとに配置
  2. サーバ:application.properties 修正(ポート、ログ出力場所の変更など)
  3. サーバ:Nginxのconfをサイト(サブドメイン毎)に分ける
  4. AWS:Target groupを作る(3つ)
  5. AWS:ALBを作る(1つ)
  6. AWS:R53でサブドメインを作る(3つ)
  7. AWSACMSSL証明書を作成 (3つ)
  8. AWS:ALBにSSL証明書を設定
  9. AWS:ALBにターゲットグループを設定

 

手順

1.アプリをサイトごとに配置

EC2内にサイトごとにフォルダを作成し、そこにjarやapplication.propertiesを配置

 

2.application.properties 修正

ポートを分けます。

例えばサイト1が「8081」、サイト2が「8082」、サイト3が「8003」。

 

3.Nginxのconfをサイト(サブドメイン毎)に分ける

3-1. nginx.confのserver ディレクティブ(赤枠)を削除

# vim /etc/nginx/nginx.conf

/etc/nginx/nginx.conf

3-2. サイトごとにconfファイルを作成する(今回は3サイトなので3ファイル作成)

# cd /etc/nginx

# cp -p nginx.conf.default conf.d/site1.conf

# vim /etc/nginx/conf.d/site1.conf

サイトごとのconfファイル

3-3. nginx.conf のフォーマットチェック

#nginx -t -c /etc/nginx/nginx.conf

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

↑syntax is ok、 successfulになっていることを確認

/etc/nginx/conf.d 配下のファイルも同様に確認

 

4.Target groupを作る(3つ)

AWSマネジメントコンソールから、ターゲットグループを選択し、3つ作成する。
※特に気を付けることは無いので手順は省略

3つのターゲットグループにEC2を2つずつ紐づけておく。

 

5.ALBを作る(1つ)

ALBを1作る。(細かい設定は最後に行い、ここでは作るだけ)

※手順は省略

 

6.R53でサブドメインを作る(3つ)

以下、ポイントです。

サブドメインは3つ作るが、手順5で作成したALBを選択(全て同じ)

レコード名だけ異なり、他は全て同じ設定になります。

R53でサブドメイン作成

7.ACMSSL証明書を作成(3つ)

ACMにてSSL証明書を作成します。

以下、手順のリンクです。

rikues2012.hatenablog.com

 

8.ALBにSSL証明書を設定

ポイントだけ手順を記載します。
1つのALBに複数のSSL証明書を付けれるの?と思っていましたが、できました。

 

8-1. AWSコンソールから対象のALBを選択し、リスナーの追加で「443」のポートを追加

 ・セキュリティポリシーは最新のものを選択

 ・デフォルトの証明書は手順7で作成したものの中から1つを選択

 

リスナー追加

 

8-2. リスナータブから「証明書の表示/編集」をクリック

リスナータブ

8-3. 「+」をクリック

8-4. ACMで作成した証明書の一覧がでるので、手順7で作成した証明書を2つ選択し、「追加」をクリック

※手順8-1で1つ証明書を追加したので、ここでは2つのみ追加

ACM追加

9.ALBにターゲットグループを設定

9-1. 以下の操作を実施する

ルールの表示/編集

9-2. 「+」をクリック

9-3. ホストヘッダー(赤枠)にサイトの手順6で作成したサブドメインを設定

※手順9-3 ~ 9-5 をサイト分(3回)繰り返すので、1回の手順では1つのみ設定

f:id:rikues2012:20211015193827p:plain

9-4. 手順4で作成したターゲットグループを赤枠に設定

9-5. 「保存」をクリック

※手順9-3 ~ 9-5 をサイト分(3回)繰り返す。

 

設定としては以上となります。

上記の手順で実装はできたのですが、こうした方が良いのでは?などアドバイス頂けると嬉しいです。