0

Tomcat の高可用性を検討しています。
Tomcatでクラスターを実行でき、ロードバランサーとしてApache httpを使用できると読みました。
次のことが理解できません。
負荷分散用のモジュールであるはずの Apache http は、Tomcat サーバーとは別のマシンにインストールされるはずですか?
たとえば、3 つの tomcat サーバーをクラスターにする場合、3 つすべてに http をインストールする必要がありますか? それとも他のサーバーで?
また、高可用性のために Linux 機能を使用した場合の違いは何ですか?

4

2 に答える 2

3

一般に、Apacheを別のマシンに実装する必要があるという制限はありません。実際には、おそらくそれをしたいと思うでしょう。

Apacheをロードバランサーとして使用できるため、すべてのリクエストがapacheに送信され、ポリシー(ラウンドロビンなど、どのTomcatにいつディスパッチするかを決定するアルゴリズム)に従ってクエリがTomcatにディスパッチされます。

1つのapacheをインストールする必要があり、3つのtomcat(任意の数のtomcat)と通信できます。

ところで、Apacheのようなソフトウェアベースのロードバランサーである必要はありません。代わりに、ハードウェアロードバランサーを使用できます。


Apache = httpdは、httpリクエストを受け入れ、(とりわけ)それらをtomcatにディスパッチできるWebサーバーです。

TomcatはJavaで記述されたWebサーバーでもあり、JavaWebアプリケーションを実行することを目的としています。

したがって、全体的なスキーマは次のようになります。

client --> Apache (host a) ________  tomcat1 (host b)
                          |________  tomcat2 (host c)
                          |________  tomcat3 (host d)

ハードウェアロードバランサーに関しては、これらはSisco、F5などのさまざまなメーカーのボックスです。

お役に立てれば

于 2012-11-26T08:52:05.557 に答える
1

HA を実現するには、ユーザーは要求を送信した DNS 名 / IP アドレスからの応答を常に持っている必要があります。

これを実現する方法は複数あり、相互に排他的ではない方法もあります。

ボックスの最初のツールは、いわば DNS ラウンド ロビンです。

これは、DNS エントリに単一の IP アドレスではなく、IP アドレスのリストがある場所です。DNS レコードの各クエリは、異なる順序でリストを返します。DNS ラウンド ロビン対応のクライアント ブラウザは、最初のエントリを試行し、他のエントリに順番にフォールバックします。DNS ラウンド ロビンに対応していないクライアント ブラウザは、最初のエントリのみを試行します。これは一種のロード バランサーとして機能し、DNS ラウンド ロビン対応のクライアント アプリケーションでは、自動フェールオーバーの形式が得られます。

ボックス内の次のツールは、Apache HTTPD や Nginix などのロード バランサーです。これらは、クライアントが見るフロント エンドとして機能します。それらは状態を認識しているため (できれば構成してください)、どの Tomcat サーバーが稼働しているか、どの Tomcat サーバーが停止しているかを認識し、クライアント要求を容量があり稼働しているサーバーにルーティングします。

したがって、HAが必要な場合。Tomcatサーバーをクラスタ化することから始めます...それにはおそらくクラスタ用のセッションストアが必要です...そのため、DBを使用してセッションストアを保持します...次に、フェイルオーバーの場合にそのDBをクラスタ化します...次にただし、Tomcat インスタンスの前にあるロード バランサー...次に、ロード バランサーで障害が発生した場合に備えて 2 つ目のロード バランサーを追加します...次に、DNS ラウンド ロビンを使用してロード バランサー間のバランスを取ります...

ARP ブロードキャスト IP アドレス テイクオーバーを使用して、DNS ラウンド ロビンの代わりに、または DNS ラウンド ロビンに加えて、ロード バランサーをすばやく置き換えることができます。

次に、地理的冗長性について考え始めます...薬局に行き、アスピリンのボトルを購入します!

忘れる前に、これをすべて同じハードウェアで実行できないということは何もありません...プロセスがCPU/メモリ/ディスクを盗むリスクと、ハードウェア障害のリスクを冒すだけです。

取得できる最も基本的な回復力のある HA は 2 台のマシンで、両方とも DB クラスターを実行し、両方で Tomcat クラスターを実行し、両方でロード バランサーを実行し、両方ともアプリケーションの DNS 名の DNS ラウンド ロビン エントリとして構成されます。

于 2012-11-26T08:57:00.250 に答える