Webアプリケーションのセットアップ負荷分散環境にどのような最高/正しい方法?

StackOverflow https://stackoverflow.com/questions/375787

質問

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

ITハードウェアサポートチームは私がメインのWebアプリケーションの隣に座って1ページのWebアプリケーションを作成したいと考えています。私はこの小さな1つのページのアプリがデータベースを呼び出し、INSERT、UPDATEを行うには、テーブルの上にDELETEべきであると言われました。そして、アプリが順番にロードバランサを読み取って回転にこのWebサーバを維持するかどうかを決定することができるであろうステータスコードを返す必要があります。このアプリは、負荷分散サーバのすべての上に存在する必要があります。 1ページのアプリは、ロードバランサが5秒ごとにポーリングされます。

私は、これは絶対HACKのように聞こえると思います。これは、データベース上の不要な作業とオーバーヘッドのように聞こえます。ハードウェアチームは、これは行くための正しい方法であることを私を説得しようとしています。私は完全に同意します!私の引数は、ロードバランサは、データベース接続を気にしてはならないということです。私たちは4つのWebサーバ間で負荷を分散しようとしています。もう一つ注意すべきは、メインのWebアプリケーションがデータベースに接続せずに無用であるということです。

ロードバランサ自体は、サーバが回転するかどうかを決定するための方法がありますか?これを実行するための正しい方法は何ですか?

役に立ちましたか?

解決

私はそれがハックであると信じています。ロードバランサはちょうどJWMillerが言ったように、ロードバランサに戻るには、単純なHTMLページを使用する必要があります。我々は、すべての我々のアプリaccrossこのアプローチを使用しています。 データベース接続を確認し、リモート処理サービスなどは、アプリケーションヘルスの仕事であると別の関数である必要があります。

他のヒント

読むスケーラブルなインターネットアーキテクチャでます。

バランサはWebサーバを見ることができます。 Webサーバがアップ表示されますが、データベースに話すことができない(と言うので、Apacheが実行されているが、アプリが壊れている)場合は、アプリケーションが壊れているとき、あなたは要求を取得し、応答しないサーバーに問題があるでしょうます。

私たちはいくつかのステータスを返しセルフテストアプリを持っています。現在、デバッグに使用します。将来的には、他のHAおよび負荷分散ソリューションで使用される。

私はいつもWebサーバ上の実際の簡単なHTMLページを置きます。 status.htmlからのHTTPステータスが戻って200が来る場合は、Webサーバーを一時停止し、ない場合には、回転中にサーバーを維持ます。

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

これはハックが、<強い/>のウェブサーバーのハートビートをチェックする一般的な方法ではありません。しかし、そのページにデータベースを照会することは議論があります。たとえば、DBのタイムアウトの場合は、クラスタ内のノーWebサーバで終わることがあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top