web-dev-qa-db-ja.com

WindowsベースのWebサーバー用の冗長ロードバランサー?

以下の設計の技術的な詳細を理解しようとして問題が発生しています。特に冗長ロードバランサーの領域で。

WebサーバーはWindowsServer 2003 R2 64を実行しており、IISを介して.NETアプリケーションにサービスを提供します。データベースサーバーは、SQL Server2008を備えたSQLServerフェールオーバークラスターでWindowsServer 2008 Enterprise 64を実行しています。現在、2つのWebサーバーと2つのデータベースサーバーがあります。

私が達成しようとしていること:

  • ロードバランサーがダウンした場合の自動冗長フェイルオーバー。
  • ユーザーを中断することなく、メンテナンスのために負荷分散された組み合わせからWebサーバーをシームレスに取り出す機能。アプリケーションの動作方法が原因で、これがどの程度可能かはわかりません。ユーザーは、シフト全体でアプリケーションにログインしていると言う傾向があります。
  • 必要に応じてWebサーバーをスケールアップする機能(ライブで行う必要はありません)。

これは純粋なマイクロソフトのショップです。そのため、残念ながら、標準のLinuxツールは利用できません。

私が試したこと:

  • Microsoft NLB(ネットワーク負荷分散サービス):これは単純なソリューションでは比較的うまく機能し、Webサーバー上で実行されるだけなので、非常に費用対効果が高くなります。しかし、私はこのサービスを上記の要件を満たす方法をまだ見つけていません。負荷分散されたミックスからシステムを削除しようとするたびに、負荷分散されたurl/ipにリクエストを送信するクライアントは、引き続きオフラインマシンに転送しようとします。これは、特にユーザーがこれらのシステムを介して顧客の支払いを送信することを考えると、大きな問題を引き起こす可能性があります。たぶん私たちはここで何か間違ったことをしています...

デザイン:

enter image description here

それで、上記のすべてを考えると、Microsoft NLBが唯一の答えですか?それとも、私たちの状況に利用できるより良いツールはありますか?

2011年4月21日編集

迅速なフィードバックをありがとう。いくつかの点を明確にするために:

  • これらはイントラネットWebサーバーです。彼らはインターネットに触れません。これまで。
  • 上司にLinuxサーバーのペアをデプロイさせるよう説得するのはそれほど難しいことではありません。彼女はLinux環境への障害ではありません-それは私たちのスタッフです。彼らの唯一のスキルセットはWindowsです。 Linuxサーバーをデータセンターに導入し始めると、私の社会生活は死んでしまいます。 ;-)
  • 私は最終的に、負荷分散Webサーバーの「マイクロソフトの方法」を探していると同時に、負荷分散サブシステムに冗長性を提供しています。それが本当にMicrosoftのNLBサービスであるなら、まあ...多分私はそれについて新しい質問を始めるべきです。 :)
  • それがより良い(または唯一の)解決策である場合、私はハードウェアロードバランサーを受け入れます。
4
Cypher

必要なものは Microsoft Application Request Routing 2(ARR )。(不器用な名前が理由の一部である可能性があります人々はその存在を知っていますか?)

Microsoft ARRは、無料のHTTPレイヤーロードバランサーであり、IIS 7+のモジュールとして実装されます。(ARR自体は無料ですが、基盤となるWindowsServerライセンスはもちろん必要です。 OS。)

ARRはIISの上にある単なる薄いシムであるため、非常に高速で完全に堅牢です。また、ARRの管理は、すでにIISショップであるため、皆さんにはおなじみです。ARRは、IIS ManagerGUIにインストールするだけです。

真の高可用性セットアップの場合、あなた NLBとARRを組み合わせる必要があります これにより、NLBはARRサーバー層の可用性を高く維持します、およびARRは、バックエンドWebサーバー層の高可用性を維持します。 Microsoftのドキュメントを参照し、上部にリンクされているARRの概要ページの最後にあるドキュメントの長いリストを参照してください。

ARRの唯一の本当の欠点は、真の高可用性を実行する場合、少なくとも2つのWindowsServerライセンスと物理サーバーが必要になることです。それとセットアップにかかる時間を考えると、 Coyote Pointloadbalancer.org のようなローエンドのロードバランサーアプライアンスが費用効果の高い代替手段になることがあります(または、ケンプ、バラクーダネットワークス、またはその他のローエンドベンダー)。

ユーザーを中断することなく、メンテナンスのために負荷分散された組み合わせからWebサーバーをシームレスに取り出す機能。

これは、セッション状態の処理方法、つまり、バックエンドサーバーが「このユーザーがログインしている」情報を共有する方法と共有しない方法によって異なります。

Webapp層がステートレスの場合(つまり、セッション状態を共有データストアに配置し、共有RAMキャッシュまたはMSSQL)をfxする)、サーバーをプールからプルできます。そうでない場合は、ロードバランサーで「スティッキーセッション」を使用し、ロードバランサープールからバックエンドサーバーを削除してから、すべてのユーザーが問題のサーバーを「ドレイン」するまで待つことができます。

HAProxyの作者であるWillyTarreauは、 負荷分散の手法と問題の概要はこちら です。

4
Jesper M

ショップがMicrosoftのみのソリューションに完全に対応している場合、ForeFront Threat Management Gatewayには、負荷分散を行う「サーバーファーム」機能があります( リンク )。専用のハードウェアロードバランサーほど機能がないか、利用可能なLinuxスタックソフトウェアほど構成可能ではありませんが、いくつかのユースケースではそこに到達します。そして重要なことに、それはおそらくどこかのマイクロソフト契約価格表に載っているでしょう。

TMGは、NLBを介してそれ自体の負荷を分散できます。

1
sysadmin1138

特定の回答が「良い」回答である場合でも、組織内でログインすることを恐れないのがあなただけであれば、それを永久に所有することになります。そして、他の誰もが、水不足で死んだ机の上の茶色の植物を含め、すべての恐ろしい外国の装置を非難するでしょう。

私は、モノグロットのシステム管理者がWebGUIを使用したものにそれほど脅迫されていないことを発見しました。 (それが実行されているLinuxカーネルについて彼らに話す必要はありません)。 F5、Brocade/Foundry ServerIron、Cisco CSS、CoyotePointなどの商用アプライアンスはどうですか?私たちはServerIronのHAペアを使用しており、過去にCSS/Arrowpointsを使用しました。

1
AndyN

まだ販売されている古いソリューションは、あなたがやりたいことを行う共鳴中央ディスパッチです。要件に「無料」が記載されていないことに気づきました。そのため、Cisco、F5、Foundryなどから、必要なことを実行できる商用ソリューションを入手できました。

0
mahnsc

この場合は何もないので、マイクロソフトのみのソリューションについてあなたが言ったことは無視します。ハードウェアボックスを購入するか、vmwareESXi上で仮想マシンを実行します。後者を仮想KEMPロードバランサーとともに使用します。

0
pauska

Barracudaは、機能が完全で使いやすいハードウェアロードバランサーをリストに追加します。

0
gravyface