🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

ロードバランサー

ロードバランサー【負荷分散装置】は、複数のサーバへアクセス要求を分散する装置です。 要求を分散することで各サーバが快適な応答速度を保つことを目的としており、 アクセスの多い大規模サイト等は、この装置により 複数のサーバに負荷を分散する事で安定な運用が可能です。

負荷分散

負荷分散とは、並列に運用されている機器間でできる限り負担が均等になるように、処理を分散し割り当てることです。 負荷分散は専用機器の使用、DNSサーバの設定、サーバに負荷分散ソフトウェアを導入することで実現できます。

Q&A

解決済

1回答

1569閲覧

負荷分散において、NginxとLVS(Linux Virtual Server)の違いがよくわかりません。

takashi31

総合スコア4

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

ロードバランサー

ロードバランサー【負荷分散装置】は、複数のサーバへアクセス要求を分散する装置です。 要求を分散することで各サーバが快適な応答速度を保つことを目的としており、 アクセスの多い大規模サイト等は、この装置により 複数のサーバに負荷を分散する事で安定な運用が可能です。

負荷分散

負荷分散とは、並列に運用されている機器間でできる限り負担が均等になるように、処理を分散し割り当てることです。 負荷分散は専用機器の使用、DNSサーバの設定、サーバに負荷分散ソフトウェアを導入することで実現できます。

0グッド

0クリップ

投稿2022/05/11 07:09

負荷分散において、NginxとLVS(Linux Virtual Server)の違いを教えていただきたいです。

調べたところNginxはOSIの第7層でHTTPベース、ユーザー空間で機能し、 Virtual ServerはOSIの第4層、カーネル空間で機能するという情報が出てきました。

機能する階層が異なることで具体的にどのような仕組みの違いが生まれるのでしょうか。。

以上、お分かりになる方がいらっしゃいましたら、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

OSI の階層の違い、ユーザー空間/カーネル空間の違いがあるというのは正しいのですが、LVS が L4 までしか扱えないので、L7 を扱うにはユーザー空間でプログラムを動かす必要があるね、という制約・事情からくるものであって、結果として違いが生じているのだと思います。
その違いがあるから仕組みが違うということではなく、プログラムの実装によります。

Nginx と LVS の違いでいうと、Nginx は「リバースプロキシ」型、LVS は「パケット転送」型です。
※「リバースプロキシ」型 vs 「ロードバランサー」型と言われることもありますが、「ロードバランサー」だと広義で負荷分散全般を指すこともあるので、あえて用語を考えてみました。

Nginx の場合

Nginx の「リバースプロキシ」の機能の場合、クライアント - Nginx 間の通信と、Nginx - Webサーバー間の通信はそれぞれ別の通信となります。

(例) Client <-(HTTPS)-> Nginx <-(HTTP)-> Web Server 1 <-(HTTP)-> Web Server 2

Webサーバーから見た接続元は Nginx です。
それぞれ別の通信なので、プロキシでプロトコルを変換(上記例では TLS あり/なしを変換)することや、中身を変更(HTTPヘッダを付加/削除など)することもあります。

LVS の場合

LVS は、クライアントから届いた IPパケットをバックエンドサーバーに転送します。
LVS-DR はそのまま転送、LVS-NAT は宛先IPアドレスを変換(DNAT)して転送します。

参考: 7. LVS: LVS-DR (ASCII の図があります)

送信元IPアドレスは変換しないので、バックエンドサーバーから見た接続元はクライアントです。
LVS はクライアントとバックエンドサーバーの IPパケットを中継しているだけで、プロトコルを変換したり、中身を変更することはしません。

その他

L7 だからすべてリバースプロキシ型かというと、そうではなく、UltraMonkey-L7 などパケット転送型もあるようです。
また、L4 でリバースプロキシ型を使うこともあります(Nginx stream モジュール、inet/xinet など)。

投稿2022/05/12 01:41

TaichiYanagiya

総合スコア12173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takashi31

2022/05/16 07:55

よくわかりました!ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問