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

Обратный прокси-сервер — это служба, которая принимает запрос клиента, отправляет запрос одному или нескольким прокси-серверам, получает ответ и доставляет ответ сервера клиенту.

Вступление

Nginx хорошо себя показывает, когда выполняет запросы к веб-страницам, однако несмотря на это, сервис Google's PageSpeed Insights tool обычно не очень хорошо оценивает сайты, которые работают на серверах со стандартными настройками Nginx. А ведь именно скорость вашего сайта является одним из ключевых моментов при ранжировании в поисковой выдаче.

Поэтому это руководство посвящено тому, как при помощи небольших изменений в настройках увеличить скорость отклика сайта и, соответственно, поднять PageSpeed metric. Цель – получить больше 80/100 баллов, так как это порог, после которого Google ставит зеленый маркер вашему сайту, считая его быстрым.Первое, с чего следует начинать, — это с включения Gzip-сжатия некоторых видов файлов. Затем нужно будет настроить браузерное кэширование. Оба этих действия увеличат скорость любого сайта, запущенного на Nginx, вне зависимости от ПО или используемой CMS. Это работает даже в случае, даже если ваш сайт находится на VDS – главное, чтобы сервер работал на Nginx, и вы могли редактировать конфигурационный файл.

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

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

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

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

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

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

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

Читайте также:  iPhone 5s на iOS 13: поддерживается или нет?

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

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

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

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

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

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

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

Передача заголовков запроса

Когда Nginx проксирует запрос, он автоматически определяет два поля заголовка в проксируемых запросах от клиента, Host и Connection , и удаляет пустые заголовки. Host установлен на переменную $proxy_host , а Connection установлено на закрытие.

Читайте также:  Команды Linux, которые должен знать каждый пользователь

Чтобы настроить или установить заголовки для прокси-соединений, используйте директиву proxy_set_header , за которой следует значение заголовка. Вы можете найти список всех доступных заголовков запросов и их разрешенные значения здесь . Если вы хотите предотвратить передачу заголовка на прокси-сервер, установите для него пустую строку "" .

В следующем примере мы меняем значение поля заголовка Host на $host и удаляем поле заголовка Accept-Encoding , устанавливая его значение в пустую строку.

location / { proxy_set_header Host $host; proxy_set_header Accept-Encoding «»; proxy_pass http://localhost:3000; }

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

Настройка конфигурации

Root-каталог Nginx по умолчанию находится в директории /usr/share/nginx/html. Все файлы, которые размещаются в нем, автоматически обслуживаются веб-сервером. Место определяется файлом конфигурации, который можно найти в /etc/nginx/conf.d/

Новые блоки server создаются через конфигурационные файлы в /etc/nginx/conf.d. Они буду загружаться при запуске Nginx, если заканчиваются на .conf.

Основной конфигурационный файл сервера находится в /etc/nginx/ Через него изменяются любые настройки.

MPLS Load Balancing

Не IP единым, как говорится. Много где бегает MPLS. Возможно, это не совсем относится к датацентровым сетям, но мы же не только про них говорим.

В MPLS-метке не так уж много разнообразия. Она указывает или на некстхоп, или на операции демультиплексирования/коммутации, и ничего не знает о внутренних протоколах пакета. Так, транспортная одинакова для всего трафика, идущего на конкретный FEC. Сервисная имеет чуть больше деталей. Однако и она скрывает за собой или вообще весь трафик одного VPN, или, в лучшем случае (если это L3), весь префикс. Понимая это, производители научили свои чипы заглядывать под заголовки MPLS. Но лишь под определённое их число. Кто-то может заглянуть под 3, кто-то — под 4. Максимум — под 5, не больше. Поэтому, если у вас на сети Carrier Supports Carrier с каким-нибудь TE Fast Reroute, вам придётся быть очень аккуратным при планировании балансировки.

Читайте также:  Заправка картриджей Samsung

Ограничение количества меток объясняется тем, что ASIC"и обычно не поддерживают циклы и перебирать стек итеративно не получится. Да и в случае NP (сетевых процессоров), циклы непредсказуемо меняют задержку обработки пакета и пропускную способность, потому что заголовок придётся прогнать через контур неизвестное число раз — а это тоже нежелательно.

Но как понять, что нагрузка под заголовком MPLS — IP-пакет? Очень просто: анализируем первые 4 бита. Если в них 0x4 или 0x6, значит это IPv4 или IPv6 — и тогда берётся стандартный 5-Tuple (SIP, DIP, Protocol, SPort, DPort). Это делают все вендоры и не стесняются в этом признаться. Любой другой способ категоризации нижележащего протокола будет несравнимо дороже. Если дальше идёт Ethernet, то следующим полем будет DMAC. И, как бы тут, упаси боже, чтобы DMAC начинался на 0х4/0x6 — тогда такую шикарную балансировку можно получить, что свет белый не взвидишь. Поэтому для сервисов L2VPN может добавляться Control Word, который гарантирует, что в первых четырёх битах не будет 0x4/0x6.

Некоторые вендоры умеют определять Ethernet-заголовок и, соответственно балансировать по 2-Tuple (DMAC, SMAC). В совсем плачевной ситуации, когда ничего не понятно с типом нагрузки, можно брать для расчёта хэша:

  • Сколько-то битов нагрузки (например, 16).
  • Самую нижнюю метку.
  • Две нижние метки.
  • Весь стек меток.
  • Любые комбинации пунктов выше.

И всё же, что делать, если меток больше трёх, если тип нагрузки неизвестен и P-маршрутизатор не может определить, как балансировать? На помощь спешит Entropy Label RFC6790.