Статьи

Как настроить кластер Tomcat, Apache и mod_jk

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

обзор

Обзор высокого уровня того, что мы будем делать.

  1. Загрузка и установка HTTP-сервера Apache и mod_jk
  2. Загрузка Tomcat
  3. Загрузка Java
  4. Настройка двух локальных серверов Tomcat
  5. Кластеризация двух серверов Tomcat
  6. Настройка Apache для использования mod_jk для пересылки запроса в Tomcat
  7. Развертывание приложения на сервере Tomcat, который тестирует нашу настройку

Вступление

Что такое Apache?

Apache — это HTTP-сервер.

Что такое mod_jk?

Это модуль Apache, который обеспечивает связь AJP между Apache и внутренним сервером приложений, таким как Tomcat. Я запускаю его на Ubuntu 14.04LTS, установленной на ПК с двойной загрузкой и Windows 7.

 Кластер серверов приложений 

Скачать Apache2

Мы собираемся использовать систему обслуживания пакетов Ubuntu APT для получения и установки Apache2.

sudo apt-get install apache2

Это установит в / etc / apache2

Загрузите и установите mod_jk

Модуль mod_jk не входит в загрузку Apache2, поэтому его необходимо получить и установить отдельно. Для установки требуется, чтобы модуль mod_jk был видим для Apache и был настроен так, чтобы Apache знал, где его искать и что делать с запросами, которые вы хотите прокси.

sudo apt-get install libapache2-mod-jk

Это установит в / etc / libapache2-mod-jk, также два файла были добавлены в папку / etc / apache2 / mods-available.

Загрузка и установка Tomcat 8

На момент написания этого Tomcat 8 не имеет пакета в APT, поэтому вы должны загрузить двоичные файлы с веб-сайта tomcat. http://tomcat.apache.org/download-80.cgi выберите соответствующий двоичный дистрибутив и распакуйте его следующим образом.

tar xvzf apache-tomcat-8.0.5.tar.gz

Нам нужно две копии сервера Tomcat для балансировки нагрузки. Я создал две директории в / opt / location: / opt / tomcat-server1 / и / opt / tomcat-server2 / и скопировал tomcat в каждую.

Загрузите и установите Java

Загрузите Java с APT следующим образом:

apt-get install openjdk-7-jdk

и установите JAVA_HOME в .bashrc

vim ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

Настройте два локальных сервера Tomcat

Мы будем редактировать только server.xml установки server2 tomcat. Нам нужно изменить номера портов, чтобы избежать конфликтов. Мы меняем следующее:

<Server port="9005" shutdown="SHUTDOWN">
<Connector port="9009" protocol="AJP/1.3" redirectPort="9443"/>

и закомментируйте HTTP-коннектор, так как мы хотим, чтобы веб-приложение было доступно только через балансировку нагрузки. Вот моя конфигурация server2 Tomcat server.xml .

Настроить mod_jk

Балансировка нагрузки настраивается в файле worker.properties, расположенном в / etc / libapache2-mod-jk /, где рабочие представляют реальных или виртуальных рабочих. Мы определим двух реальных рабочих и двух виртуальных рабочих, которые сопоставляются с серверами Tomcat. В свойстве worker.list я определил двух виртуальных рабочих: status и loadbalancer , о которых я расскажу позже в конфигурации Apache. Рабочие места для каждого сервера были определены с использованием значений для файлов конфигурации server.xml . Я использовал значения портов для коннекторов AJP и включил lbfactor, который устанавливает предпочтение, которое балансировщик нагрузки будет показывать для этого сервера. Наконец, мы определяем виртуальных рабочих. loadbalancerworker задается для типа lb и задает рабочих, представляющих серверы Tomcat, в свойствах balancer_workers . Статус должен быть установлен только на статус статуса.

worker.list=loadbalancer,status  worker.server1.port=8009worker.server1.host=localhostworker.server1.type=ajp13  worker.server2.port=9009worker.server2.host=localhostworker.server2.type=ajp13  worker.server1.lbfactor=1worker.server2.lbfactor=1  worker.loadbalancer.type=lbworker.loadbalancer.balance_workers=server1,server2  worker.status.type=status

Убедитесь, что вы удалили все другие рабочие конфигурации, которые не используются.

Настройте веб-сервер Apache для пересылки запросов

Вам нужно будет добавить следующее в конфигурации Apache, расположенные в etc / apache2 / sites-enabled / 000-default.conf

JkMount /status status
JkMount /* loadbalancer

Проверьте установку

Чтобы проверить, что все настроено правильно, нам нужно развернуть приложение. Пример приложения, которое годами использовалось для тестирования таких конфигураций, называется примером приложения ClusterJSP. Вы можете найти его, используя Google или сайт JBoss. Теперь разверните войну в папке webapps на обоих серверах и запустите каждый сервер, используя скрипт запуска /opt/tomcat-server1/bin/startup.sh.Go to http : //localhost/clusterjsp/HaJsp.jsp, и вы должны увидеть страницу с информацией о HttpSession.

Кластер - образец HA JSP

Теперь давайте посмотрим на страницу состояния mod_jk: http: // localhost / status . Вы увидите, что на этой странице показана информация о работниках балансировщика нагрузки и балансируемых работниках.

 Рабочие

Если все работает, вы увидите, что рабочее состояние ошибки показывает OK или OK / IDLE, если они в данный момент не балансируют нагрузку.

Вещи, чтобы попробовать

Включить липкие сессии: настройте jvmRoute в конфигурации server.xml .

дальнейшее чтение

Балансировка нагрузки с помощью mod_jk и Apache Работа с mod_jk

Подключение веб-сервера Apache к нескольким экземплярам Tomcat