お久しぶりです。株式会社協栄情報システム3部所属の寺尾です。

今回はApplication Load Balancer(ALB)からNetwork Load Balancer(NLB)へと変更する機会があったので、そこで調べた内部向けのALBとNLBの違いについてまとめていきたいと思います。

ALBからNLBへと変更した理由は、イントラネットにおいて統合Windows認証を利用するためです。
統合Windows認証ではクライアントの送信元IPとポートを利用して認証を行うため、プロキシサーバを経由したアクセスでは認証が行えず、同じくALBでも送信元IPとポートが変わるので利用できません。

そこで、IPアドレスを保持したままリクエストの振り分けが行えるNLBの出番というわけです。

ALBとNLBの違い

まず、ALBとNLBとは?

  • ALB
    レイヤー7でHTTP、HTTPSプロトコルでの負荷分散を行うロードバランサー。様々なリスナールールを利用した柔軟なルーティングが可能。
  • NLB
    レイヤー4でTCP,UDP等のプロトコルでの負荷分散を行うロードバランサー。静的なIPで機能し、クライアントIPを保持可能で、暖気不要で毎秒数百万ものリクエストに対応できる。

以上のようなものになっています。私も先日まで知っていたのは上記のことぐらいで、深くは知りませんでした。

実際にALBからNLBに変更してみると細かな設定、仕様の違いがかなりありましたので、以下にまとめていきます。

Elastic Load Balancing(ELB)基本設定

項目 ALB NLB
レイヤー 7 4
プロトコル HTTP,HTTPS TCP,UDP,TCP_UDP,TLS
送信元ポート ALBのものとなる 保持することもできる
ELBサーバのIP※ 指定不可能 指定可能
セキュリティグループ 設定可能 設定不可能

※ALBのIPアドレスは指定不可能で、スケーリングするためにサブネットに8個の空きIPアドレスが必要になります。しかしNLBはIPを指定する、しないにかかわらず常に静的なIPアドレスになります(内部向けNLBはスケールアウトをしない)

ELBリスナー設定

項目 ALB NLB
ALPNポリシー 設定不可能 設定可能
リスナールール 詳細に設定可能※ デフォルトアクションのみ設定可能

※ホスト名やHTTPヘッダーなど様々な条件でルーティングできます

ELB属性設定

項目 ALB NLB
HTTP/2 設定可能 設定不可能
アクセスログ保管 全て対応 TLSのみ対応
クロスゾーンロードバランシング 常に有効※ 選択可能
無効なヘッダーフィールドを削除 設定可能 設定不可能
Desync緩和モード 設定可能 設定不可能

※クロスゾーンロードバランシングはそれぞれのAZに配置されているELBからAZをまたいでリクエストを振り分ける機能で、選択肢はないですが常に有効です。

といった違いがあります。

ALBとNLBのターゲットの違い

また、ターゲットグループも細かな違いがいくつかあり、ALBからNLBへの流用は不可能です。
以下にまとめていきます。

ターゲットグループ基本設定

項目 ALB NLB
プロトコル HTTP,HTTPS TCP,UDP,TCP_UDP,TLS
プロトコルバージョン 指定可能 指定不可能

ターゲットグループヘルスチェック設定

項目 ALB NLB
ヘルスチェックプロトコル HTTP,HTTPS TCP,HTTP,HTTPS
  • NLBのヘルスチェックプロトコルがTCPの場合
項目 ALB NLB
非正常な閾値 自由に設定可能 正常な閾値と同値になる
タイムアウト 自由に設定可能 10秒で固定
間隔 自由に設定可能 10秒 or 30秒
成功コード 設定可能 設定不可能
  • NLBのヘルスチェックプロトコルがHTTP,HTTPSの場合
項目 ALB NLB
非正常な閾値 自由に設定可能 正常な閾値と同値になる
タイムアウト 自由に設定可能 HTTPSの場合:10秒固定
HTTPの場合:6秒固定
間隔 自由に設定可能 10秒 or 30秒
成功コード 設定可能 200~399で固定

ターゲットグループ属性設定

項目 ALB NLB
スロースタート期間 設定可能 設定不可能
ロードバランシングルゴリズム ラウンドロビンアルゴリズム,最小未処理リクエストアルゴリズム フローハッシュアルゴリズム
スティッキーセッション 全て利用可能 ターゲットグループで設定したプロトコルがTLSの場合のみ利用不可能
Proxy Protocol v2 設定不可能 設定可能
クライアントIPアドレスの保持 設定不可能 設定可能※

※ターゲットがインスタンスの場合はデフォルトでオン、ターゲットがIPアドレスの場合はデフォルトでオフ。

おわりに

ここまで読んでいただきありがとうございました。
これが今回ALBからNLBに移行するにあたって調べた内容になります。
間違いなどあればぜひご指摘ください。

Last modified: 2021-10-05

Author