-3

それぞれに同じアプリケーションを持つ4つのサーバーがあります。ネットワーク上のロード バランサーは単純なラウンド ロビンです。問題は、アプリの 1 つがダウンしている場合でも、ロード バランサーがそのアプリに接続しようとして、ユーザーに http エラーを返すことです。

あるサーバーを呼び出し、エラーが発生した場合に次のサーバーを呼び出すことができる javascript の方法はありますか?

ありがとう

4

2 に答える 2

3

ここでの本当の答えは、ロードバランサーを修正または交換することです。なぜなら、死んだサーバーに呼び出しをルーティングするロードバランサーは役に立たないからです... :-)

しかし、あなたが実際に尋ねた質問に答える:

短い答えはおそらく「いいえ」ですが、読み進めてください。

長い答えは、「電話」の意味に依存する可能性があるということです。ajax 経由でサーバーを呼び出す場合は、クロス オリジン リソース共有をサポートするようにサーバーをセットアップする必要があります (また、ユーザーはそれと互換性のあるブラウザーを使用する必要があります)。 SOP。しかし、これを行うと、基本的には、負荷分散されたアドレスへの ajax 呼び出しに応答してエラーが発生した場合、特定のサーバー アドレスを使用して再試行することになります。

画像のロードとほぼ同じことができます (error特定のアドレスで再試行することでイベントに応答します)。

しかし、ユーザーが負荷分散されたアドレスへのリンクや他のいくつかのもののいずれかをたどっているだけの場合、それは役に立ちません。

于 2013-03-29T13:58:10.090 に答える
0

ロード バランサーによっては、他のホストが利用できない場合に他のホストにフェールオーバーする機能が必要です。通常、ステータス ページ (Web ベースの場合) または監視するポートをセットアップし、それが利用できない場合、ロード バランサーはプールからホストを自動的に削除し、すべてのセッションを他のホストに転送します (これも、 Web ベースのアプリケーション)。

これを試すための次のレイヤーは、サーバー レベルになります。これが Web ベースのアプリケーションである場合、ほとんどの Web サーバーには、他の Web サーバーにフェールオーバーするために使用できるハートビート機能が付属しています。

他のオプションが利用できない場合、クライアント側で行うことは(サーバーでコンパイルされたJSについて話している場合を除き)最後の手段になります。ただし、さらにサポートを提供する前に、アプリケーションに関する詳細情報が必要です。

于 2013-03-29T14:00:07.487 に答える