Статьи

Балансировка нагрузки Apache Tomcat с Nginx

Это сообщение от Карана Малхи из блога Mulesolft.

Nginx (произносится как «движок X») — это HTTP и обратный прокси-сервер. Он хорошо известен своей высокой производительностью и стабильностью. Это довольно многофункциональный и очень простой в настройке. Nginx размещает около 12,18 процентов (22,2 млн.) Активных сайтов во всех доменах. Nginx использует управляемую событиями архитектуру для обработки запросов. По сравнению с моделью «поток-на-запрос» управляемая событиями возможность масштабирования с низким и предсказуемым объемом памяти.

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

Сначала вам нужно установить Nginx, вы можете найти инструкции по установке здесь . Если вы на Mac, то вы можете использовать Homebrew

brew install nginx

После установки, вы можете запустить его с помощью Nginx команды

 sudo nginx

Теперь вы можете проверить установку, открыв следующий URL в браузере:

 http://localhost:8080

Позволяет изменить порт 8080 по умолчанию на порт 80. Это можно сделать в файле nginx.conf, который по умолчанию находится в /usr/local/etc/nginx/nginx.conf. Сначала остановите nginx:

 sudo nginx -s stop 

Теперь откройте файл nginx.conf и найдите атрибут listen сервера . Измените значение с 8080 на 80. Вот где я сделал изменение в моей конфигурации:

server { 
listen 80; 
server_name localhost;

Сохраните файл и запустите nginx. Теперь вы сможете проверить изменение конфигурации, посетивhttp://localhost

Установите два экземпляра Apache Tomcat . Откройте их файлы server.xml и измените номера портов HTTP на 8080 и 8081 соответственно. Вы можете найти больше информации о конфигурации Apache Tomcat здесь . После того, как вы внесли изменения и сохранили файлы конфигурации, вы должны запустить каждый экземпляр Apache Tomcat. Вот несколько способов запустить Apache Tomcat. Как правило, вы должны быть в состоянии найти каталог bin внутри вашей установки Tomcat и вызвать файл startup.sh, как показано:

 bin/startup.sh

Теперь, когда запущены экземпляры Tomcat, давайте настроим балансировщик нагрузки в циклическом режиме. Вы должны будете использовать вышестоящий модуль Nginx . Модуль upstream позволяет группировать серверы, на которые может ссылаться директива proxy_pass . В вашем nginx.conf найдите блок http и добавьте блок upstream, чтобы создать группу серверов:

http { 
upstream tomcat_servers{ 
ip_hash; server 127.0.0.1:8080; 
server 127.0.0.1:8081; 
} 

Приведенный выше ip_hash настраивает
метод
балансировки нагрузки, при котором запросы направляются на серверы на основе IP-адресов клиента, поэтому запрос от клиента с определенным IP-адресом всегда будет направляться на один и тот же внутренний сервер Tomcat.

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

location / { 
proxy_pass http://tomcat_servers; 
}

Это оно!. Перезапустите Nginx, и теперь вы сможете отправить запрос на http: // localhost, и запрос будет обслуживаться одним из серверов Tomcat.