INTEGRITY Документация

Персистентность DNS

В этом руководстве объясняется, как обеспечить постоянство DNS при использовании Cloudflare Load Balancing, аналогично функциональности традиционных балансировщиков нагрузки на основе DNS.

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

Cloudflare Load Balancing может обеспечивать DNS persistence разными способами настройки для DNS-only балансировки нагрузки.


Персистентность балансировки нагрузки в режиме DNS-only

Для балансировки нагрузки только средствами DNS Cloudflare предлагает три метода обеспечения устойчивости DNS:

Этот метод использует географическое направление трафика на основе точки присутствия Cloudflare (PoP), принимающей DNS-запрос.

Шаги настройки

  1. Создайте пул для каждой конечной точки. Не применяйте load shedding ни к одному из пулов.
  2. Создайте DNS-only балансировщик нагрузки и добавьте оба пула. Убедитесь, что pool_1 располагается перед pool_2.
  3. В разделе Балансировка трафика, выберите Geo Steering.
  4. Создайте правило geo-steering для региона (например, Восточная Северная Америка) и выберите те же пулы, но в обратном порядке (pool_2 сначала, а затем pool_1).
  5. Используйте Never prefer ECS и Расположение PoP чтобы определить источник запроса.

Как это работает

Все запросы, поступающие в PoP Cloudflare в указанном регионе, направляются на одну конечную точку, тогда как запросы из других регионов направляются на другую конечную точку.

Использование PoP Cloudflare, принявшей запрос, в качестве критерия распределения трафика более стабильно, чем IP-хеширование или разделение IP-пространства, поскольку это не зависит от рекурсивных DNS-провайдеров, использующих разные исходящие IP-адреса.

Метод 2: сброс нагрузки с хешированием IP-адреса

Этот метод использует сброс нагрузки для распределения трафика на основе исходного IP-адреса рекурсивного DNS-резолвера.

Шаги настройки

  1. Создайте пул для каждой конечной точки (например, pool_1 с endpoint_1 и pool_2 с endpoint_2).
  2. В первом пуле выберите Хеш в разделе Балансировка трафика между конечными точками.
  3. Настройте Сброс нагрузки:
    • Политика: IP Hash
    • Сброс, %: 50% (чтобы равномерно распределить трафик между двумя пулами)
  4. Создайте DNS-only балансировщик нагрузки и добавьте оба пула. Убедитесь, что pool_1 располагается перед pool_2.
  5. Не настраивайте дополнительное управление трафиком или правила.

Как это работает

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

Ограничения

Некоторые рекурсивные DNS-провайдеры (например, Google DNS 8.8.8.8 или Quad9 9.9.9.9) могут случайным образом использовать разные исходящие IP-адреса, что снижает стабильность привязки сессий.

Метод 3: пользовательские правила с фильтрацией по IP-адресу источника

Этот метод использует пользовательские правила для разделения трафика на основе диапазонов IP-адресов.

Шаги настройки

  1. Создайте пул для каждой конечной точки. Не применяйте load shedding ни к одному из пулов.
  2. Создайте DNS-only балансировщик нагрузки и добавьте оба пула. Убедитесь, что pool_1 располагается перед pool_2.
  3. Не настраивайте управление трафиком.
  4. Создайте Пользовательское правило с:
    • Поле: IP Source Address
    • Оператор: находится в
    • Значение: подмножество IP-адресного пространства (например, 0.0.0.0/1 для нижней половины адресного пространства IPv4)
  5. В качестве действия правила выберите Переопределение > Конечные точки и расположите пулы в обратном порядке (pool_2, pool_1).

Как это работает

Трафик с исходными IP-адресами из нижней половины адресного пространства IPv4 отправляется на одну конечную точку, а трафик из верхней половины отправляется на другую.

Ограничения

Как и метод 2, этот подход может быть менее стабильным у рекурсивных DNS-провайдеров, использующих разные исходящие IP-адреса.