Описание

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

FortiGate обеспечивает комплексную защиту вашей инфраструктуры и балансирует нагрузки серверов, распределяя потоки трафика по заданным правилам, что позволяет объединить в одном устройстве функции балансировщика нагрузки, Next Generation Firewall (NGFW) и защиту от угроз.

Балансировка нагрузки на основе решений FortiGate обеспечивает:

  • быструю и надежную обработка запросов;
  • значительное упрощение сетевой архитектуры;
  • снижение операционных расходов.

Балансировщик нагрузки поддерживает HTTP, HTTPS, IMAPS, POP3S, SMTPS, SSL или более низкоуровневые протоколы TCP/UDP или IP. Сохранение сеанса поддерживается на основе идентификатора сеанса SSL или на основе введенного файла cookie HTTP.

Перед началом работы

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

  1. Перейдите в SystemFeature Visibility.
  2. Включите Load Balance в списке Additional Features.

В данном примере будут рассмотрены настройки Load Balancing для HTTP и HTTPS на аппаратном FortiGate-100E, первоначальную базовую настройку которого можно провести согласно инструкциям по настройке межсетевых экранов. В качестве серверов используются облачные серверы в Облачной платформе Selectel.

FortiGate и проект в Облачной платформе соединены приватной сетью, для подключения которой используется L3VPN между регионами и услугами, что позволяет устанавливать за межсетевым экраном также выделенные серверы и серверы в Облаке на базе VMware.

Термины и определения

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

Трафик может распределяться между серверами на основе методов:

  • static — равномерное распределение нагрузки между серверами по заранее определённому алгоритму, не учитывая занятость серверов;
  • round-robin — распределение на основе алгоритма round-robin, выполняющего перебор равнозначных между собой серверов по циклу, независимо от времени ответа или количества подключений;
  • weighted — распределение на основе присвоенных весов серверам для учёта особенностей и различий, где серверы с большим значением веса получают больший процент подключений;
  • least-session — распределение, при котором запросы направляются на сервер, имеющий наименьшее количество текущих подключений, рекомендуется использовать при схожих возможностях серверов;
  • least-rtt — распределение на основе Round-Trip-Time (время приема-передачи), при котором запросы направляются на сервер с наименьшим таким показателем, который определяется монитором Ping health check и по умолчанию равно 0, если Ping health check не установлен;
  • first-alive — раздача нагрузки на первый действующий сервер, обеспечивая защиту от сбоя: сеансы не распределяются между серверами, а обрабатываются одним “первым”, пока он “живой”, а затем переключается на другой работающий сервер;
  • http-host — распределение на основе HTTP-заголовка хоста, чтобы направить соединение к определенному серверу.

Health Check

Health Check — механизм проверки работоспособности серверов для предотвращения отправки трафика балансировки нагрузки на неработающие серверы. Для проверки используется ICMP ping или другое более сложное тестирование TCP-соединений. Health Check удаляет из кластера балансировки нагрузки неработающие реальные серверы. Удаление реальных серверов из кластеров основано на настройках:

  • Interval — с какой частотой проверяется сервер;
  • Timeout — максимальное допустимое время ответа, прежде чем сервер будет считаться недоступным;
  • Retry — количество отказов до того, как сервер считается недоступным, после чего удаляется.

Типы Health Check по протоколам: TCP, HTTP, PING.

Virtual Server

Virtual Server — виртуальный сервер, на чей внешний IP-адрес поступает трафик, который перенаправляется к балансировщику нагрузки.

Real Server

Real Server — действительный, реальный, сервер, на который поступают запросы после балансировки. За каждым виртуальным сервером может быть закреплено несколько реальных серверов. Конфигурация реального сервера включает IP-адрес и номер порта, на котором реальный сервер принимает сеансы. Устройство FortiGate отправляет сеансы на IP-адрес реального сервера, используя номер порта назначения в реальной конфигурации сервера. Конфигурация сервера включает его IP-адрес и номер порта, на котором принимает сеансы.

SSL Offloading

SSL Offloading — механизм ускорения SSL-соединения клиентов с сервером, при котором операции шифрования производятся на FortiGate вместо самих серверов с помощью отдельного специального процессора. Данный механизм можно применить, только если для балансировки нагрузки задан тип одного из протоколов SSL (HTTPS, IMAPS, POP3S, SMTPS, SSL). FortiGate предоставляет возможность выбрать, какие сегменты SSL-соединения будут получать разгрузку SSL, определив режим:

  • Client ⟷ FortiGate — режим, при котором аппаратно ускоренная обработка SSL/TLS только в части соединения между клиентом и устройством FortiGate. Этот режим называется half mode SSL offloading. Сегмент между устройством FortiGate и сервером будет использовать открытое (clear text) соединение, что обеспечит лучшую производительность;
  • Full — режим, при котором применяется аппаратно ускоренная обработка SSL к обеим частям соединения: сегментом между клиентом и блоком FortiGate и сегментом между блоком FortiGate и сервером, то есть Client ⟷ FortiGate ⟷ Server. Сегмент между устройством FortiGate и сервером будет использовать шифрованное соединение, но “рукопожатия” будут сокращены. Это не так эффективно, как разгрузка SSL в half mode, но все же повышает производительность.

HTTP multiplexing

HTTP multiplexing — функция, которая позволяет веб-клиенту использовать одно соединение TCP для всех запросов к серверу. Данная особенность снижает нагрузку на веб-сервер за счет установки единого соединения, по которому параллельно отправляются запросы и ответы. Каждый фрагмент ассоциируются с помощью специальных встроенных мета-данных, что обеспечивает возможность корректной обработки множества несвязанных запросов HTTP или HTTPS в различном порядке в одном и том же соединении. Более того, ответы получаются по мере их готовности, следовательно, тяжелые запросы не будут блокировать обработку и выдачу более простых объектов.

Например, если веб-браузеры пользователей совместимы только с HTTP 1.0, в котором данная функция не реализована, то включение опции HTTP multiplexing может повысить производительность между веб-сервером и FortiGate.

Persistence

Persistence — параметр, который сохраняет и отслеживает данные сеанса, чтобы убедиться, что пользователь подключается к одному и тому же серверу каждый раз, когда он делает запрос, являющийся частью одного и того же сеанса или последующих сеансов. HTTP cookie persistence использует внедренные файлы cookie для обеспечения сохраняемости.

При настройке Persistence FortiGate балансирует нагрузку нового сеанса на реальный сервер в соответствии с методом балансировки нагрузки. Если у сеанса есть HTTP cookie или идентификатор сеанса SSL, устройство FortiGate отправляет все последующие сеансы с одним и тем же файлом cookie HTTP или идентификатором сеанса SSL на один и тот же реальный сервер.