見えたらダメなポート番号とかが見えてたら教えてください
背景
わこにご飯を決めてもらおうのポート管理、SSL証明書発行などを Apache でしてたつもりが、SSL証明書が切れて全てやり直すことになったので新しく AWS EC2 内のロードバランシング機能を使った
リソースマップ
外部から HTTPS とか HTTP からたどって EC2インスタンスに届くって訳ですよ
ロードバランシングとは
本来はサーバーが重くなり過ぎないようにポート制御するための機能でもあるが、今回のWebサイトではその辺は無視していきますよ。
知っておきたい要素として、「ロードバランサー」「ターゲットグループ」がある。まずは「ロードバランサー」から見ていこう。
1. ロードバランサー
今回で言うと、ネットワークからわこにご飯を決めてもらうための一つ目の扉。
まずリスナー。プロトコルを決め、ポートを開け、次にどこターゲットグループに行くかを設定する。今回で言うとHTTPとHTTPSの二つがリスナーである。ポート番号は基本好きに設定してもよいが、実際やってみると結局 HTTP は80にした方がよい。80以外は分かりにくいだけ。
あと、ここではもちろんセキュリティの設定もできて、ファイアウォール(Webが安全になるポート制御)やらを設定できる。
ルールを設定してポート制御とかできるらしいけど、ここでは割愛。
2. ターゲットグループ
みんなをどこに連れていくかの分岐点。わこにご飯を決めてもらう二つ目の扉。今回は集めたインターネットのみんなをEC2インスタンスに連れていく。
実装
EC2に近い側からやった方がやりやすい気がするのでターゲットグループから作り上げていきます
1. ターゲットグループ
図左側赤丸内のターゲットグループを選択し、ターゲットグループを作成する。
このプロトコル選択が罠。HTTPを選んだ方が無難。このWebサイトにおいてはHTTPSを実装するのはロードバランサーの役割。仮にここでHTTPSにしたいのであれば、EC2側もHTTPSにする必要がある。かなり大変なのでHTTPにしましょう。ポートは無難に80で。他の設定はデフォルトで大丈夫。次に行こう。
ここのインスタンスのポートをきっちり設定する必要がある。私の場合はpython Flaskで設定したポート番号である。ここを設定したらターゲットグループは完成。
2.セキュリティグループ
ロードバランサーを作る前にロードバランサー用のセキュリティグループを作成しないといけない。EC2に使ったセキュリティグループを使うと、Webサイトは作れるし動くけど、何より安全性がだめ(らしい)。

ここからセキュリティグループを作成。名前とかを好きに設定できる。
インバウンドルールは難しいが設定しないといけない。ここでのインバウンドルールはロードバランサーの開けるポートを限定している雰囲気。ロードバランサーでも似たような設定をするが何が違うのかよくわからない。雰囲気で2回設定しよう。
今回は遊び心でカスタムTCPの7777を開けた。のちにロードバランサーでHTTPとして設定する。とにかく開けておく。
アウトバウンドルールはデフォルトで大丈夫
他もデフォルトで大丈夫
3. SSL/TLS 証明書
HTTPSで接続したい人はこの証明書をリクエストしないといけない。

ドメインを設定しよう
そしたらあとはリクエストして待つだけ。割とすぐ発行できる。
4. ロードバランサー
次はロードバランサーを作成。
今回はWebなので一番左のApplication Load Balancerを選択。
ここが微罠。EC2で選択しているアベイラビリティーゾーンを選択するべし。
ここでさっき作ったセキュリティグループを選択。
リスナーを設定する。セキュリティグループ作ったときにいったん開けたポート7777を設定する。ターゲットグループはさっき作ったターゲットグループ。
HTTPSも設定する。どんどん点と点が繋がって気持ちよくなってきた。
HTTPSのSSL/TLSサーバー証明書の設定。さっき作ったやつを選んでおけばおけ。
これで他はデフォルトで設定し完成。
があと一つやっておかないといけないことがある。
5. Route 53 によるロードバランサーの設定
ホストゾーンから自分のWebドメインを選択。
Aタイプのレコードを選択して、レコードを編集
エイリアスをオンにして
「Application Load Balancer と Classic Load Balancer へのエイリアス」
を選択
EC2のリージョン先を選び、さっき作ったロードバランサーを選択し、保存
これにて完成。

















