NLBとは?
NLB (Network Load Balancer) とは、アプリケーションへのトラフィック (通信量) による負荷を分散するサービスである ELB (Elastic Load Balancing) のロードバランサー機能の一つです。
ロードバランサーとは、負荷を振り分けることで 1 つのサーバの負荷を軽減する仕組みです。
NLB は OSI 参照モデルでいうところのレイヤ 4 (トランスポート層) で動作し、毎秒数百万リクエストといった膨大なトラフィックでも、高速な負荷分散を実現できるため、突発的なトラフィック増加など、高度なパフォーマンスと低レイテンシー (通信遅延) が求められるアプリケーションで用いられることが多いです。
NLBの特徴
レイヤ 4 に対応
レイヤ 4 プロトコルでは TCP や UDP、TCP + UDPリスナー、TLS リスナーをサポートしているおり、NLB はそのレイヤ 4 で動作しているため、TCP / UDP / TLS のトラフィック分散に適しています。
長時間セッションに対応
WebSocketプロトコルで通信を行うアプリケーションに対して、接続状態を長時間維持する通信処理にも対応しています。
送信元IPアドレス
クライアントの送信元 IP アドレス/ port がターゲットまで保持されるため、ゾーンごとに IP アドレスを管理でき、安定した通信処理を行えます。
DSR方式の実現
NLB は、NAT 方式の L4 ロードバランサーですが AWS Hyperplane という AWS 独自の特殊な負荷分散技術が用いられており、設定次第では NAT 方式の L4 ロードバランサーではなく、DSR 方式の L4 ロードバランサーのように動作させることも可能です。その際、戻りのパケット経路などを考慮する必要がありません。
同一ポート番号での処理
NLB は、「TCP+UDPリスナー」の使用により TCP と UDP それぞれの通信を同一のポート番号で処理できます。
たとえば、DNS サービス (TCP、UDPを使用) の場合、「ポート:53」に「TCP+UDPリスナー」を作成できます。
この際、「TCP+UDPターゲットグループ」に「TCP+UDPリスナー」を紐付けておく必要があります。
NLBの利用方法
NLB の利用方法について、以下の順に説明していきます。
- ロードバランサーの作成
- ロードバランサーとリスナーの設定
- ターゲットグループの設定
- ターゲットの登録
(1)ロードバランサーの作成
まず、ロードバランサーを作成します。
「Amazon EC2」コンソール画面を開き、ロードバランサーのリージョンを選択します。
次に、「Amazon EC2」インスタンスのリージョンと同一のリージョンを選択します。
そして、メニューの「LOAD BALANCING」で「Load Balancers」を選択し、「Create Load Balancer」、「作成」の順にクリックします。
(2)ロードバランサーとリスナーの設定
ロードバランサーとリスナーの設定を行います。
「ロードバランサーの設定」ページの「名前」欄にロードバランサー名を入力します。
「Scheme」はデフォルト値のままで問題ありません。
「Availability Zones」の選択欄については「Amazon EC2」インスタンスのある VPC を選び、「Next: Configure Routing」をクリックします。
(3)ターゲットグループの設定
ターゲットグループの設定を行います。
「ルーティングの設定」ページの「ターゲットグループ」欄で「新しいターゲットグループ」を選択し、「Name」欄に新規のターゲットグループ名を入力します。
「プロトコル」を TCP、「ポート」を 80、「ターゲットの種類」と「Health checks」をデフォルト値のままに設定します。
(4)ターゲットの登録
ターゲットグループへのターゲットを登録します。
最後に「Next: Register Targets」をクリックし、「Register Targets」ページの「Instances」で対象のインスタンス、「Add to registered」を順に選択し、「Next: Review」をクリックします。
NLBの利用料金
AWS の各種ロードバランサーの利用料金は基本的に 1 時間単位または 1 時間未満のロードバランサー使用量とロードバランサーの LCU (キャパシティユニット) の使用量の合算です。
利用料金は使用するリージョンによって多少異なります。本記事では、2022 年 10 月時点でのアジアパシフィック (東京) リージョンの料金を掲載しています。
- NLB使用量
- NLCU使用量
(1)NLB使用量について
NLB の構築から 1 時間ごとに発生する費用です。
NLB を利用した通信を行っておらずとも、NLB を保有していることで 1 時間 (または1時間未満) あたり 0.0243USD が発生します。
たとえば、一か月間利用すると 24時間 × 31日 × 0.0243USD = 18.0792USD となり、日本円では大体 2700 円程度になります。円安の影響で以前より高額になっていますね。
(2)NLCU使用量について
NLCUについてはNLBの利用においてトラフィックの処理量を測定し、複数の要素のうち一番使用量が高いものが請求対象になり、1時間(または1時間未満)あたり、0.006USD が発生します。
NLCU の要素としては以下のものがあります。
- 新しい接続またはフロー : 1 秒あたりの新たに確立された接続またはフローの数
- アクティブな接続またはフロー: 1 分ごとにサンプリングされたピーク時の同時接続またはフローの数
- 処理タイプ : ロードバランサーによって処理されたバイト数 (ギガバイト (GB) 単位)