1 February 2019

Пересылка запросов от Apache на Payara Server 5 в Ubuntu

JavaApache
Translation
Tutorial
Original author: Mark Wareham

В этой серии статей мы постараемся дать обзор основ использования Payara Server в «продакшане» с использованием Apache Web Server (httpd) и Ubuntu. Многие из концепций, не опираются на инструменты, которые мы здесь используем, и могут быть применены к другим сценариям.


Наша цель — настроить следующее:

image

Здесь у нас есть веб-сервер Apache, который будет доступен нашим пользователям. Их запросы будут направлены одному из двух экземпляров сервера Payara. Здесь мы рассмотрим использование «склеивание» сессий на основе файла cookie JSESSIONID, чтобы гарантировать взаимодействие каждого пользователя с одним и тем же сервером Payara, а также репликацию сессий, чтобы гарантировать, что, если один сервер Payara выйдет из строя, другой сможет обрабатывать существующие сессии без проблем.


Будем считать что веб сервер Apache уже установлен и настроен. Нашим следующим шагом будет настройка переадресации запросов для отправки трафика на Payara Server.


Что такое пересылка запросов?


Переадресация запросов (или прокси) — это когда сервер, получающий веб-трафик, отправляет его в другое место назначения. Их можно использовать, чтобы скрыть реальное местоположение пользователя, чтобы не видеть внутренние системы или управлять производительностью. Как и большинство веб-серверов, веб-сервер Apache может быть дополнен модулями, которые дают ему возможность пересылать запросы на сервер и передавать ответы через прокси. Это означает, что вы можете использовать Apache в качестве посредника, который избавляет от необходимости указывать номера портов или точные IP-адреса и позволяет пользователю получать ответы от того же сервера (вместо того, чтобы нажимать на localhost и иметь адресную строку с надписью localhost:8080).


Настройка пересылки запросов между веб-сервером Apache и сервером Payara


В этом посте мы рассмотрим пакет, доступный в репозитории Ubuntu. Пакет Ubuntu содержит двоичные файлы Apache, но также имеет дополнительные «вспомогательные инструменты» для управления файлами конфигурации. В Ubuntu 18 два модуля, которые нам нужно добавить в Apache, являются частью пакета apache2, который мы установили ранее. Его можно установить из репозитория с помощью:

sudo apt install apache2

Обратите внимание, что до Ubuntu 16.04 вам нужно будет использовать «apt-get» вместо «apt».

Мы установим два модуля для включения базовой пересылки http-запросов — mod_proxy и mod_proxy_http. В Ubuntu вспомогательные инструменты управляют установкой этих модулей — чтобы еще проще было, инструменты будут искать свои зависимости и включать их. Полезно, что mod_proxy_http требует работы mod_proxy, что означает, что наша команда выглядит следующим образом:

sudo a2enmod proxy_http

Обратите внимание, что в этих командах мы можем опустить префикс «mod_»


image


Если вы хотите отключить модуль, для a2enmod существует вспомогательный инструмент под названием a2dismod, который используется таким же образом. Инструмент обнаружил зависимость и также включил mod_proxy. Если у вас было несколько модулей, которые вы хотели активировать, вы можете добавить их после proxy_http, разделив их пробелами…


Мы перезапустим сервер позже, так как нам также нужно изменить конфигурацию.


Пакет apache2 в Ubuntu имеет пример конфигурации сайта под названием «000-default». Файл конфигурации для этого сайта находится в папке /etc/apache2/sites-available и содержит символическую ссылку на папку sites-enabled.


Структура файла конфигурации Apache


Как правило, вы увидите, что интернет-руководства ссылаются на httpd.conf как файл конфигурации для редактирования. Это просто «родительский» файл конфигурации по умолчанию. В системах Debian / Ubuntu (и их производных, таких как Linux Mint), файл для поиска — apache2.conf.


Этот файл читается, и его директивы применяются сверху вниз, поэтому, если для одного и того же свойства задано два разных значения, будет применяться второе. (Точнее, первый будет применяться только до прочтения второго параметра).


Этот файл также может специально «включать» файлы и папки (обратите внимание, что подстановочные знаки тоже работают). Они будут считаны и объединены с основной конфигурацией в том месте, где написано «include». Таким образом, самая последняя строка в главном файле конфигурации (если он не указывает другой файл) будет последней строкой конфигурации, которая будет установлена, несмотря ни на что.


