Как подключить Cloudflare

Богатые сложные правила для расширенной балансировки нагрузки

Богатые сложные правила для расширенной балансировки нагрузки

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

Что сегодня важно для балансировки нагрузки?

Мы больше не живем в эпоху, когда установка фиксированного количества серверов в центре обработки данных достаточна для удовлетворения стремительного роста числа пользователей, просматривающих Интернет. Это означает, что мы давно прошли время, когда существует универсальное решение, удовлетворяющее потребности различных предприятий. Сегодня клиенты ищут балансировщики нагрузки, которые просты в использовании, быстро распространяют изменения и — особенно сейчас — обеспечивают максимальную гибкость функций. Гибкость функций стала настолько важной, потому что у разных компаний разные пути к успеху и, следовательно, разные проблемы! Давайте рассмотрим несколько распространенных случаев использования:

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

Теперь вы можете создавать сложные настраиваемые правила для направления трафика с помощью Cloudflare Load Balancing, что дает клиентам возможность создавать свою собственную логику на основе их решений по управлению трафиком и выбору источника. Как мы уже упоминали, в современном мире не существует универсального решения. Мы предоставляем инструменты для простого и быстрого создания правил, которые точно соответствуют требованиям, необходимым для уникальной ситуации и архитектуры любого клиента. Вдобавок ко всему, мы также поддерживаем в правиле операторы «и» и «или», позволяя создавать очень мощные и сложные правила для любой ситуации!

Балансировка нагрузки по путям становится простой, требуя всего несколько минут для ввода путей и некоторых логических операторов для создания сложных правил. Управляйте конкретным заголовком, строкой запроса или файлом cookie. Это больше не проблема. Воспользуйтесь дизайном DNS с разделением горизонта, создав правило, учитывающее исходный IP-адрес, а затем выполняя маршрутизацию в соответствующий пул на основе значения. Это лишь небольшая часть очень надежных возможностей, которые пользовательские правила балансировки нагрузки предоставляют нашим пользователям, и это только начало! Мы не только имеем большое количество функциональных возможностей прямо из коробки, но также обеспечиваем единообразный, интуитивно понятный интерфейс, опираясь на наш механизм правил брандмауэра.

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

Крупные транзакции для электронной торговли

Для любого бизнеса с большими объемами транзакций, такого как электронная коммерция или розничный магазин, обеспечение того, чтобы транзакции проходили как можно быстрее и надежнее, является обязательным требованием. По мере увеличения объема транзакций ни один источник не может обрабатывать входящий трафик, и это не всегда имеет смысл. Почему запрос на транзакцию отправляется по всему миру в специально назначенный источник для обработки платежа? Такая настройка только добавит задержки, что приведет к снижению производительности, увеличению количества ошибок и ухудшению качества обслуживания клиентов. Но что, если бы вы могли создать собственную логику для сегментации транзакций на разные исходные серверы на основе определенного значения в строке запроса, например PS5 (связанной с популярной Sony PlayStation 5)? Что, если бы вы могли связать это значение с динамическим управлением задержкой, чтобы балансировщик нагрузки всегда выбирал наиболее эффективный путь к источнику? Это изменит правила игры, чтобы не только обеспечить надежность и скорость транзакций со ставками, но и значительно улучшить качество обслуживания клиентов. Вы можете сделать это за считанные минуты с помощью настраиваемых правил балансировки нагрузки:

Богатые сложные правила для расширенной балансировки нагрузки

Для любых запросов, в которых в строке запроса указано «PS5», следует выполнять маршрутизацию в зависимости от того, какой пул является наиболее эффективным.

Балансировка нагрузки между несколькими поставщиками DNS для поддержки конфиденциальности и безопасности

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

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

Богатые сложные правила для расширенной балансировки нагрузки

Это также может быть чрезвычайно полезно, если ваши центры обработки данных расположены в нескольких областях земного шара, которые не соответствуют 13 текущим регионам в Cloudflare. Сегментируя направление трафика на основе IP-адреса источника, вы можете создать тип настройки геоуправления, который также точно настроен на требования бизнеса!

Как мы это построили?

Мы создали правила балансировки нагрузки на основе нашего механизма выполнения каркасного фильтра с открытым исходным кодом. Люди, знакомые с правилами брандмауэра и другими продуктами, заметят похожий синтаксис, поскольку оба продукта построены на основе этого механизма выполнения.

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

DNS против прокси?

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

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

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

Эти разные режимы означают, что поля, доступные для каждого, в конечном итоге будут совершенно разными. Балансировщик нагрузки DNS получает доступ к специфичным для DNS полям, таким как «dns.qry.name» (имя запроса), в то время как наш прокси-балансировщик нагрузки имеет доступ к «http.request.method» (метод HTTP, используемый для доступа к проксируемому ресурсу. ). Некоторые более общие поля, такие как имя используемого балансировщика нагрузки, доступны в обоих режимах.

Богатые сложные правила для расширенной балансировки нагрузки

Как это работает под капотом?

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

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

Хотя DNS и прокси-балансировщики нагрузки имеют доступ к разным полям, а сами протоколы сильно различаются, два пути кода частично перекрываются. Когда любой тип запроса попадает в наш балансировщик нагрузки, мы сначала загружаем конкретные данные конфигурации балансировщика нагрузки из нашего пограничного хранилища данных. Этот объект содержит все «статические» данные для балансировщика нагрузки, такие как правила, источники, пулы, политику управления и т. Д. Мы загружаем динамические данные, такие как состояние источника и данные RTT, при оценке каждого пула.

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

Что будет дальше?

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

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

Что такое Cloudflare