2

4 つの Web サーバー間で負荷を分散する必要がある Web アプリケーションを開発しています。私の会社は、ロード バランサ ハードウェア (Cisco) を購入しています。Web サーバーをローテーションに含める必要があることをロード バランサーに伝える方法には混乱があります。

IT ハードウェア サポート チームは、メインの Web アプリケーションの隣に配置する 1 ページの Web アプリケーションを作成するように私に求めています。この小さな 1 ページのアプリは、データベースを呼び出して、テーブルに対して INSERT、UPDATE、および DELETE を実行する必要があると言われました。次に、アプリはステータス コードを返す必要があります。これをロード バランサーが読み取って、この Web サーバーをローテーションに保持するかどうかを判断できます。このアプリは、負荷分散されたすべてのサーバーに常駐する必要があります。1 ページ アプリは、ロード バランサーによって 5 秒ごとにポーリングされます。

これは絶対的なハックのように聞こえると思います。データベースの不要な作業とオーバーヘッドのように思えます。ハードウェア チームは、これが正しい方法だと私を納得させようとしています。私は完全に同意しません!私の主張は、ロード バランサーはデータベース接続を気にするべきではないということです。負荷を 4 つの Web サーバーに分散しようとしているだけです。注意すべきことの 1 つは、メイン Web アプリケーションはデータベース接続なしでは役に立たないということです。

ロード バランサー自体に、サーバーをローテーションに含める必要があるかどうかを判断する方法がありますか? これを行う正しい方法は何ですか?

4

4 に答える 4

2

スケーラブルなインターネット アーキテクチャを読んでください。

バランサーは Web サーバーしか見ることができません。Web サーバーが表示されてもデータベースと通信できない場合 (たとえば、Apache は実行されているがアプリが壊れているため)、アプリが壊れているときに応答しないサーバーがリクエストを取得するという問題が発生します。 .

何らかのステータスを返すセルフテスト アプリがあります。現在、デバッグに使用されています。将来的には、他の HA および負荷分散ソリューションで使用される予定です。

于 2008-12-17T19:51:30.343 に答える
1

私はいつもウェブサーバーにシンプルな HTML ページを置いています。status.html からの HTTP ステータスが 200 に戻る場合は、サーバーをローテーションに保ちます。そうでない場合は、Web サーバーを一時停止します。

DB が激しくダウンした場合はどうなりますか? 復元中は、「申し訳ありませんが、すぐに戻ってきます」というステータス メッセージを表示できるはずです。ロード バランサーも再構成する必要はありません。DB なしで実行できるアプリケーションの部分はありませんか?

于 2008-12-17T19:51:17.473 に答える
1

ハックだと思います。JWMillerが言ったように、ロードバランサーは単純なhtmlページを使用してロードバランサーに戻る必要があります。私たちはすべてのアプリでこのアプローチを使用しています。データベース接続、リモート サービスなどのチェックは、アプリケーションのヘルスチェックの仕事であり、別の機能である必要があります。

于 2008-12-17T20:41:19.433 に答える
1

これはハッキングではありませんが、Web サーバーのハートビートを確認する一般的な方法です。ただし、そのページでデータベースにクエリを実行することは物議を醸しています。たとえば、DB タイムアウトの場合、クラスター内に Web サーバーがなくなる可能性があります。

于 2008-12-17T20:29:23.310 に答える