Научная статья на тему 'Настройка прокси-сервера Nginx'

Настройка прокси-сервера Nginx Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
1197
129
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
СИСТЕМА ДОМЕННЫХ ИМЕН / ПРОТОКОЛ / ИНТЕРНЕТ-СЕРВИС / БАЛАНСИРОВКА НАГРУЗКИ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Бобров Андрей Виорелович, Рубашенков Антон Михайлович

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Настройка прокси-сервера Nginx»

НАСТРОЙКА ПРОКСИ-СЕРВЕРА NGINX 1 2 Бобров А.В. , Рубашенков А.М.

1 Бобров Андрей Виорелович - студент; 2Рубашенков Антон Михайлович - студент, кафедра защиты информации, Институт комплексной безопасности и специального приборостроения, Российский технологический университет, г. Москва

Аннотация: один из наиболее часто используемых приложений балансировки нагрузки является создание единого интернет-сервиса с несколькими серверами, иногда известные как фермы серверов. Обычно с балансировкой нагрузки системы относятся популярные веб-сайты, большие Интернет-магазины, сайты использующие протокол передачи файлов (FTP), системы доменных имен(DNS), и базы данных.

Ключевые слова: система доменных имен, протокол, интернет-сервис, балансировка нагрузки.

УДК 004.031.2

Для интернета, балансировщик нагрузки — это обычно программа, которая прослушивает порт, где внешние клиенты подключаются к службам. Балансировщик нагрузки перенаправляет запросы на один из «серверов» сервера, который обычно отвечает балансировщику нагрузки. Это позволяет подсистеме балансировки нагрузки, отвечать клиенту не зная о внутреннем разделении функций. Это также позволяет клиентам связавшись с фоновыми серверами напрямую, которые могут иметь преимущества в плане безопасности и скрывает структуру внутренней сети и предотвращения атак на ядро, сетевой стек или несвязанные сервисы, работающие на других портах.[1]

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

Для начала работы кластера нужно использовать прокси-сервер для балансировки нагрузки между несколькими рабочими станциями.

^^-

-> NGINX ---Г

Clients -——....... L

BACKEND

Рис. 1. Пример работы балансировщика нагрузки

В качестве такого балансировщика в проекте будет использоваться Nginx, т.к. он имеет широчайший функционал и гибкость при настройке.

Пошаговое руководство по настройки балансировщика нагрузки "Nginx"

1. Установить актуальную версию nginx на одну из рабочих станций, которая будет выступать в качестве прокси-сервера (балансировщика нагрузки)._

$ sudo apt-get update $ sudo apt-get install nginx

2. Перейдем в папку "etc/nginx/sites-available", создадим текстовый файл backend

24

Рис. 1. Список доступных сайтов

3. Для включения балансировки добавим директиву upstream и назовем ее backend_hosts, в которой будут указаны все серверы с внутренними ip-address и портами подключения, между которыми осуществляется балансировка нагрузки.

Основные методы балансировки нагрузки:

• round-robin — используется по умолчанию. Веб сервер равномерно распределяет нагрузку на сервера с учетом их весов. Специально указывать этот метод в конфигурации не надо.

• East-connected — запрос отправляется к серверу с наименьшим количеством активных подключений. В конфигурации данный параметр распределения запросов устанавливается параметром least_conn.

• Ip-hash — используется хэш функция, основанная на клиентском ip адресе, для определения, куда направить следующий запрос. Используется для привязки клиента к одному и тому же серверу. В предыдущих методах один и тот же клиент может попадать на разные серверы.

• Hash — задаёт метод балансировки, при котором соответствие клиента серверу определяется при помощи хэшированного значения ключа. В качестве ключа может использоваться текст, переменные и их комбинации.

• Random — балансировка нагрузки, при которой запрос передаётся случайно выбранному серверу, с учётом весов.

• Least_time — при котором запрос передаётся серверу с наименьшим средним временем ответа и числом активных соединений с учётом весов серверов. (в платной версии существуют дополнительный более продвинутый метод распределения нагрузки). [3]

Также в директиве server указывается порт, на котором будет работать прокси-сервер, указывается его имя, т.е. публичный ip-address. В настройке location будет указываться переменное окружение, которое обеспечивает передачу информации серверу для создания связи между сервером и клиентом.

Рис. 3. Структура файла с настройками балансировщика-нагрузки

В папке "ete/nginx/sites-enabled" указывается ссылка на файл.

4. После настройки переменного окружения перезапускаем сервис командой "service nginx restart"

Контент

