- 今は直接 EC2 インスタンスで http リクエストを受けているが、前段にアプリケーションロードバランサーを設置する
- アプリケーションロードバランサーとは
クライアント -- <http:80> -> アプリケーションロードバランサー(HTTP:80 リスナー)
-> ターゲットグループ -- <http:8000> -> EC2 インスタンス
ロードバランサーの作成
ボタンをクリックApplication Load Balancer
のCreate
ボタンをクリックLoad balancer name
にaws-hands-on
と入力するNetwork mapping
のMapping
では全て(3つ)のチェックボックスにチェックするSecurity groups
の項目で、Create new security group
リンクをクリックする- セキュリティグループを作成する
- 元のタブに戻って、作成したセキュリティグループを選択する
Listeners and routing
の項目でCreate target group
リンクをクリックする- ターゲットグループを作成する
-
- Choose a target type: Instances(デフォルト)
- Target group name:
aws-hands-on
- Protocol: HTTP(デフォルト)
- Port: 80(デフォルト)
-
- Health check protocol: HTTP(デフォルト)
- Health check path:
/healthcheck
- Port:
Override
,8000
-
Next
ボタンを押す -
EC2インスタンスをターゲットグループに登録する
-
- チェックボックスをチェックし
Includes as pending bellow
ボタンを押す Create target group
ボタンを押す
- チェックボックスをチェックし
-
- 元のタブに戻って、作成したターゲットグループを選択する
Create load balancer
ボタンを押すView load balancer
ボタンを押す
aws-hands-on
のターゲットグループをクリック- ターゲットグループには EC2 インスタンスを所属させるが、所属している EC2 インスタンスが健康な状態か(healty)かどうかをチェックしている
- 健康状態は、httpリクエストに対してレスポンスを返しているかという観点で観測している
- ターゲット(EC2 インスタンス)が健康である場合、
healty
と判断され、ロードバランサにきたリクエストがそのターゲットに流れるようになる
- リスナータブでは、80番ポートに来たHTTPプロトコルのリクエストを、どういうルールでターゲットに流すかという設定がされている
- https://ap-northeast-1.console.aws.amazon.com/ec2/home?region=ap-northeast-1#LoadBalancers:sort=loadBalancerName
ルール
の項目にある転送先
(aws-hands-on) はターゲットグループ-
- 説明タブにある
DNS名
を使って、ブラウザからアクセスしてみると、Django のページが見れるはず
- ロードバランサからアクセスできるようになったので、EC2 インスタンスに直接アクセスする必要はありません
- 不用意にポートを開けておくのはセキュリティーリスクにもつながるので、適切に制限しましょう
aws-hands-on-ec2
のセキュリティーグループを選択インバウンドルールを編集
ボタンをクリックインバウンドルール
を以下のように設定- 保存されたインバウンドルールはこのようになるはず
- これでアプリケーションロードバランサーへの 80 番ポートに対するリクエストのみが EC2 インスタンスに到達するようになった