Настройка агрегации каналов(bonding) на Mikrotik

Перевод статьи: Tomasz Andrzej Nidecki — nginx Security: How To Harden Your Server Configuration

Требования

  • Не-root пользователь с доступом sudo
  • Предварительно установленный веб-сервер Nginx. Инструкции по установке стека LEMP в Ubuntu можно найти здесь.

Кроме того, для выполнения предложенных в руководстве примеров нужно иметь два доменных имени; в руководстве используются условные домены и . Не забудьте заменить их своими доменными именами.

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

Настройка bonding интерфейса

Подключаемся через winbox к маршрутизатору Mikrotik. Заходим в меню interfaces и открываем вкладку bonding. Нажимаем «+», добавить.

В поле Name вписываем название создаваемого канала. Переходим на вкладку «Bonding»

Slaves –Выбираем интерфейсы  которые мы хотим объединить в бондинг. Если нужно добавить больше портов, нажмите на треугольник с левой стороны.

Настройка bonding интерфейса

Mode – режим работы принимает следующие значения:

Balance rr – балансировка round-robin, пакеты отправляются по очереди с первого порта  и до последнего по кругу, при выходе одного из интерфейсов из строя, оставшиеся продолжают работать, таким образом обеспечивается отказоустойчивость, если порты подключены к разным коммутаторам требуется их настройка.

802.3ad – агрегирование интерфейсов, создается группа интерфейсов, при приеме и передаче используются все линки, таким образом,  увеличивается пропускная способность канала. Требуется поддержка коммутатора и его дополнительная настройка.

Active backup – активный-резервный, при такой политике один линк активный и пакеты отправляются через него, остальные в это время не работают, при выходе из строя активного интерфейса, в работу вступает один из резервных. При таком режиме дополнительной настройки от коммутатора не требуется.

Читайте также:  15 Примеров использования в linux команды top

Balance tlb — Политика адаптивной балансировки нагрузки передачи. Исходящий трафик распределяется в зависимости от загруженности каждого порта (определяется скоростью загрузки). Не требует дополнительной настройки на коммутаторе. Входящий трафик приходит на активный линк. Если он выходит из строя, то другой порт берёт себе MAC адрес вышедшего из строя. Недостатком этого режима является то, что поддерживается только мониторинг каналов mii

balance-alb  — политика  в основном такой же, как balance-tlb, но входящий трафик также сбалансирован.

Настройка bonding интерфейса

balance-xor — Этот режим уравновешивает исходящий трафик через активные линки на основе хешированной информации заголовка протокола и принимает входящий трафик от любого активного линка. Режим очень похож на LACP, за исключением того, что он не стандартизован и работает с хеш-политикой layer-3-and-4.

broadcast — Все пакеты передаются на все линки. Политика  обеспечивает отказоустойчивость. Это политика не обеспечивает балансировку нагрузки. Остальные настройки оставляем как есть , если только не выбран политика  Active backup, если выбрали этот режим то в поле  Primary выберите активный интерфейс. После выбора нужного режима работы переходим к следующему шагу

Как используется и работает nginx

NGINX является широко используемым продуктом в мире IT, по популярности уступая лишь Apache. Как правило, его используют либо как самостоятельный HTTP-сервер, используя в бекенде PHP-FPM, либо в связке с Apache, где NGINX используется во фронтэнде как кеширующий сервер, принимая на себя основную нагрузку, отдавая статику из кеша, обрабатывая и отфильтровывая входящие запросы от клиента и отправляя их дальше к Apache. Apache работает в бекэнде, работая уже с динамической составляющей проекта, собирая страницу для передачи её в кеш NGINX и запрашивающему её клиенту. Это если в общих чертах, чтобы понимать суть работы, так-то внутри всё сложнее.

Контекст events

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

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

Читайте также:  Безграничное число Линуксов — какой же выбрать?

ulimit -n

Значение скорее всего будет равно 1024, это значение можно задать для worker_connections.

Директива use задает метод обработки соединений, в Linux следует использовать метод epoll. Включение multi_accept позволяет принимать максимально возможное количество соединений.

