DNS балансировка и немного нервно

Привет, сегодня слегка не типичный материал из моих загашников, может кому-то пригодится)
It's Always DNS

Итак, приступим:
Балансировка DNS используется для распределения нагрузки между несколькими серверами.

Зачем нужна DNS балансировка?

this site cant be reached
DNS сервер получает запрос от клиента и отправляет ему соответствующий ip-адрес. Проще говоря, любой ресурс в интернете имеет собственный цифровой ip-адрес типа 192.168.0.100. Но так как использовать такие адреса не очень удобно для человека, домены имеют буквенное и обычно интуитивно понятное обозначение вроде mail.ru - почта в домене ru все понятно и легко запомнить. DNS получает информацию о запросе и отправляет клиента на нужный сервер, другими словами преобразует буквы в цифры согласно хранящимся на нем записям.
Например если ввести в браузере http://216.58.208.46 то попадем в google.com. Чтобы не вводить каждый раз эту длинную последовательность цифр, это за нас делают DNS сервера. Обычно домен имеет одну запись ip-адреса на DNS сервере - запись A. Как следствие, чтобы зайти на сайт, нам нужен один и тот же ip-адрес.
Порой клиентов слишком много и нагрузка на приложения или сайты сильно поднимается. Сервер на котором расположен домен может не справиться с нагрузкой, что может привести к его сбоям или даже временной недоступности. Кроме того, сервера, как и любое другое железо, могут периодически выходить из строя - сбой в программе, атака хакеров, свет за неуплату в серверной выключили. Чтобы избежать проблем с доступностью приложения в таких случаях может использоваться балансировка DNS Round Robin.
Балансировка DNS Round Robin это метод распределения нагрузки, который позволяет указывать несколько ip-адресов для одного домена на DNS сервере. То есть при обращении к google.com через браузер один клиент получает ip-адрес 216.58.208.46, а другой скажем 216.58.212.142. Это позволяет домену быть всегда доступным, даже если один из серверов выйдет из строя или будет сильно загружен.

N.B. Для тех кто в танке и не понимает о чем речь, но все еще не закрыл статью - вот вам хороший клип в тему:

 

В каких случаях Round Robin не поможет?

Балансировка DNS с помощью алгоритма Round Robin предполагает, что IP адреса будут выдаваться по очереди, но это никак не стандартизировано.
Кроме того IP адреса доменов полученные с сервера DNS кэшируются на стороне клиента в браузере или специальном приложении и могут храниться длительное время, в зависимости от заданного параметра ttl. Типичное значение ttl для DNS - 24 часа, то есть если один из серверов вышел из строя или изменил ip, то информация об этом дойдет до клиента только через сутки, так как он будет пользоваться локальной версией dns записи сайта.
Round Robin также не включает распределение адресов с учетом географического положения клиента, нагрузки на сервер или сеть. То есть адреса распределяются просто по порядку не учитывая количество пользователей получивших тот или иной адрес.

 

Существуют методы, которые позволяют улучшить работу балансировки:

  • GeoDNS - позволяет распределять ip-адреса в зависимости от местоположения клиента
  • Сокращение параметра ttl позволяет избежать проблем с кэшированными версиями списков адресов
  • failover - позволяет отслеживать падение серверов домена, и перенаправлять адреса на резервные сервера согласно принципу избыточности
  • аналогично можно опрашивать сервера для оценки их нагруженности и таким образом перенаправлять клиента на наименее загруженный сервер для обеспечения скорости работы

Когда DNS балансировка не нужна?

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

Комментарии