AWS ロードバランサーを介してサーバーを公開する

AWS で、ロードバランサーを作ってみたのでメモ。

目次

インスタンスを作る

ロードバランサーで振り分けするインスタンスを作成します。
nginx の設定と、80 番 443 番ポートを通過させるインバウンドルールを充てておきます。

ターゲットグループの設定

ターゲットグループの作成

以下のターゲットグループを作成します。

  • プロトコル:HTTP,ポート 80 のターゲットグループ

画面では次のようになります。

プロトコル:HTTP,ポート 80 のターゲットグループ

作成できると次のようになっているはず。

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

ターゲットグループを選択して、「編集」をクリック。

登録済みターゲットに、インスタンスを選択して「保存」をクリック。

作成済みの 2 つのターゲットグループそれぞれで、実施しておく。

ロードバランサーの設定

「ロードバランサーの作成」をクリック。

今回は、Application Load Balancer(以降ALB)を選択します。

ロードバランサーを設定します。
「リスナー」には、「HTTPS」と「443」を追加しておきます。
アベイラビリティーゾーンには、とりあえず全んぶチェックを入れる。
(正しい判断があれば見直したい。)

ACM に証明書を持っているので、そちらから選択する。

セキュリティ設定を選択する。
インスタンスに割り当てている 80 番ポートと 443 番ポートを許可したセキュリティグループを割り当てると楽。

ルーティング設定で、ターゲットグループを割り当てる。
先に作った作成済みのターゲットグループがあるので、それらから選択する。

確認があるので進める。

もう一度全体の確認があるので、進める。
作成後確認すると、HTTP 80 でも HTTP 443 でも、TARGET-GP0 へ転送するようになっている。

ドメインを割り当てる route53

route53 に移動し、「ホストゾーン」を開く。

割り当てたいドメインを選んで、「レコードセットに移動」をクリック。

「レコードセットの作成」をクリック。

適当なサブドメインを記述し、エイリアスの「はい」を選ぶと先に作成したロードバランサーを割り当てできる。
割り当てたら、「作成」をクリック。

確認

route53 で作成したドメインにアクセスする。
ALB を介して作成しておいたインスタンスにアクセスできるはず。
今回は、nginx を立ち上げているので次の画面の様になる。(nginx1 になっているのは少し書き換えをしたため。)

ALB を介してサーバーにアクセスできました。

ロードバランサーを使うのでアクセス分散させてみる

ターゲットグループにインスタンスを先の方法で追加しておく。
この時、web サーバーを立ち上げてから登録しないと、ステータスチェックに時間がかかってしまう様です。
(登録した時にステータスチェックをするからだろう。おそらく。)

今回、ターゲットグループに追加したインスタンスのデフォルトページはも書き換えをしている。
「Welcome to nginx on Amazon Linux!」「Welcome to nginx2 on Amazon Linux!」とした。

確認 アクセス分散

route53 で作成したドメインにアクセスする。
何度かリロードを繰り返すと、書き換えした「nginx1 」「nginx2」の部分がたまに変わることを確認できます。

nginx1 nginx2がたまに書き換わる


今回はロードバランサー特に「Application Load Balancer」を使用して、サーバーを公開してみました。

今回の実施に当たって、Route53 でドメイン購入、ACM で Certificate Manager で証明書取得をしました。
このブログの立ち上げ時にしたことは以下の 2 つでした。

  • お名前.com にてドメインを購入して Route53 に移管
  • 証明書は Let’s Encrypt で用意

などとやって準備していましたが、全部 AWS で用意すると便利だなぁ。というのが時間でした。
ドメイン購入のお値段は、20 倍位違いましたが。(種類にもよりますが)。
アプリケーションへの展開まで考慮するとペイできている気がします。

ではでは。