Это моя пятая часть серии кластеров Tomcat . [Смотрите видео ниже для лучшего понимания]. В этом посте мы обсудим, как заменить балансировщик нагрузки Apache http на Nginx в качестве балансировщика нагрузки. В этой серии у нас есть две большие установки, необходимые для кластеризации Tomcat
- Установить и настроить балансировщик нагрузки
- Настройте репликацию сеанса в Tomcat.
При первой настройке мы настраиваем балансировщик нагрузки с помощью веб-сервера Apache httpd. Его открытый исходный код и широко используется. Второй настройкой является репликация сеанса в Tomcat через тэг изменения / добавления <cluster> в файле server.xml. Эти экземпляры tomcat могут работать на одной или другой машине. В нашей серии кластеров Tomcat большая часть — это настройка балансировщика нагрузки (веб-сервер Apache httpd). Потому что есть много шагов, участвующих
- Установите веб-сервер Apache httpd из источника или репозитория
- Скомпилируйте и установите соединитель mod_jk
- Создайте файл worker.properties (добавьте IP-адрес tomcat и информацию о порте ajp)
- Настроить в файле 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 Рамы Кришнана в блоге