LoginSignup
25
42

More than 5 years have passed since last update.

NLB (Network Load Balancer)の作成メモ

Posted at

概要

NLB(Network Load Balancer)の作り方を確認した時のメモです。
確認用としてApacheを実行するEC2インスタンスを4つ作成(ap-northeast-1aに2つ、ap-northeast-1cに2つ)し、NLBでリクエストを分散させるようにします。

参考

最終的な構成

図のようにApacheをインストールしたEC2インスタンス(AP1 ~ AP4)はPrivateサブネットに配置して、直接インターネットからアクセスできないようにし、アクセスするにはロードバランサー(NLB)を介するようにします。
Publicサブネットに配置するEC2インスタンス(Bastion)は踏み台サーバとして利用し、ssh接続のみを許可します。

wa.png

VPC

Elastic IPの割り当て

Privateサブネットに配置するEC2インスタンスがインターネットにアクセスできるようにNAT Gatewayを利用するので、事前にNAT Gateway用にEIPを1つ割り当てます。
01.png
スコープに”VPC”を選択します。
02.png
03.png

VPCの作成

VPCのダッシュボード上の[VPCの作成]ボタンをクリックします。
ここから作成を始めるとウィザード形式でVPCを作成することができます。
04.png
VPCのタイプを選択します。
今回はPublicとPrivateにサブネットを作成したいので2番目を選びます。
05.png
この画面でap-northeast-1aにPublicとPrivateのサブネットを作成しました。(VPC作成後にap-northeast-1cにPublicとPrivateのサブネットを追加します。)
また、NATゲートウェイには先に割り当てたEIPを設定します。
06.png

EC2の作成

踏み台サーバ

ローカルPCからssh接続するためのEC2インスタンスを、Publicサブネットのap-northeast-1aに作成します。
このEC2インスタンスからPrivateサブネットに作成するApache用のEC2インスタンスにssh接続します。

セキュリティグループ

自PCからのみssh接続できる設定にします。
09.png

httpサーバ

Privateサブネットのap-northeast-1a、ap-northeast-1cにそれぞれ1つずつEC2インスタンスを作成します。(最終的には2つずつ)
このEC2インスタンスは、Public DNS/IPを持たないので、インターネット側からは直接アクセスできません。

セキュリティグループ

踏み台サーバからのみssh接続、ロードバランサーからhttp接続できる設定にします。
10.png

踏み台サーバからssh接続し、httpサーバをインストール、起動します。

$ sudo yum update -y
$ sudo yum install -y httpd
$ sudo systemctl start httpd

確認用のページとして/var/www/html/index.htmlを作成します。
{privat ip}には、そのインスタンスのprivate ipを記述しました。

<html>
<head><title>{privat ip}</title></head>
<body>
<div>{privat ip}</div>
</body>
</html>

インスタンス内からcurlでアクセスしindex.htmlの内容が取得できることを確認します。

> curl http://localhost

NLB

ロードバランサーにはNLB(Network Load Balancer)を使用します。
11.png
12.png
ロードバランサーのアベイラビリティーゾーンは、Publicサブネットのap-northeast-1a、ap-northeast-1cを指定します。
13.png

Target Groupの作成

ターゲットの種類は”ip”を選択します。
14.png
ターゲット先にApacheをインストールしたEC2インスタンスのprivate ipを設定します。
15.png
ロードバランサーとターゲットグループの作成直後はステータスが"initial"ですが、
17.png
暫く(5,6分くらい)待つと設定が正しければ"healthy"に変わります。
18.png

NLBのDNS

ブラウザからロードバランサーのDNS名でアクセスできることを確認します。
DNS名はロードバランサーの説明欄で確認できます。
20.png

一度アクセスするとDNSがキャッシュされるので、その後はキャッシュが切れるまで同じサーバへアクセスが続きます。
キャッシュをクリアするには、Firefoxの場合Ctrl + Shift + Delを押します。
23.png

httpサーバの追加

Privateサブネットのap-northeast-1aとap-northeast-1cに、それぞれ1つずつEC2インスタンスを作成しhttpdをインストール、起動します。
追加したEC2インスタンスをターゲットグループに登録します。
19.png

Route 53

仮にRoute 53でxxxyyyzzz.comというドメイン名を登録し、www.xxxyyyzzz.comでアクセスできるようにするには、ドメインのAレコードにNLBのDNS名を登録します。

NLBのDNSをAレコードで登録

  • nameにwwwを入力
  • TypeはA - IPv4 addressのまま
  • Aliasにyesを選択
  • Alias TargetにNLBのDNSを選択

この内容で登録します。

22.png

登録が完了すると、すぐにwwww.xxxyyyzzz.comでアクセスすることができます。

補足

セッションマネージャー

この記事ではPublicサブネットに踏み台サーバを用意しましたが、AWS Systems Managerのセッションマネージャーを利用すると、ブラウザからPrivateサブネットのインスタンスにログインすることができます。
24.png
ログインしたいインスタンスを選択し[セッションの開始]ボタンをクリックします。
25.png

ssm-userというユーザーで開始されますが、ec2-userへスイッチすることもできます。

sh-4.2$ whoami
ssm-user
sh-4.2$ sudo su - ec2-user
Last login: Mon Sep 24 08:48:46 UTC 2018 on pts/0
Last failed login: Mon Sep 24 08:52:28 UTC 2018 on pts/0
There was 1 failed login attempt since the last successful login.
[ec2-user@ip-10-0-1-201 ~]$
25
42
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
42