レイヤー4とレイヤー7の負荷分散


21

データセンターにレイヤー4の負荷分散ソリューションを使用するか、レイヤー7のソリューションを使用するかを決定しようとしています。残念なことに(つまり、私の正気のために)、私のユースケースは両方のソリューションがうまく機能するのに十分なほど単純であり、ほとんどの弱点を回避し、他の長所を実際には利用しません。最終的にどのソリューションを使用するにしても、高い可用性と高いスループットが必要です。ただし、Webサーバーのクラスターでの負荷分散にのみ使用することを計画しています。これらのサーバーには、 "スティッキー"セッション管理(CookieまたはIP)、複雑な書き換えルール、または、すべて。

ロードバランサーは2つのスイッチに接続され、どちらもデータセンターアグリゲーションレイヤーまで独立して接続され、ラピッドスパニングツリーとスイッチが仮想化に使用する独自のプロトコルを使用してマージされます。ロードバランサーは、クロスケーブルを介して相互にクロスリンクされます。クラスタ内のすべてのサーバーが両方のスイッチに接続されています。ロードバランサーがしなければならないことは、それらにトラフィックを向けることだけです。

HTTPであるため、HAProxyやnginxなどのレイヤー7負荷分散ソリューションを使用できます。しかし、ldirectordやkeepalivedなどと一緒にLVSプロジェクトを使用することもできます。

私は彼らが見ているように長所と短所を分割しようとしましたが、それはちょうど洗い流されてしまいます。何をお勧めしますか?その理由は何ですか?何か不足していますか?

回答:


17

haproxyのような「L7」の有用な利点の1つは、Cookieを使用して、同じブラウザーが同じバックエンドサーバーにアクセスし続けることです。これにより、クライアントヒットのデバッグがはるかに簡単になります。

L4バランシングは、複数のバックエンドサーバーで1人のユーザーをバウンスさせる場合があります。(場合によっては有利かもしれませんが、デバッグ/プロファイリングの意味では、「L7」を使用するほうがはるかに価値があります。)

編集:HTTPバランシングを使用すると、潜在的な速度の利点もあります。キープアライブを使用すると、クライアントはバランサーへの単一のTCPセッションを確立し、新しいTCPセッションを再確立する必要なしに多くのHITを送信できます(3ウェイハンドシェイク)。同様に、多くのLBはバックエンドシステムへのキープアライブセッションを維持し、バックエンドで同じハンドシェイクを行う必要性を取り除きます。

厳密なTCPロードバランシングでは、これらの両方を簡単に達成できない場合があります。

/ * FWIW:「L7」または「L4」とは言わず、HTTPまたはTCPと言います。しかし、私はOSIを使用して、一致しないものを説明することを避けることにこだわりを持っています。* /

基本的に、何を展開するかわからない場合は、シンプルで自然な感じで進んでください。テストし(Apacheベンチを使用しますか?)、ニーズに合っていることを確認します。私にとってHTTP LBはより自然です。


CookieベースまたはIPベースのスティッキネスは、確かにL7スイッチングの利点です。しかし、アプリケーションが特に利用できるものではありません。
書士

HTTPレベルのロードバランシングの欠点の1つは、2つの間のフェールオーバーを有効にするために、HTTPバランサーの前にTCPレベルのロードバランサーが必要になることではないでしょうか。
書士

@Scrivener-すべきではない、いや。ラウンドロビンDNSは、あなたの質問を誤解しない限り、私が信じていることの面倒を見ることができます。
mfinni

@mfinni:グローバルな地理的DNSは、データセンターごとに1つのIPを指すことができます。そのIPに応答するものが必要です。
書士

そうですか。まあ、それはあなたのデバイスの能力に依存します。おそらく、ハードウェアTCP / IPロードバランサーを必要としない単一のクラスターVIPとペアで動作するL7対応デバイスを見つけることができます。IISとMS Windows NLBでできるなら、他のほとんどの商用製品でもできると思います。
mfinni

4

L7バランシングを行うことによる利点がないため、代わりにL4バランシングを採用します。私はそれをできるだけ犠牲にすることなく、できるだけシンプルに保つことの大ファンです。

L7では、バランサーが適切なルーティングのために通過するパケットのhttpヘッダーを検査する必要があります。これにより、オーバーヘッドが増加し、エンドユーザーのレイテンシがわずかに増加します。あなたがそれによって何も得られないなら、それは無意味な費用のようです。


0

一部のDNSプロバイダーには、単純なフェールオーバー機能があります。要件が何であり、何であるかについては言及していませんが、何かがダウンした場合に必要なのはフェイルオーバー付きのラウンドロビンだけであれば、たとえばzoneedit.comのFailoverを使用できます。HAのニーズに応じて、それで十分である場合があり、アーキテクチャ内の層全体をスキップできます。


私はそれがそんなに簡単だったことを望みます-フェイルオーバーを伴うラウンドロビンのようなものに加えて、地理的な分離が必要です。ただし、それはすべて外部の会社によって行われているため、問題にはなりません。
書士

あなたはどういう意味ですか?DNSは外部の会社によっても行われていることを意味し、それらの一部はDNSサービスとして地理的負荷分散とフェイルオーバーの両方をサポートしています-または、あなたとDNSプロバイダーの間に追加のサードパーティがあることを意味します、または、DNSを介して直接発言権がないということですか?
アーネストミューラー

前者-さまざまなデータセンターへのフェールオーバーと地理的負荷分散を行っている外部企業と既にDNSを行っています。データセンター内で負荷分散するだけです。
書士

フロントエンドのサーバーごとに同じラウンドロビンを使用できますか?ラウンドロビンロードバランシングのDNSは、単一のデータセンターでよく使用されます。それに加えて、複数のジオロケーションは大きな要件です。
アーネストミューラー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.