В этой статье я рассмотрю общую настройку для небольшой производственной среды. Одноуровневый кластер серверов приложений с балансировкой нагрузки.
обзор
Обзор высокого уровня того, что мы будем делать.
- Загрузка и установка HTTP-сервера Apache и mod_jk
- Загрузка Tomcat
- Загрузка Java
- Настройка двух локальных серверов Tomcat
- Кластеризация двух серверов Tomcat
- Настройка Apache для использования mod_jk для пересылки запроса в Tomcat
- Развертывание приложения на сервере 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.
Теперь давайте посмотрим на страницу состояния mod_jk: http: // localhost / status . Вы увидите, что на этой странице показана информация о работниках балансировщика нагрузки и балансируемых работниках.
Если все работает, вы увидите, что рабочее состояние ошибки показывает OK или OK / IDLE, если они в данный момент не балансируют нагрузку.
Вещи, чтобы попробовать
Включить липкие сессии: настройте jvmRoute в конфигурации server.xml .
дальнейшее чтение
Балансировка нагрузки с помощью mod_jk и Apache Работа с mod_jk
Подключение веб-сервера Apache к нескольким экземплярам Tomcat