Я пытаюсь сделать свое приложение высокодоступным, используя метод активный/пассивный. В настоящее время я развертываю приложение на сервере Tomcat, который может быть размещен на платформе Windows или Linux.
Итак, теперь я развертываю его на двух серверах Tomcat. Каждый сервер работает на отдельной машине. Я настраиваю Tomcats на один и тот же кластер с помощью конфигурации Tomcat, которая дает мне репликацию сеанса (сохранение в БД). Я использую какой-то веб-сервер/балансировщик нагрузки для перенаправления запросов (еще не решил).
Проблема в том, что приложение не может работать одновременно на обоих Tomcats, так как в настоящее время оно поддерживает состояние (и делать его без состояния слишком дорого). На самом деле мне нужно, чтобы одновременно работал только один Tomcat. Или, по крайней мере, на Tomcat будет запущено только одно приложение.
Подводя итог, мне нужно программное обеспечение, которое может:
- Определить недопустимое состояние приложения с помощью HTTP-запроса (либо компьютер/Tomcat не работает, либо приложение не отвечает по другим причинам);
- Запустите экземпляр или приложение Tomcat на Tomcat, когда другое приложение определено как недействительное;
- Остановите экземпляр Tomcat или приложение на Tomcat, если оно определено как недопустимое.
- Поддержка платформ Linux и Windows...
Этот продукт может быть библиотекой, которая используется на нашей JVM, это могут быть отдельные процессы мониторинга, которые находятся на машинах Tomcats и взаимодействуют друг с другом и с Tomcats, он может использовать нашу БД. Он может использовать веб-сервер...
Я искал готовые продукты, которые это делают (Pacemaker/CoroSync/keepalived) , все не поддерживающие винду (насколько я понимаю).