Назад | Перейти на главную страницу

Отказоустойчивость Apache для JBoss

Я использую веб-приложение JBoss (AS 6 Final), размещенное на Linux (Debian). Я хотел бы реализовать отказоустойчивое решение, чтобы, когда JBoss не работает, вместо него обслуживалась статическая веб-страница.

Мое текущее решение - запустить Apache как обратный прокси (описано Вот), что позволяет мне обслуживать файлы .php из apache и пересылать все остальные запросы JBoss. Но я не уверен, как заставить Apache вмешаться, когда JBoss не работает?

Заметка. и apache, и jboss будут работать на одном и том же компьютере, это (отказоустойчивость приложения, а не отказ сервера), чтобы покрыть времена, когда JBoss повторно развертывается и т. д. Поэтому я действительно ищу самое простое решение

Большое спасибо

Самым простым решением здесь будет использование Varnish в качестве обратного прокси для apache и Jboss. Он не только предоставит вам эту функциональность, но и станет лучшим сервером кэширования, он значительно улучшит производительность вашего сайта (если только ваш сайт не является полностью динамическим и нечего кэшировать).

Хотя вы можете найти много подробностей о лаке в Интернете, но конкретную функциональность, которую вы ищете, можно настроить следующим образом:

бэкэнд jboss {.host = "127.0.0.1"; .port = "8080"; .probe = {.url = "/"; .timeout = 3 с; .interval = 5 с; .window = 1; .threshold = 1; }}

бэкэнд apache {.host = "127.0.0.1"; .port = "8010"; .probe = {.url = "/"; .timeout = 3 с; .interval = 5 с; .window = 2; .threshold = 2; }}

sub vcl_recv {установить req.backend = Jboss;

if (req.restarts == 1 ||! req.backend.healthy) {установить req.backend = Apache; }}

Согласно этим настройкам, если Jboss не работает, varnish отправит трафик на сервер Apache и будет обслуживать страницу, которую вы настроили.

Надеюсь, это помогло.

Вероятно, вы можете создать два сайта для apache и хранить их в / etc / apache2 / sites-available. Один из них уже настроен. Другой (назовем его «резервным сайтом») будет содержать ваши php-страницы и статический сайт для отсутствующих URL-адресов jboss-серверов.

Затем создайте cronjob или что-то еще. Он должен проверить, доступен ли еще jboss. Для этого создайте страницу на jboss и вызовите ее из cronjob. Если jboss обнаружен как отсутствующий, то вызовите команду «a2ensite» со своим «резервным сайтом» и «a2dissite» со своим обычным сайтом.

Тот же cronjob должен работать наоборот: когда jboss снова будет в сети, снова поменяйте местами ваши сайты в apache.

Если вам нужна простая статическая страница для аварийного переключения, используйте настраиваемое сообщение об ошибке для виртуального хоста apache.

<VirtualHost *:80>
ServerName www.yourdomain.tld
ServerAlias yourdomain.tld

#Most Common errors for proxy
ErrorDocument 500 /demoWeb/errorpage.php 
ErrorDocument 502 /demoWeb/errorpage.php 
ErrorDocument 503 /demoWeb/errorpage.php 

DocumentRoot /var/www/demoWeb
ProxyPassMatch ^/(.*)+\.php !

    ProxyRequests Off

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyPass / http://yourdomain.tld:8080/helloworld/
    ProxyPassReverse / http://yourdomain.tld:8080/helloworld/

    <Location />
        Order allow,deny
        Allow from all
    </Location>
</VirtualHost>

Это наиболее простой метод обработки статической страницы переключения при отказе. Но также примите во внимание реализацию той же страницы для других кодов ошибок (404?), Потому что ваш JBOSS может работать, но ваше приложение JBOSS может быть не развернуто или аварийно завершено.