Балансировка нагрузки

Если ваш ресурс обслуживается несколькими серверами, то вы можете настроить в личном кабинете несколько апстримов, соответствующих этим серверам. В этом случае обратный прокси Qrator Labs может использоваться не только для защиты от нелегитимного трафика, но и для балансировки легитимного трафика между апстримами.

Балансировка осуществляется независимо на каждом из центров очистки трафика Qrator Labs, которые расположены в разных регионах мира.

Настроить балансировку нагрузки можно в разделе Апстримы личного кабинета.

Переключение между списками апстримов

В личном кабинете вы можете задать один или два списка апстримов (по умолчанию включён только один список). Первый список считается основным, а второй — запасным.

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

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

Алгоритмы выбора апстрима

Qrator Labs поддерживает два алгоритма выбора апстрима: Round robin и IP hash. В личном кабинете вы можете указать, какой из этих алгоритмов следует использовать. Выбранный алгоритм будет использоваться как для балансировки между апстримами основного списка, так и для балансировки между апстримами запасного списка.

На работу каждого алгоритма можно повлиять, указав для апстрима целочисленный вес. В зависимости от используемого алгоритма вес апстрима интерпретируется по-разному. Апстримы с нулевым весом считаются отключёнными и не участвуют в балансировке, трафик на них не поступает. Если веса не указаны, то считается, что вес каждого апстрима равен единице.

Round robin

Алгоритм Round robin работает со списком апстримов как с очередью в том порядке, в котором вы расположили их в личном кабинете. По умолчанию каждый апстрим используется для обработки одного запроса, прежде чем очередь переходит к следующему апстриму. Таким образом, алгоритм обеспечивает равномерное распределение запросов между всеми апстримами из соответствующего списка.

Вес апстрима определяет, какая доля запросов будет направлена на этот апстрим.

Пример

Если вы используете алгоритм Round robin для двух апстримов с весами 1 и 2, то из каждых трёх запросов первый будет обработан первым апстримом, а второй и третий — вторым.

IP hash

Алгоритм IP hash выбирает апстрим в зависимости от IP-адреса запроса, при этом повторные запросы с того же IP-адреса передаются тому же апстриму. Этот алгоритм выгоден, если желательно, чтобы все запросы одного пользователя обрабатывались одним и тем же апстримом — например, для более эффективного использования кеша на каждом сервере.

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

Пример

Если вы используете алгоритм IP hash для двух апстримов с весами 1 и 2, то из 3 000 первых запросов пользователей с уникальными IP-адресами в среднем около 1 000 будут направлены на первый апстрим и около 2 000 на второй. Распределение дальнейших запросов этих пользователей зависит от самих пользователей и может сильно отличаться от первоначального.

Проверка доступности апстримов

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

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

Доступны два метода проверки доступности апстримов:

Пассивная проверка

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

Для анализа используются только безопасные типы запросов (см. Обработка ошибок). Если более трети таких запросов к апстриму, сделанных в течение трёх секунд, завершилось с ошибками, то центр очистки трафика перестаёт делать запросы к данному апстриму по обычному алгоритму. Вместо этого на апстрим направляется не более одного запроса в три минуты, и если обработка очередного запроса завершается успешно, то апстрим вновь считается доступным.

Обратите внимание, что некоторые типы запросов не повторяются после неудачной отправки, см. Обработка ошибок. Поэтому при пассивной проверке доступности пользователи могут видеть ошибки чаще, чем при активной проверке.

Активная проверка

Чтобы реагировать на недоступность апстримов раньше, чем она проявится в многократных ошибках при обработке запросов от реальных пользователей, вы можете использовать активную проверку. При активной проверке центр очистки трафика регулярно делает диагностические запросы к определённому URL на каждом апстриме. Решение о том, использовать ли апстрим, принимается на основе результатов таких запросов.

Все параметры активной проверки настраиваются индивидуально по обращению в техническую поддержку:

  • Какой запрос центр очистки трафика будет делать к апстриму.

    Настраиваются протокол (HTTP или HTTPS), URL и метод HTTP. При необходимости вы также можете указать параметры запроса — например, специальный токен, чтобы апстрим мог отличать диагностические запросы от запросов пользователей.

  • Как часто необходимо совершать проверку.

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

  • Какие результаты проверок считаются успешными.

    В зависимости от особенностей вашего ресурса, успешными можно считать либо ответы со всеми статусами, кроме ошибок сервера (HTTP 5xx), либо только ответы со статусом HTTP 200.

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

Обработка ошибок

После каждого запроса к апстриму центр очистки трафика Qrator Labs анализирует, завершился ли запрос успешно или произошла ошибка. Ошибки отображаются в разделе Статистика личного кабинета, а также влияют на дальнейшее поведение этого центра очистки трафика.

Ошибкой считается любая из следующих ситуаций:

  • Соединение с апстримом потеряно, и центру очистки трафика не удаётся восстановить соединение в течение 15 секунд.
  • Апстрим не ответил на запрос в течение 60 секунд или прислал неполный (некорректный) ответ.
  • Апстрим вернул ответ со статусом 502 Bad Gateway или 504 Gateway Timeout.

Порядок обработки ошибок отличается для небезопасных (unsafe) и безопасных (safe) типов запросов (см. RFC 7231):

  • Небезопасными считаются запросы POST, PUT, PATCH, DELETE, CONNECT.

    Такие запросы не направляются повторно ни тому же, ни другому апстриму, поскольку это может нарушить логику работы приложения. Пользователь всегда получает первый ответ апстрима либо, если от апстрима не удалось получить ответ, ответ со статусом 502 Bad Gateway или 504 Gateway Timeout в зависимости от причины проблемы.

  • Безопасными считаются запросы GET, HEAD, OPTIONS, TRACE.

    Прежде чем возвращать ошибку пользователю, центр очистки трафика последовательно направляет запрос другим апстримам из списка и дожидается ответов от них. Если какой-либо апстрим обработает запрос без ошибок, его ответ будет возвращён пользователю. Если центр очистки трафика переберёт все апстримы, не получив успешного ответа, то он вернёт пользователю ответ со статусом ошибки от последнего апстрима. При этом, если от последнего апстрима не удалось получить ответ, то центр очистки трафика сам сформирует пользователю ответ со статусом 502 Bad Gateway или 504 Gateway Timeout в зависимости от причины проблемы.

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

Каждая ошибка отражается в личном кабинете в разделах Аналитика и Сводка. Чтобы оперативно узнавать о проблемах с доступностью ресурса, обратитесь к специалистам технической поддержки Qrator Labs, и они настроят подходящие вам автоматические уведомления, которые будут срабатывать после определённого количества ошибок.

expand_less