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

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

1つのALBに3つのサイト(URL)を設定する手順になります。

マルチサイト?ですね。

 

【環境】

・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回)繰り返す。

 

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

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