events { # Максимальное число соединений на один рабочий процесс worker_connections 1024; # Метод обработки соединений use epoll; # Принимаем максимально возможное количество соединений multi_accept on; }

Gunicorn

Как только Nginx решит, что конкретный запрос должен быть передан в Gunicorn (согласно правилам, по которым он был настроен), в работу вступает Gunicorn.

Gunicorn действительно хорош в том, что он делает! Он высоко оптимизирован и имеет множество удобных функций. В основном, его работа состоит из:

  • Запуск пула рабочих процессов / потоков (выполнение вашего кода!)
  • Переводит запросы, поступающие от Nginx, для совместимости с WSGI
  • Переведит ответы WSGI вашего приложения в правильные ответы HTTP
  • На самом деле вызывает код Python, когда приходит запрос
  • Gunicorn может общаться с различными веб-серверами

Что Gunicorn не может сделать для вас:

  • Не может работать с фронтендом
  • Не может поддерживать работу по SSL (без обработки https)
  • Не может обеспечить работу полноценного веб-сервера, как например Nginx

Gunicorn — только один из многих серверов WSGI. Вашему приложению не важно, какой веб сервер вы используете. Но Gunicorn — отличный выбор!

PythonИнформатика ПрограммированиеВ вашем браузере отключен Javascript. Чтобы произвести расчеты, необходимо разрешить элементы ActiveX!

Шаг Выбор алгоритма балансировки

HAProxy предлагает несколько алгоритмов балансировки, и в зависимости от вашей задачи можно выбрать наиболее подходящий:

  • roundrobin — каждый сервер получает запросы пропорционально своему весу, при этом веса серверов могут меняться на лету
  • static-rr — то же, что и roundrobin, только изменение весов на лету не даст никакого эффекта
  • leastconn — выбирает сервер с наименьшим количеством активных соединений
  • first — выбирает первый сервер с доступными слотами для соединения
  • source — на основе хэша IP-адреса отправителя запроса и весов серверов назначается сервер для соединения
  • uri — сервер выбирается на основе адреса (без параметров) страницы
  • url_param — сервер выбирается на основе GET-параметров запроса
  • hdr — сервер выбирается на основе заголовков запроса
  • rdp-cookie — сервер выбирается на основе cookie (если они не установлены, то применяется обычный round robin)
Читайте также:  Создание в Linux загрузочной флешки Windows UEFI

Шаг Мониторинг журналов Access и Error

Если вы постоянно отслеживаете и управляете лог-файлами nginx, вы можете лучше понимать запросы, отправленные на ваш веб-сервер, а также заметить любые обнаруженные ошибки. Это поможет вам обнаружить любые попытки атаки, а также определить, что вы можете сделать, чтобы оптимизировать производительность сервера.

Вы можете использовать инструменты управления журналами, такие как logrotate, чтобы обновлять и сжимать старые журналы и освобождать дисковое пространство. Кроме того, модуль ngx_http_stub_status_module предоставляет доступ к основной информации о состоянии. Вы также можете использовать nginx Plus, коммерческую версию nginx, которая обеспечивает мониторинг активности трафика, нагрузки и других показателей в режиме реального времени.

Заключение

Nginx представляет собой практически готовое решение для множества задач, требующих развёртывания полноценного веб-сервера или прокси. По ряду параметров Nginx превосходит своего «старшего коллегу» Apache. Главные из них — отсутствие требовательности к ресурсам и способность обрабатывать большое число соединений одновременно.

Понимание работы и принципа обработки запросов в Nginx позволяет грамотно масштабировать и балансировать нагрузку на современных сайтах, располагающих контентом разных категорий. А связка Nginx и Apache позволяет максимально расширить эффективность применения веб-сервера.

Заключение

Чтобы Nginx, Apache и другой сложный «софт» работал, как швейцарские часы, разверните их на виртуальном сервере от Eternalhost! Это мощный и надёжный инструмент для самых неординарных задач в области IT.

Оцените материал: [Всего голосов: 5 Средний: 4.6/5]