この記事は公開されてから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
レイヤー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に移行するにあたって調べた内容になります。
間違いなどあればぜひご指摘ください。