Отработка отказа Glassfish без балансировщика нагрузки

У меня есть кластер Glassfish v2u2 с двумя экземплярами, и я хочу переключаться между ними. В каждом документе, который я читал на эту тему, говорится, что я должен использовать балансировщик нагрузки перед Glassfish, например Apache httpd. В этом сценарии аварийное переключение работает, но у меня снова есть единая точка отказа. Способен ли Glassfish выполнить такое переключение при сбое без переднего балансировщика нагрузки?


person kovica    schedule 08.01.2009    source источник
comment
какова ваша единственная точка отказа? сам балансировщик нагрузки?   -  person Jesse Pepper    schedule 08.01.2009
comment
Если я использую Apache впереди для балансировки нагрузки и аварийного переключения экземпляров в кластере Glassfish, то да, тогда Apache является единственной точкой отказа.   -  person kovica    schedule 09.01.2009


Ответы (3)


Мы решили, что у нас есть два IP-адреса, которые оба отвечают на URL-адрес. Провайдер DNS (DNS Made Easy) будет использовать циклический алгоритм между ними. Установка низкого тайм-аута гарантирует, что в случае сбоя одного сервера ответит другой. Когда один сервер перестает отвечать, DNS Made Easy отправит другой хост только в качестве сервера для ответа на этот URL-адрес. Вам придется доверять провайдеру DNS, но вы можете купить услугу с чрезвычайно высокой доступностью поиска DNS.

Что касается высокой доступности, вы можете настроить кластер, который позволяет репликацию сеанса, чтобы пользователь не потерял больше, чем потенциально один неудачный запрос.

person tronda    schedule 06.03.2009

Хм... JBoss может выполнять отработку отказа без балансировщика нагрузки в соответствии с документацией (http://docs.jboss.org/jbossas/jboss4guide/r4/html/cluster.chapt.html) Глава 16.1.2.1. Перехватчик на стороне клиента.

Насколько я знаю, Glassfish кластер обеспечивает репликацию сеансов в памяти между узлами. Если я использую Suns Glassfish Enterprise Application Server, я могу использовать HADB, который обещает 99,999% доступности.

person kovica    schedule 08.01.2009
comment
Насколько я понял на этой странице, Jboss может выполнять отработку отказа своей службы EJB, если у клиента есть достаточно умная клиентская библиотека - клиент знает, где находится партнер по отработке отказа, и повторяет попытку. Однако это не решит проблему отказа веб-сервера. - person MarkR; 08.01.2009

Нет, вы не можете сделать это на уровне приложения.

Ваши варианты:

  • DNS с циклическим перебором — предоставьте доступ к Интернету обоим своим серверам и позвольте клиенту выполнять балансировку нагрузки — это довольно привлекательно, поскольку определенно обеспечивает аварийное переключение.
  • Используйте другую систему балансировки нагрузки уровня 3, например "балансировку сетевой нагрузки Windows", "балансировку сетевой нагрузки Linux" или ту, которую я написал под названием "Пушистый кластер Linux"
  • Используйте отдельный балансировщик нагрузки с резервным горячим резервом.

В любом из этих случаев вам все равно необходимо убедиться, что ваша база данных, данные сеанса и т. д. доступны и синхронизированы между членами вашего кластера, что на практике намного сложнее.

person MarkR    schedule 08.01.2009
comment
DNS с циклическим перебором обеспечивает плохую балансировку нагрузки, но НЕ обеспечивает аварийное переключение. Если один выйдет из строя, то некоторые пользователи просто не смогут получить доступ к сайту. - person corydoras; 06.11.2009
comment
DNS с циклическим перебором довольно хорошо справляется с отказоустойчивостью в большинстве веб-браузеров. Веб-браузеры довольно умны в том, как они справляются с этим, и, как правило, прозрачно пробуют другой хост, если обнаруживают, что он не работает. Тем не менее, вам нужно убедиться, что любой неисправный сервер действительно выходит из строя, а не создает страницу с ошибкой, но некоторые разумные сценарии гарантируют это — например, выключите веб-сервер, если внутренняя самопроверка постоянно дает сбой. - person MarkR; 06.11.2009