web-dev-qa-db-ja.com

Windowsで最も効果的な負荷分散ソリューションは何ですか?

このため、私は特にWindowsで実行されているWebサイトについて言及していますが、IISに固有のものではありません。 Tomcatを実行することもあります。ここでは明らかに多くのハードウェアとソフトウェアのオプションがあり、スティッキーセッションやWebアプリに固有の状態など、Windowsの世界で考慮すべき点がたくさんあります。

したがって、私が探しているのは、ハードウェアまたはソフトウェアベースの効果的な負荷分散戦略と、これに関連するビジネスコストを正当化する理由に関する優れた経験です。

ありがとう

更新:

Paulからのより深い調査の質問に応えて、私は個人的に最も負荷の少ない負荷分散を探しており、間違いなくセッションのフェイルオーバーを使用しています。現在、この種のことは、Memcachedなどのようなものでも処理できます。 SSLの終了は、ハードウェアとソフトウェアのどちらのルートを使用するかによって大きく異なりますが、それなら私自身の質問に答えたほうがよいでしょう。

ボリュームは、悪名高いフェイルホエールをユーザーに提示することなく、うまくいけば指数関数的に成長する計画のスタートアップから何でもかまいません...

この質問は、WindowsでWebサイトを実行するために、過去にどのような負荷分散戦略が効果的であったかを具体的に尋ねています。提案する戦略が、たとえばロードバランサーでSSLターミネーションが発生するハードウェア負荷分散であり、それがなぜあなたにとって良い戦略であることが判明したのかを詳しく説明する場合、それは私の質問に答えるのに役立ちます。今のところ、私はさまざまな方法や代替案について十分な経験がないので、私の質問です。

4
RobertTheGrey

前述のscevansのように、負荷分散はWindowsNLBで確実に実行できます。ほとんどのWindowsWebショップはそのように始まっていると思います。そして、何人かはそれを無期限に使い続けます。

NLBのパフォーマンスが低いというのはよくある誤解ですが、パフォーマンスの観点から見ると、実際には半分悪くはありません。 NLBは、比較的安定していて活発に開発されていないアプリケーションなど、いくつかの用途に非常に適しています。 NLBが失望し始めるのは状態チェックですが、NLBは基本的にアプリケーション層を完全に認識していません。したがって、ある時点で、JVMまたはIISワーカープロセスが爆発し、 NLBは、壊れたサーバーがリッスンしていることを引き続き確認し、アップサーバー上のダウンアプリケーションにリクエストを適切にルーティングし続けます。これは明らかに悪いことです。

これは、専用のWebロードバランサーが独自に登場し始める場所の一種です。それらのほとんどすべてが、ラウンドロビン、最小接続、およびそれらの両方の加重バージョンから、さまざまなバランス方法をサポートしています。

各サーバー上の各アプリケーションのヘルスチェックページを指定できることで、新しいレベルの信頼性がもたらされ、ロードバランサーがより適切な決定を下せるようになります。アプリケーションに応じて、ヘルスチェックページは通常専用に作成する必要があります。ヘルスチェックページでデータベースサーバーをすばやくポーリングして、データベース接続が機能していることを確認するのが好きです。この呼び出しは非常に安いはずです。DBウィザードがこれを提供します。「Select1」だと思いますが、間違っている可能性があります。呼び出しが成功すると、テストページにサーバー識別子が表示されます(このページを使用して、スティッキーが有効なファームでスタックしているサーバーを確認します)。とにかく、ロードバランサーはこれを1分間に数回ヒットし、失敗しない限り、応答ファイルを解析します。そのページが何らかの理由で失敗した場合、サーバーはローテーションから削除されます。これは、Webサーバーを管理する人々がロードバランサーの専門知識/アクセス権を持っていない状況でも便利です。ヘルスチェックファイルの名前を変更するだけで、展開やトラブルシューティングの目的でサーバーをローテーションから簡単に引き出すことができます。ほとんどのロードバランサーは、申し訳ないサーバーで構成することもできます。ファーム内のすべてのノードでヘルスチェックが失敗した場合、ユーザーは(静的)メンテナンスページを含む別のサーバーに送信されます。

