皆さんお疲れ様です。
社会人2年目になりました。翔太と申します。
今回は、自分自身ちゃんと理解していなかったAWSサービスの一つであるNLBの以下の点について説明していきたいと思います。
間違っていたらご指摘お願いします。
- NLBって何?
- ALBと何が違うの?
- どこが良くていつ使うの?
ELBとは何か?
ここでは本筋じゃないので簡単に言うと、負荷分散を行うための機能を提供しているフルマネージドサービスです。
その種類としてあげられるのが以下の2点となります。
・ALB(Application Load Balancer)
・NLB(Network Load Balancer)
・CLB(もう今使われていないので、割愛)
ALBとは何か?
ALBとは、負荷分散の中でもアプリケーション層(L7)で負荷分散を行う機能を持ったフルマネージドサービスです。
例えばですが、ブラウザにて、検索をかけ、どこかのサイトのURLにアクセスするとサイトが表示されますよね。
この際にサイトが表示される簡単な流れとしては以下のような流れとなっています。
- URLのドメインからDNSサーバーが名前解決をして宛先のサーバーの住所(IPアドレス)を特定する
- 特定したIPアドレスに向けてサイトの情報をくださいとリクエストを送る
- サーバーに繋がるとリクエストされたサイトの情報をレスポンスとして返す
- ブラウザがレスポンスとして返されたHTMLファイルなどを解析してサイトを表示する
この際に、サーバーが一つだと、もしそのサーバーがなんらかの原因でダウンしてしまった時にサイトが表示されなくなってしまいますよね?
そこで使われるのが、ALBというわけです。
ALBは、Auto Scalling機能などと一緒に使われ、サイトを表示する際に以下のような機能を持っています。
- ヘルスチェック
- サーバーが正常に起動している、接続することができるかのチェック
- 正常でなければ他方のサーバーにのみ接続する
- 負荷分散
- 負荷を割合などで複数サーバーへとリクエストを振り分けるなど
これらの機能によって、可用性を高めることができるというのがALBの主な特徴となります。
まー他にも機能はあるのですが、本題ではないので、ここも割愛します。
NLBとは何か?
本題のNLBです。
NLBも負荷分散を行うフルマネージドサービスです。
ALBと何が違うの?
ALBと違う点としては、サービス内容において違う点はありますが、本質的に違うこととしては、トランスポート層(L4)で機能するロードバランサーであるということです。
ALBと比べて何が良くていつ使うの?
ALBと比べて何がいいのか?
結論から言うと、ALBよりも低レイテンシー(リクエストからレスポンスまでの時間が短い)であると言うことです。
つまりは、ALBより負荷分散の処理が速いと言うことですね。
なぜALBより処理が速いかと言うと、NLBはL4で動作しており、ALBのL7のような少し処理の重い機能(コンテンツベースのルーティングやCookieを使ったスティッキーセッションなど)を行う必要がありません。
これによって、NLBはALBよりもパケットレベルでの処理が効率的なため、処理速度が速いんです。
どういうシチュエーション使うの?
ではどんな時に使うの?って話になると思います。
NLBはALBと違い、L7をサポートしていませんので、クライアント(ブラウザ)からリクエストを複数サーバーへと負荷分散するようなことはできません。
NLBが真価を発揮するのは、以下のような時です。
- フロントエンドサーバーからバックエンドサーバーへのリクエストを送る際の負荷分散
- バックエンドサーバーからデータベースへのリクエスト
- 静的IPアドレスを利用したリクエストの負荷分散
例えばですが、以下のような場合に役に立ちます。
- フロントエンドサーバーから複数のバックエンドサーバーに負荷を分散したい場合
- バックエンドサーバーからデータベースに多くのリクエストを短時間で処理したい場合(例:1秒間に100万件のリクエスト)
- 大量のEC2へのリクエストに対する負荷分散
いかがでしたでしょうか?
大雑把かもしれませんが、上記の説明で少しは、NLBの使い所やALBとの違いを感じることができたんではないでしょうか?
今後もこういった記事を作成していこうと思うので、よかったら見てやってください。