Страница по умолчанию в новой установке для Apache в Ubuntu находится в /var/www/index.html и дает хороший обзор того, как это работает в деталях.


Создание новой конфигурации сайта


Мы не будем использовать конфигурацию по умолчанию, потому что нам нужно добавить определенное поведение. Скопируйте старую конфигурацию с доступных сайтов и переименуйте ее в нечто запоминающееся.


sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/payara-site.conf

Откройте новый файл в предпочитаемом вами текстовом редакторе от имени пользователя root. Вы должны увидеть что-то вроде этого:


image

Элемент содержит серию директив, которые сообщают серверу, как реагировать на перечисленные входящие запросы. В этом примере <VirtualHost *: 80> обрабатывает все ответы, поступающие на сервер через порт 80. Более подробное описание тегов VirtualHost см. В документации Apache.

Нам нужно добавить две строки в тегах , чтобы сообщить Apache, как обращаться с входящим и исходящим трафиком — одну, чтобы сообщить Apache, куда отправлять запросы, и другую, чтобы сообщить Apache, откуда должны быть получены ответы. Таким образом, пользователь, посещающий localhost, может быть перенаправлен на наш сервер приложений по адресу localhost:8080/, а ответы, направленные на localhost:8080/, вместо этого перенаправляются, так что пользователь видит их поступающими из localhost.

Для управления входящим трафиком добавьте строку:


ProxyPass / http://localhost:8080/

Эта директива указывает Apache отправлять все после доменного имени сервера на localhost:8080/, как если бы пользователь перешел непосредственно по этому URL.

 ProxyPassReverse / http://localhost:8080/

Эта директива сообщает Apache об обратном URL-адресе прокси, чтобы, несмотря на то, что ответ возвращается от экземпляра Payara Server на порт 8080, URL выглядит так, как будто он получен от Apache. Эти две директивы, когда используются вместе, означают, что мы можем избежать сложных регулярных выражений с помощью mod_rewrite.


Предполагая, что доменное имя, которое мы хотим использовать, например, www.example.com, наша конфигурация означает, что запрос к www.example.com/myapp будет фактически отправлен на сервер Payara, как если бы пользователь непосредственно подключился к localhost:8080//MyApp.


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


image
Сохраните свой файл.

Чтобы отключить сайт по умолчанию и активировать нашу новую конфигурацию, выполните команды:


  sudo a2dissite 000-default.conf
     sudo a2ensite payaraSite.conf

Перезапустите службу Apache HTTP Server (перезапуск, который мы пропустили ранее):

sudo service apache2 restart

Чтобы остановить и запустить Apache HTTP Server, это:

остановка службы

        sudo service apache2 stop
    sudo service apache2 start

Не забудьте запустить Payara Server:

/opt/payara5/bin/asadmin start-domain domain1

Прежде чем вносить изменения в конфигурацию, зайдя на localhost, вы попадете на экран приветствия Apache:


image

Но теперь мы добавили в наш прокси-сервер и включили новые директивы для нашей пользовательской конфигурации Apache, когда мы вводим localhost/index.html, который мы теперь отправляем на экран приветствия Payara Server:

image

Теперь вы можете добавлять приложения на сервер Payara


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

Мы прошли установку обоих серверов, настройку Apache, исследование файловой системы и очень кратко рассмотрели команды asadmin сервера Payara Server.


В следующий раз рассмотрим, как расширить функциональность Apache и Payara Server, и как сможем заставить Payara Server обеспечивать масштабируемость и дополнительные улучшения, которые добавим в Apache для обработки нескольких внутренних серверов.

Tags:Payaraglassfishapache
Hubs: Java Apache
+2
1.5k 6
Comments 2
Popular right now
Java-разработчик (проекты интеграции)
from 150,000 ₽Страховая Компания СогласиеМоскваRemote job
Разработчик Big data
to 200,000 ₽CV RecruitmentМоскваRemote job
Разработчик JAVA
from 100,000 ₽IT Smart FinanceНовосибирск
Автотестировщик (Java)
from 160,000 ₽Банк «Открытие»Москва
Data Engineer
from 200,000 ₽СберМосква
Top of the last 24 hours