ロードバランサーでのSSLターミネーションも便利です。一部のロードバランサーはヘルスチェックのためにHTTPSを話さないため、状況によっては、SSLをオフロードすることが、上記のすべてのクールなヘルスチェック関連機能を利用する唯一の方法です。 SSLをオフロードすると、WebサーバーのCPUサイクルが解放され、暗号化/復号化ではなくWebを提供できるようになりますが、私にとって大きなメリットは、トラブルシューティングとSSL管理にあります。プラットフォームとツールによっては、サーバーの大規模なファーム全体でSSL証明書を管理することは非常に簡単ではありません(msdeployは最新のリリースまでSSL証明書をサポートしていませんでした)。通常、2台のロードバランサーに証明書をインストールする方が、10台以上のサーバーよりも高速で簡単です。また、トラブルシューティングにも非常に役立ちます。パケットレベルまで掘り下げて、Webサーバーに送信されているものをスヌープする必要があるという非常に奇妙な問題が発生することがあります。オフロードされたSSLを使用すると、そのトラフィックはすべてプレーンテキストになり、分析が非常に簡単になります。注:これは、ロードバランサーとサーバー間のネットワークセグメントが安全である必要があることも意味します。

フェイルオーバーに関しては、非常にやむを得ない理由がない限り、アプリケーションはスティッキーセッションを必要としないように設計する必要があると思います。 .NETの世界では、これは通常、セッション状態をすべてのノードのSQLサーバーに送信するようにアプリケーションを構成し、すべてのセッションオブジェクトがシリアル化可能であることを確認するのと同じくらい簡単です(最初に回したときに大きなエラーが発生しますそうでない場合はオンにします)。この構成で実行している場合、サーバーをローテーションから削除し、変更を加えてローテーションに戻すだけで、ユーザーに影響を与えることなく、いつでもWebサーバーで作業できます。セッションデータはすべてSQLに一元的に保存されるため、どのノードが要求に応答するかは関係ありません。

ソフトウェア対ハードウェアおよびコストの正当化に関しては、それは少しトリッキーです。あなたが予算を持っているなら、ハードウェアバランサーは素晴らしいです。ハードウェアで作業を行う方が明らかに高速であり、さらに重要なことに、ハードウェアベンダーから得られるサポートは一般的にはるかに優れています。最近、ソフトウェアバランサーはますます多くの機能を完成させています。

私の経験のほとんどはF5-BigIP、Cisco Arrowpoint/CSS、およびCiscoACSラインでの経験です。私は最近、予算内で私のコンサルティングクライアントのためにIIS7アプリケーションリクエストルーティング(ARR)を調べ始めました。予備のハードウェアとWindowsのライセンスがある場合は、費用はかからず、機能はかなり充実しているように見えます。それがどのように積み重なるのか興味があります。 ARRはこちら に関する詳細情報を見つけることができます。

より具体的な情報が必要な場合はお知らせください

5
Dominic D

私はWindows負荷分散サービス(WLBS)の大ファンです。大規模なサイトを処理するのは仕事ではないと言う人もいるかもしれませんが、どういうわけかMicrosoftはMicrosoft.comでそれを機能させることができるので、私はそれらのステートメントに同意しない傾向があります。

5
Steve Evans

「効果的」をもう少し定義する必要があると思います。

どのような負荷分散を行いたいですか?ラウンドロビン、最小負荷、地理的負荷分散?

パケットインスペクション(レベル2/3、またはレベル7ディープパケットインスペクション)にどの程度深く入りたいですか?

セッションフェイルオーバーが必要ですか?

どんなボリュームを話しているのですか?

SSL終了はどこで行いますか?

オプションは、単純なWindows NLBから、SSLアクセラレータを備えたハードウェアロードバランサーのグローバルに分散された冗長アレイまであります。 「最も効果的」に対する最良の答えはありません

2

冗長ハードウェアを備えたハードウェアロードバランサーソリューションをお勧めします。また、SSLターミネーションポイントとしてロードバランサーを使用します。セッションフェイルオーバーは処理しません。それはWebサーバーに依存しています。たとえば、セッションフェイルオーバーを処理するようにWeblogicサーバーを構成するために使用します。

2
K. Brian Kelley

HAProxy 。非常に信頼性が高く、安全で、多くの大きなシステムを実行します。 Webページには、一般的な負荷分散に関する多くの情報があり、ターンキーシステムを提供する会社がいくつかあります。例: Loadbalancer.org

1
gbjbaanb

あなたが安くてタスクが小さい場合は、小さいながらも効率的なJavaディストリビューターと呼ばれるロードバランサー(Sourceforce-distributor.shourceforce.com)私は管理者および開発者です-それは無料で簡単ですセットアップと実行、バックエンドサーバーの監視、フェイルオーバー、サーバーの回復後の再開を行います。

それを試して、あなたの考えを教えてください!

もちろん、1時間に何百万ものヒットがある場合、これはハードウェアの負荷分散ではありません!!!!

ポール

0
Autobyte