• /var/www/html: веб-контент, который по умолчанию состоит только из тестовой страницы Nginx, которую мы видели ранее, находится в директории /var/www/html. Путь к этой директории можно настроить в файлах конфигурации Nginx.

Конфигурация сервера

• /etc/nginx: директория конфигурации Nginx. Все файлы конфигурации Nginx находятся в этой директории.

• /etc/nginx/nginx.conf: основной файл конфигурации Nginx. Этот файл используется для внесения изменений в глобальную конфигурацию Nginx.

• /etc/nginx/sites-available: директория, в которой хранятся "серверные блоки" для каждого сайта (серверные блоки являются приблизительным аналогом виртуальных хостов в Apache). Nginx не будет использовать конфигурационные файлы в этой директории, если они не имеют соответствующих ссылок в директории sites-enabled (см. ниже). Обычно все настройки серверного блока осуществляются в этой директории, а затем сайт активируется путём создания ссылки в другой директории.

• /etc/nginx/sites-enabled/: в этой директории хранятся серверные блоки для активированных сайтов. Обычно это достигается путём создания ссылок на конфигурационные профили сайтов, расположенные в директории sites-available.

• /etc/nginx/snippets: в этой директории хранятся фрагменты конфигурации, которые можно использовать при конфигурации любых сайтов. Фрагменты конфигурации, которые потенциально могут быть использованы в нескольких файлах конфигурации, являются прекрасными кандидатами для создания этих сниппетов.[2]

Логи сервера

• /var/log/nginx/access.log: каждый запрос к вашему веб-серверу записывается в этот файл лога, если иное не задано настройками Nginx.

• /var/log/nginx/error.log: любые ошибки Nginx будут записываться в этот файл.

Список литературы

1. [Электронный ресурс]. Режим доступа: https://ruhigЫoad.com/Балансировка+бэкен1дов

+с+ помощью+nginx/ (дата обращения 24.04.2019).

2. Материал из Википедии — свободной энциклопедии [Электронный ресурс]. -Режим доступа: https://ru.wikipedia.org/wiki/Балансировка_нагрузки (дата обращения 28.04.2019).

3. [Электронный ресурс]. - Режим доступа: https://habr.com/ru/company/selectel/blog/250201/ (дата обращения 22.04.2019).

СОЗДАНИЕ СВЯЗЕЙ В HIBERNATE

1 2 Рубашенков А.М. , Бобров А.В.

1Рубашенков Антон Михайлович - студент; 2Бобров Андрей Виорелович - студент, кафедра защиты информации, Институт комплексной безопасности и специального приборостроения, Российский технологический университет, г. Москва

Аннотация: с помощью фреймворка hibernate открывается возможность удобно работать с базой данных из приложения. Одним из примеров работы с данным фреймворком является описание связей между сущностями в приложении. Hibernate работает только с языком программирования Java, поэтому его реализацию будем рассматривать на данном языке.

Ключевые слова: hibernate, фреймворк, Java, связь, база данных, внешний ключ, аннотация.

УДК 004.031.2

Создание связи один ко многим

Создадим 2 таблицы: client (клиент) и act (акт). Добавим им атрибуты, клиенту: name и surname; акту: denomination и date. Клиент заполняет акт, он может работать с несколькими актами, соответственно от клиента к акту идёт связь «один ко многим». [1] При создании данной связи в таблице act появляется внешний ключ act_client_id, как показано на рисунке 1.

client

client Jd; INTEGER NOT NULL 1 PK !

name: wrcharQOOJ surname: VARCHARUOO) H---

act

i---

□Ctjd: INTEGER MOT NULL ( PK |

denomination: vAfttHДЛ( 1.OO) date: VARCHARUOQ)

act client id; IMTSiSSft NOT NULL ( FK |

Рис. 1. Схема связи «Один ко многим» между клиентом и актом

На основе данной схемы создадим 2 класса QientEntity и ActEntity.

Опишем связь в классе ActEntity.

Для этого создадим переменную clientEntity, в ней будет храниться клиент, привязанный к данному акту. [2]

private ClientEntity clientEntity;

Далее опишем саму связь.

Параметр fetch обозначает силу связи, выбираем сильную связь, так как в других типах в данном случае нет необходимости. Параметр cascade указывает каскадная ли связь, в данном случае связь каскадная. [3]

Аннотация @JoinColumn используется для указания связи, где параметр name означает имя внешнего ключа.

@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL) @JoinColumn(name = "act_client_id")

i Надоели баннеры? Вы всегда можете отключить рекламу.