В настоящее время у меня есть сайт, трафик которого распределяется между 7 зеркальными серверами прямо сейчас (с использованием циклического перебора DNS). Но вскоре потребуется больше зеркал, учитывая большой объем трафика, который постоянно растет.
Существуют ли какие-либо рекомендуемые ограничения на количество IP-адресов, связанных с данным доменным именем при использовании циклического перебора DNS?
Кроме того, какое решение вы бы порекомендовали, когда количество зеркал велико (например, более 10 или 20 зеркал)?
Спасибо.
Следует иметь в виду, что по умолчанию поиск DNS использует UDP. Если ответ больше, чем может поместиться в одной дейтаграмме, возвращается столько, сколько может поместиться, и в заголовке устанавливается бит TC (усеченный).
Запрашивающая сторона может выбрать работу с тем, что было возвращено, или повторить попытку запроса, используя TCP.
Кэширующие DNS-серверы не должны кэшировать усеченные ответы, так как они не знают, насколько полный набор возвращаемых записей (в ответе не говорится: «Я даю вам 12 из 28 записей»).
Таким образом, максимальное количество записей является фактором того, сколько вы можете вставить в дейтаграмму UDP. Помните, что ответ должен включать раздел полномочий, размер которого будет варьироваться в зависимости от записи SOA для зоны.
Если вы используете записи CNAME, это также увеличит размер ответа, поскольку вы получите обратно CNAME и запись A объекта, на который указывает.
Лучше всего поэкспериментировать с различным количеством записей A, используя dig или "host -v", чтобы увидеть, когда запрос пересекает максимальный размер ответа UDP.
Жестких ограничений нет, но на большинстве сайтов не более 5 или 10 зеркал. Зеркалирование с помощью циклического перебора DNS наиболее полезно, если сайты географически разделены, так что помимо распределения нагрузки существует избыточность.
По мере увеличения количества зеркал эффективность использования циклического перебора DNS в качестве распределения нагрузки снижается, поскольку циклический перебор DNS не учитывает различные запросы, требующие большего количества ресурсов. Лучше использовать балансировку нагрузки переднего плана для распределения рабочей нагрузки по загрузке ЦП и доступности сервера, что также упростит обслуживание, поскольку сервер может быть немедленно отключен без изменения DNS, в результате чего клиенты будут пытаться получить доступ к отключенному серверу из кэшированных записей DNS. .
Я опаздываю с этим вопросом, но подумал, что было бы неплохо упомянуть фактические пределы того, что вы можете сделать. Я не знаю теоретического предела, но некоторые интернет-провайдеры не получат ничего сверх 36. На самом деле, если вы включите больше, это не только не будет включать дополнительные серверы, но и полностью проигнорирует вас. Verizon и Comcast были двумя, с которыми у меня были проблемы, но я уверен, что другие затронуты.
Тем не менее, если у вас достаточно трафика, чтобы гарантировать 36 зеркал, пожалуйста, не используйте циклический DNS.
Если у вас много серверов, возможно, лучший ответ - сделать как Akamai и использовать любые DNS-серверы. и по-круговой. Другими словами, DNS-серверы для зоны распределены по сети, все с одинаковыми IP-адресами, и клиенты точек маршрутизации на ближайших серверах по сети. Каждый сервер отвечает циклически за подмножество полного списка возможных серверов.
Мы делаем что-то очень похожее, но мы используем аппаратные балансировщики нагрузки (кстати, Cisco ACE), поэтому единственным ограничением является размер подсети (если это так).