Балансирование пользовательской нагрузки и тиражирование сеансов

Выравнивание нагрузки HTTP обеспечивает способ распределить пользовательскую нагрузку среди группы серверов приложений. Серверы приложений могут быть автономными или сконфигурированы как кластер, когда они, знают как узлы. Выравнивание нагрузки лучше используется с липкими сеансами. Это означает, что, как только балансировщик загрузки (веб-сервер) передает клиентский запрос к определенному серверу приложений, он отправляет все дальнейшие запросы от клиента к тому же серверу приложений.

Используя выравнивание нагрузки через автономные серверы приложений позволяет Вам масштабировать свое развертывание с небольшим увеличением обработки запросов наверху. Однако, когда сервер приложений перестал работать, другие серверы приложений не могут взять загрузку неработающего сервера, которая может обеспечить нежелательный пользовательский опыт: Пользователям, вероятно, придется войти в систему приложения снова или могут потерять содержание их «покупательских корзин».

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

Эта глава объясняет, как позволить приложению быть распространяемым среди кластерных узлов и обходит Вас посредством конфигурирования выравнивания нагрузки HTTP для Зоомагазина Sun с помощью трех компьютеров: Одно обслуживание только как веб-сервер и балансировщик загрузки и другие два служения в качестве узлов сервера приложений.

Распространяемые приложения

Прежде, чем развернуть приложение в кластере узлов с помощью deploy-cluster конфигурация, удостоверьтесь, что приложение является распространяемым.

Подавать заявку распространяемый набор, Распространяемый к да в области Web-App окна WebApp приложения. Рисунок 5-1 показывает окно WebApp petstore.ear архив.

  Окно The WebApp рисунка 5-1 petstore.ear архив
The WebApp window of the petstore.ear archive

Выравнивание нагрузки и кластеризация

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

Запустите путем остановки Веб-сервиса на компьютере веб-сервера и серверах приложений на узлах. Тогда выполните шаги, описанные в следующих разделах.

Включите выравнивание нагрузки в веб-сервере

Выполните эти шаги для конфигурирования компьютера как веб-сервера и балансировщика загрузки для развертывания:

  1. Администратор Сервера запуска, если это уже не работает.

  2. Выберите Web в списке Компьютеров и Служб и нажмите Settings в области конфигурации.

  3. Щелкните по вкладке Modules и выберите «jk_module», который является у основания списка модулей.

  4. Щелкните по вкладке Sites.

  5. Дважды щелкните по надлежащему сайту в списке (по умолчанию существует только один), который должен быть включен.

  6. Щелкните по вкладке Options и отмените выбор Кэша Производительности.

  7. Нажмите Save.

  8. Открытый httpd.conf файл, расположенный в /etc/httpd, в текстовом редакторе.

  9. Искать <IfModule mod_jk.c>.

  10. Добавить 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>
  11. Сохраните файл.

  12. Откройтесь workers.properties файл, также расположенный в /etc/httpd, в текстовом редакторе.

    Файл, как сконфигурировано в Сервере OS X показан на рисунке 5-2.

    Рисунок 5-2  workers.properties файл в /etc/httpd
    The workers.properties file in /etc/httpd
  13. Строка изменения 2 к:

    worker.list=loadbalancer
  14. Строка изменения 8 так, чтобы это сослалось на первый узел. Это должно выглядеть подобным этому:

    worker.JBoss1.host=node1.mydomain.com
  15. Строка изменения 12 к:

    worker.JBoss1.cachesize=10
  16. Строки некомментария 26 - 28.

  17. Строка изменения 26 так, чтобы это было похоже на это:

    worker.JBoss2.port=9007
  18. Строка изменения 27 так, чтобы это сослалось на второй узел. Это должно выглядеть подобным этому:

    worker.JBoss2.host=node2.mydomain.com
  19. Строка изменения 31 к:

    worker.JBoss2.cachesize=10
  20. Добавьте следующую строку к файлу для включения липких сеансов:

    worker.loadbalancer.sticky_session=1
  21. Сохраните файл.

Включите выравнивание нагрузки в серверах приложений

Для выравнивания нагрузки для работы каждый сервер приложений должен сообщить о своем существовании веб-серверу. Выполните эти шаги для конфигурирования сервера приложений так, чтобы они идентифицировали себя для веб-сервера:

  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.

  2. Ищите следующую строку:

    <Engine name="MainEngine" defaultHost="localhost">
  3. Отредактируйте строку так, чтобы она была похожа на это:

    <Engine jvmRoute="JBoss1" name="MainEngine" defaultHost="localhost">
  4. Ищите следующие строки:

    <!--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"/-->
  5. Удалите !-- в начале первой строки и -- и конец последней строки, удостоверяясь оставлять открывающую угловую скобку и правую угловую скобку на месте.

  6. Сохраните файл.

  7. Повторите шаги 1 - 6 для второго сервера приложений, но установите jvmRoute к "JBoss2" на шаге 3.

Протестируйте конфигурацию

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

  1. Запустите Веб-сервис в компьютере веб-сервера.

  2. Запустите сервер приложений в каждом из компьютеров сервера приложений и выполните следующие команды на обоих:

    $ cd /Library/JBoss/Logs
    $ tail -f localhost_access<today's_date_YYYY-MM-DD>.log
  3. В компьютере веб-сервера соединитесь с 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
  4. Теперь, получите доступ к тому же URL от другого компьютера. Необходимо видеть запись в журнале во втором узле.