Статьи

Часть 5 кластеров Tomcat: NginX как балансировщик нагрузки

Это моя пятая часть серии кластеров Tomcat . [Смотрите видео ниже для лучшего понимания]. В этом посте мы обсудим, как заменить балансировщик нагрузки Apache http на Nginx в качестве балансировщика нагрузки. В этой серии у нас есть две большие установки, необходимые для кластеризации Tomcat

  1. Установить и настроить балансировщик нагрузки
  2. Настройте репликацию сеанса в Tomcat.


При первой настройке мы настраиваем балансировщик нагрузки с помощью веб-сервера Apache httpd. Его открытый исходный код и широко используется. Второй настройкой является репликация сеанса в Tomcat через тэг изменения / добавления <cluster> в файле server.xml. Эти экземпляры tomcat могут работать на одной или другой машине. В нашей серии кластеров Tomcat большая часть — это настройка балансировщика нагрузки (веб-сервер Apache httpd). Потому что есть много шагов, участвующих

  1. Установите веб-сервер Apache httpd из источника или репозитория
  2. Скомпилируйте и установите соединитель mod_jk
  3. Создайте файл worker.properties (добавьте IP-адрес tomcat и информацию о порте ajp)
  4. Настроить в файле httpd.conf (добавить параметры, связанные с mod_jk)

Эти настройки занимают больше времени, и их очень сложно отлаживать.

Есть ли альтернатива балансировщику нагрузки?

Да, Nginx — это новый веб-сервер. В этом посте мы обсудим, как настроить nginx в качестве балансировщика нагрузки в нашем кластере Tomcat.

Что такое Nginx?

Nginx является открытым исходным кодом и альтернативой веб-серверу Apache httpd. Это обеспечивает большую производительность и небольшой отпечаток памяти.

Установить Nginx

мы можем установить nginx через репозиторий (apt-get, yum) или из исходного кода. Здесь я собираю nginx из источника отсюда . затем распакуйте сжатый файл.

1
./configure --help

Команда выше показывает возможные параметры командной строки, доступные для компиляции

для установки используйте эту команду

1
./configure --prefix=/home/ramki/nginx --with-http_ssl_module

Вот

  • Префикс, используемый для указания, где сервер nginx хочет установить, здесь я использую мою домашнюю папку (например, / usr / local / nginx)
  • с-http_ssl_module здесь я указал установить модуль SSL (https), это не обязательно. Если мы хотим защищенную веб-страницу, тогда этот модуль необходим.

затем скомпилируйте исходный код make install nginx на основе нашей конфигурации sudo make install теперь установка завершена.

Чтобы запустить nginx:

1
2
cd /home/ramki/nginx/sbin  
sudo ./nginx

Теперь откройте ваш браузер и перейдите по адресу http: // localhost, чтобы получить страницу по умолчанию для nginx.

Чтобы остановить nginx, нам нужно передать сигнал остановки через опцию -s

1
sudo ./nginx  -s stop

Настроить как балансировщик нагрузки

Конфигурации Nginx хранятся в файле nginx.con в папке conf /. Нам нужно выполнить 2 шага, чтобы сделать nginx балансировщиком нагрузки.

Сначала определите блок Upstream в файле nginx.conf

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

1
2
3
4
5
upstream tomcatcluster  {
                server 127.0.0.1:8181;
server 127.0.0.1:8282;
server 127.0.0.1:8383;
         }

здесь мы определяем фоновые серверы (экземпляры Tomcat) через директиву server.

В каждой директиве сервера мы упоминаем IP-адрес сервера и номер порта HTTP (не номер порта AJP).

Второй переадресация (прокси) запроса к внутренним серверам

Этот шаг направляет запрос к вышестоящим блокам, где мы определяем внутренние серверы.

1
2
3
location / {
            proxy_pass http://tomcatcluster;
       }  

здесь, если местоположение / уже присутствует, затем удалите и добавьте этот новый.

здесь директива proxy_pass, проксификатор (пересылка) запросов к вышестоящим серверам. здесь tomcatcluster — это имя вышестоящего блока, и мы использовали протокол http для пересылки запроса. Вот и все. Балансировщик нагрузки готов.

Теперь запустите экземпляры tomcat на основе моего предыдущего поста (репликация сеанса). затем запустите nginx. Затем получите доступ к http: // localhost. Теперь nginx перенаправляет запрос в циклическом режиме на внутренние серверы. Все серверы имеют сеанс, поэтому он может обрабатывать запрос. Это то же самое, что и незакрепленный метод сеанса, который мы использовали в моих предыдущих постах.

Если мы хотим закрепить сеанс, то nginx напрямую не предоставляет, но доступны некоторые сторонние патчи. но nginx предоставляет директиву ip_hash. Он перенаправляет все запросы с одного IP на тот же tomcat, как липкий сеанс. Но липкая сессия работает на основе cookie (сессия). но ip_hash основан на IP-адресе клиента. Если вы хотите настроить ip_hash, то измените блок upstream, добавьте ip_hash

1
2
3
4
5
6
upstream tomcatcluster  {
                ip_hash;
                server 127.0.0.1:8181;
server 127.0.0.1:8282;
server 127.0.0.1:8383;
         }

Просто перезапустите сервер, и вы почувствуете, что придерживаетесь концепции сессионной сессии Когда мы сравниваем Nginx с веб-сервером Apache httpd, nginx обеспечивает простую настройку и может обрабатывать огромное количество трафика, занимать мало места в памяти и занимать небольшую нагрузку на процессор. Если вы будете искать Nginx против Apache, мы получим несколько потрясающих результатов.

Актерский состав:

Ссылка: Tomcat Clustering Series Часть 5: NginX в качестве балансировщика нагрузки от нашего партнера JCG Рамы Кришнана в блоге