web-dev-qa-db-ja.com

ソフトウェアロードバランサー-バックエンドサーバーに転送またはリダイレクトしますか?

私はWeb開発者ですが、最近、ロードバランサーを使用する必要が生じました。私はこの分野で新しいです。使用するLBを選択しましたが、それほど重要ではありません。HAProxyには、私が調査した限り、必要なすべての機能があります。

私の懸念は、ソフトウェアベースのロードバランサーでは、ユーザーをバックエンドサーバーに「リダイレクト」せず、ロードバランサーが中央に留まるため、すべてのトラフィック帯域幅とtcp接続が中央に留まるということです。私はそれを正しく理解しましたか?

前の質問で「はい」の場合、ロードバランサーがクライアント-バックエンドサーバーの中間に留まらないように解決策を作成するにはどうすればよいですか?

また、webappはセッションを使用するため、「ソース」lbタイプが必要です。また、ユーザーは、使用していたのと同じサーバーに接続する必要があります。

前もって感謝します。

4
Festim Cahani

client -> serverまたはserver -> clientの場合、ほとんどのトラフィックがどちらの方向に流れるかはわかりませんが、それより遅い場合は、 少なくともチェックアウト)を使用することに興味があるかもしれません。 Linux Virtual Server(LVS) これは

スケーラブルなWeb、キャッシュ、メール、ftp、メディア、VoIPサービスなど、スケーラブルで可用性の高いネットワークサービスを構築するために使用できる高度な負荷分散ソリューション。

(ウェブサイトからの抜粋)。

/クライアントへの「間に何か」を付けずにバックエンドサーバーのトラフィックを直接取得するには、 直接ルーティング を使用します。このリンクでより多くの情報を見つけることができますが、これがどのように見えるかを知るために:

Linux Virtual Server Direct Routing

さて、あなたは言うことができます...まあ、これは理論的には素晴らしくて派手に聞こえますが、さあ、ウェブサイトは「最新のプレスニュース... 2012年8月8日水曜日」と読みます...私たちは今2016年にいます。はい、あなたは完全に正しいでしょう、それ以外にLVSは証明されており、堅実です...少なくとも見てみることをお勧めしましたか?

ウィキメディア財団 使用しています 、他の多くの人と同じように、これが2010年のセットアップを示す最後の画像です。

Wikimedia Foundation Network 2010

3
gf_

ソフトウェアに関しては、haproxyは優れた実績のあるソリューションです。

正しい負荷分散を実現する方法はいくつかあります。

IPハッシュバランシング

ソースIPに応じて、宛先サーバーはソースIPのハッシュを使用して計算されます。したがって、1つのIPからのすべての要求は、(ダウンしていない限り)常に同じサーバーに到達します。

このオプションは、JWTを使用できないプロジェクトで使用します。

Cookieマークアップ

Webサーバーまたはロードバランサーは、サーバーをマークする1つの追加のCookieを返します。これは、このユーザーからのその他の要求を処理することになっています。

サーバー間でCookieを共有する

このオプションはインフラストラクチャが複雑になり、セッションストレージに注意する必要があるため、個人的には避けたいと思います。

JSON Webトークン(Cookieでのセッション)

セッションはCookieに保存されるため、セッションはまったく気にしません。したがって、サーバーがサーバーAまたはサーバーBであるかどうかに関係なく、サーバーがすべての要求を処理できるわけではありません。私にとっては、これはWebアプリケーションの大部分に最適なソリューションですが!あなたが何をしているのかを理解しなければならないので、ここには大きな警告があります。


前の質問で「はい」の場合、ロードバランサーがクライアント-バックエンドサーバーの中間に留まらないように解決策を作成するにはどうすればよいですか?

これも可能です。単にサブドメインを使用するだけです。ユーザーがwwwに到達すると、ユーザーがs1.domain.tldまたはs2.domain.tldにリダイレクトされるかどうかが決定されます。

私は過去にこのソリューションを数回見ましたが、最近のアプリケーションはこれを使用していません。例:ボットのインデックスを作成するための重複ページを作成します。

バランサーを取り除き、ネットワークレベルでECMPを使用することもできますが、構成はかなり複雑です。私は個人的にロードバランサーにとどまります。

1
Yarik Dot