サイトアイコン 協栄情報ブログ

ALBとNLBの違いまとめ


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

お久しぶりです。株式会社協栄情報システム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から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
項目 ALB NLB
非正常な閾値 自由に設定可能 正常な閾値と同値になる
タイムアウト 自由に設定可能 10秒で固定
間隔 自由に設定可能 10秒 or 30秒
成功コード 設定可能 設定不可能
項目 ALB NLB
非正常な閾値 自由に設定可能 正常な閾値と同値になる
タイムアウト 自由に設定可能 HTTPSの場合:10秒固定
HTTPの場合:6秒固定
間隔 自由に設定可能 10秒 or 30秒
成功コード 設定可能 200~399で固定

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

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

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

おわりに

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

モバイルバージョンを終了