アクティブ/パッシブ方式を使用して、アプリケーションの可用性を高めようとしています。現在、アプリケーションをTomcatサーバーにデプロイしています。このサーバーは、WindowsまたはLinuxプラットフォームでホストできます。
そこで、2台のTomcatサーバーにデプロイします。各サーバーは別々のマシンで実行されます。セッションレプリケーション(DBへの保存)を提供するTomcat構成を介して、Tomcatを同じクラスターに構成します。リクエストをリダイレクトするためにいくつかのWebサーバー/ロードバランサーを使用しています(まだ決定されていません)。
問題は、アプリケーションが現在ステートフルであるため、両方のTomcatで同時に実行できないことです(そして、ステートレスにするのはコストがかかりすぎます)。実際には、同時に1つのTomcatのみが起動する必要があります。または、少なくとも、Tomcatで開始されるアプリケーションは1つだけです。
要約すると、次のことができるソフトウェアが必要です。
- HTTPリクエストを介してアプリケーションの無効な状態を特定します(マシン/ Tomcatがダウンしているか、アプリケーションが応答しない)。
- 他のアプリケーションが無効であると識別されたら、TomcatインスタンスまたはアプリケーションをTomcatで起動します。
- 無効であると識別されたら、TomcatインスタンスまたはTomcat上のアプリケーションを停止します。
- LinuxとWindowsの両方のプラットフォームをサポートしています...
この製品は、JVMで使用されるライブラリである場合があり、Tomcatマシン上に存在し、相互に通信する個別の監視プロセスである場合があり、Tomcatと通信する場合は、DBを使用する場合があります。Webサーバーマシンを使用する場合があります...
私はそれを実行する既製の製品(Pacemaker / CoroSync / keepalived)を検索しましたが、すべてWindowsをサポートしていません(私が理解している限り)。