Балансирование пользовательской нагрузки и тиражирование сеансов
Выравнивание нагрузки HTTP обеспечивает способ распределить пользовательскую нагрузку среди группы серверов приложений. Серверы приложений могут быть автономными или сконфигурированы как кластер, когда они, знают как узлы. Выравнивание нагрузки лучше используется с липкими сеансами. Это означает, что, как только балансировщик загрузки (веб-сервер) передает клиентский запрос к определенному серверу приложений, он отправляет все дальнейшие запросы от клиента к тому же серверу приложений.
Используя выравнивание нагрузки через автономные серверы приложений позволяет Вам масштабировать свое развертывание с небольшим увеличением обработки запросов наверху. Однако, когда сервер приложений перестал работать, другие серверы приложений не могут взять загрузку неработающего сервера, которая может обеспечить нежелательный пользовательский опыт: Пользователям, вероятно, придется войти в систему приложения снова или могут потерять содержание их «покупательских корзин».
Выравнивание нагрузки через серверы кластерного приложения (или узлы) обеспечивает репликацию сеанса среди узлов, так, чтобы, когда узел перестал работать, другой узел мог принять свои режимы работы с минимальным пользовательским влиянием. Однако, поскольку Вы добавляете узлы к кластеру, каждый запрос может занять больше времени для обработки.
Эта глава объясняет, как позволить приложению быть распространяемым среди кластерных узлов и обходит Вас посредством конфигурирования выравнивания нагрузки HTTP для Зоомагазина Sun с помощью трех компьютеров: Одно обслуживание только как веб-сервер и балансировщик загрузки и другие два служения в качестве узлов сервера приложений.
Распространяемые приложения
Прежде, чем развернуть приложение в кластере узлов с помощью deploy-cluster конфигурация, удостоверьтесь, что приложение является распространяемым.
Подавать заявку распространяемый набор, Распространяемый к да в области Web-App окна WebApp приложения. Рисунок 5-1 показывает окно WebApp petstore.ear архив.
petstore.ear архив
Выравнивание нагрузки и кластеризация
Выравнивание нагрузки обеспечивает способ распределить пользовательскую нагрузку среди серверов приложений. Когда узел в кластере становится недоступным, кластеризация включает обработку отказа сеанса. Выравнивание нагрузки может использоваться с группой автономных серверов приложений или с кластерным или сервером приложений или узлами. В этом разделе описываются простую, установку с тремя компьютерами, в которой один компьютер выполняет веб-сервер и балансирует пользовательскую нагрузку среди двух серверов приложений.
Запустите путем остановки Веб-сервиса на компьютере веб-сервера и серверах приложений на узлах. Тогда выполните шаги, описанные в следующих разделах.
Включите выравнивание нагрузки в веб-сервере
Выполните эти шаги для конфигурирования компьютера как веб-сервера и балансировщика загрузки для развертывания:
Администратор Сервера запуска, если это уже не работает.
Выберите Web в списке Компьютеров и Служб и нажмите Settings в области конфигурации.
Щелкните по вкладке Modules и выберите «jk_module», который является у основания списка модулей.
Щелкните по вкладке Sites.
Дважды щелкните по надлежащему сайту в списке (по умолчанию существует только один), который должен быть включен.
Щелкните по вкладке Options и отмените выбор Кэша Производительности.
Нажмите Save.
Открытый
httpd.confфайл, расположенный в/etc/httpd, в текстовом редакторе.Искать
<IfModule mod_jk.c>.Добавить
JKMount /petstore/* loadbalancerкак последний элементIfModuleэлемент.IfModuleэлемент должен выглядеть подобным этому:<IfModule mod_jk.c>
JKWorkersFile /etc/httpd/workers.properties
JKLogFile /var/log/httpd/mod_jk.log
JKLogLevel error
JKMount /*.jsp JBoss1
JKMount /servlet/* JBoss1
JKMount /examples/* JBoss1
JKMount /petstore/* loadbalancer
</IfModule>
Сохраните файл.
Откройтесь
workers.propertiesфайл, также расположенный в/etc/httpd, в текстовом редакторе.Файл, как сконфигурировано в Сервере OS X показан на рисунке 5-2.
Рисунок 5-2 workers.propertiesфайл в/etc/httpd
Строка изменения 2 к:
worker.list=loadbalancer
Строка изменения 8 так, чтобы это сослалось на первый узел. Это должно выглядеть подобным этому:
worker.JBoss1.host=node1.mydomain.com
Строка изменения 12 к:
worker.JBoss1.cachesize=10
Строки некомментария 26 - 28.
Строка изменения 26 так, чтобы это было похоже на это:
worker.JBoss2.port=9007
Строка изменения 27 так, чтобы это сослалось на второй узел. Это должно выглядеть подобным этому:
worker.JBoss2.host=node2.mydomain.com
Строка изменения 31 к:
worker.JBoss2.cachesize=10
Добавьте следующую строку к файлу для включения липких сеансов:
worker.loadbalancer.sticky_session=1
Сохраните файл.
Включите выравнивание нагрузки в серверах приложений
Для выравнивания нагрузки для работы каждый сервер приложений должен сообщить о своем существовании веб-серверу. Выполните эти шаги для конфигурирования сервера приложений так, чтобы они идентифицировали себя для веб-сервера:
Откройтесь
jboss-service.xmlфайл, расположенный в/Library/JBoss/3.2/deploy-cluster/deploy/jbossweb-tomcat41.sar/META-INF, в текстовом редакторе.Для некластерного развертывания откройтесь
jboss-service.xmlфайл в/Library/JBoss/3.2/deploy-standalone/deploy/jbossweb-tomcat41.sar/META-INF.Ищите следующую строку:
<Engine name="MainEngine" defaultHost="localhost">
Отредактируйте строку так, чтобы она была похожа на это:
<Engine jvmRoute="JBoss1" name="MainEngine" defaultHost="localhost">
Ищите следующие строки:
<!--Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="9007" minProcessors="5" maxProcessors="200" address="0.0.0.0"
enableLookups="false" acceptCount="50" debug="0"
connectionTimeout="20000"
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/-->
Удалите
!--в начале первой строки и--и конец последней строки, удостоверяясь оставлять открывающую угловую скобку и правую угловую скобку на месте.Сохраните файл.
Повторите шаги 1 - 6 для второго сервера приложений, но установите
jvmRouteк"JBoss2"на шаге 3.
Протестируйте конфигурацию
Выполните эти шаги, чтобы удостовериться, что клиентские запросы сбалансированы среди серверов приложений:
Запустите Веб-сервис в компьютере веб-сервера.
Запустите сервер приложений в каждом из компьютеров сервера приложений и выполните следующие команды на обоих:
$ cd /Library/JBoss/Logs
$ tail -f localhost_access<today's_date_YYYY-MM-DD>.log
В компьютере веб-сервера соединитесь с
http://<host_name>/petstore/index.jsp. Первый узел должен показать запись в журнале, подобную этому:17.203.255.255 - - [26/Sep/2003:15:56:58 -0800] "GET /petstore/index.jsp HTTP/1.1" 200 2769
Теперь, получите доступ к тому же URL от другого компьютера. Необходимо видеть запись в журнале во втором узле.