DNS-запись, которая будет часто меняться? [закрыто]


17

Как сделать запись домена, которая может часто меняться?

Скажем, example.orgуказывает на 203.0.113.0. Через две минуты это должно указывать на 198.51.100.0.

Это будут обычные веб-сайты за доменом («нормальные» только в том смысле, что к ним обращаются через обычные веб-браузеры), но с очень коротким сроком службы. Домен будет указывать на адрес не более 3-4 часов, прежде чем он будет переключен или выключен. Нет необходимости защищать DNS-сервер от частых запросов.

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

Почему-то я не верю в это ... Некоторые интернет-провайдеры или браузеры могут игнорировать или игнорировать TTL, не так ли? Если это серьезная проблема, какой будет разумный TTL?

Спасибо!


9
Почему именно вам нужна эта возможность? Какой «нормальный веб-сайт» работает на инфраструктуре, которая исчезает через 3-4 часа? Есть решения, которые приходят на ум, но не ясно, что вы делаете с быстрыми изменениями DNS или какое поведение вы ожидаете во время переходов.
Майкл - sqlbot

@ Michael-sqlbot, «нормальный» в том смысле, что это веб-приложение, доступ к которому осуществляется через браузер, но это далеко не классический веб-сайт. Один экземпляр приложения действительно будет иметь продолжительность жизни в несколько часов. Я просто хочу использовать общий пул доменных имен для них. Я уже получил совет изучить технику балансировки нагрузки. Но поскольку экземпляры приложений не являются взаимозаменяемыми, я не уверен, что они применимы вообще.
Andrew8

4
По моему опыту, хитрости Интернета делают DNS плохим кандидатом для «отслеживания услуг». Хотя он может работать на вашей машине, или даже в сети вашей компании, или на ненадежной широкополосной сети вашего друга, кажется, что во всем мире есть действительно ужасные клиенты, которым требуется многократное увеличение вашего TTL, чтобы заметить любые изменения в вашем DNS.
Ральф Болтон

Почему не ip failover вместо этого?
giammin

Ответы:


38

Это называется Fast Flux DNS Records . Обычно авторы вредоносных программ скрывают свои серверы инфраструктуры.

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

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

  1. Кэши браузера

    Браузеры обычно кэшируют записи DNS в течение различного периода времени. Firefox использует 60 секунд , Chrome также использует 60 секунд , IE 3.x и более ранние кэшируются в течение 24 часов , IE 4.x и выше кэшируются в течение 30 минут.

  2. Кеш ОС

    Windows обычно не соблюдает TTL . TTL для DND не похож на TTL для пакета IPv4. Это скорее показатель свежести, чем обязательное обновление. В Linux может быть настроен nscd для установки количества времени, которое хочет пользователь, без учета DNS TTL. Например, он может кэшировать записи за неделю.

  3. Кеш провайдера

    Интернет-провайдеры могут (и некоторые будут) использовать агрессивное кэширование для уменьшения трафика. Они могут не только изменять TTL, но и кэшировать записи и возвращать их клиентам, даже не обращаясь к вышестоящим DNS-серверам. Это более распространено на мобильных интернет-провайдерах, так как они изменяют TTL, поэтому мобильные клиенты не жалуются на задержку трафика.

Балансировщик нагрузки сделан именно для того, что вы хотите. Установив балансировщик нагрузки, вы можете одновременно подключить 2, 4 или 10 серверов, которые будут делить нагрузку. Если один из них отключится, услуга не будет затронута. Изменение записей DNS будет иметь время простоя между временем, когда сервер выключается, и DNS изменяется. Это займет более одной минуты, потому что вы должны обнаружить время простоя, изменить записи и дождаться их распространения.

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


11
Тем не менее, используйте балансировщик нагрузки. У вас будет высокая доступность, гибкий пул, журналы, множество метрик и статистики, вы сможете расставить приоритеты на том или ином сервере и меньше головной боли.
ThoriumBR

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

2
@Mehrdad В зависимости от того, как вы это определяете, это так. В Германии, если у вас есть линия ADSL, вы должны пройти аутентификацию через PPPoE, а затем вам будет назначен IP-адрес из диапазона коммутируемого доступа. До недавнего времени (и по-прежнему некоторые линии) ваше соединение было прервано через 24 часа, поэтому вам пришлось повторно войти (или ваш CPE сделал это для вас).
glglgl

3
Чтобы добавить комментарий @ glglgl: Критическим моментом является то, что вам каждый раз назначался новый IP-адрес . Такое поведение было сделано намеренно: провайдеры хотели запретить пользователям запуск серверов в своих SOHO таким образом.
Binarus

1
@Binarus не только это, но обычно провайдер с 2000 подписчиками не имеет 2000 IP-адресов в своем пуле. Поскольку не каждый клиент будет активен одновременно, как только один пользователь отключится, другой сможет подключиться и получить тот же IP-адрес.
ThoriumBR

6

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

Даже те из нас, кто знает, что мы в сущности лжем (или, по крайней мере, радикально упрощаем), когда мы говорим о «распространении» изменений, все еще склонны использовать этот термин для описания чего-то, что - одновременно - чрезвычайно просто и понятно ... все же трудно объяснить ... и не имеет ничего общего с распространением как таковым , но все, что связано с кэшированием и негативным кэшированием, оба являются важным компонентом работы системы (и, возможно, того, как она предотвращает полный крах при его собственный вес) - по сути, наизнанку, противоположную действительному «распространению», тяга - не толчок.

Несмотря на все беспокойства и трудности, связанные с короткими TTL, они, как правило, работают чаще, чем нет, и в ваших интересах просто попробовать их. На $ {day_job}, когда наши сайты переходят со «старой» платформы на «новую» платформу, это часто означает, что они переходят таким образом, что ничто в инфраструктуре не используется совместно. Мой первый шаг в такой миграции - падение TTL до 60-х достаточно далеко до начала отсечения, чтобы у старого TTL было несколько кратных самого себя, что дает мне разумную уверенность в том, что эти переходные RR с короткими TTL «распространятся». «. Когда я буду готов к сокращению, я перенастраиваю старый балансировщик для привязки трафика к новой системе - через Интернет - так, чтобы балансировщик больше не балансировал несколько внутренних систем, а вместо этого был "

Затем я переключаю DNS и смотрю новый балансировщик и старый.

Я всегда приятно удивлен тем, как быстро происходит переход. Похоже, что несогласными почти всегда являются поисковые пауки и сторонние сайты «проверки здоровья», которые необъяснимым образом фиксируются на старых записях.

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

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

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

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

Существуют службы, которые предоставляют такую ​​возможность в глобальном масштабе, и наиболее знакомой мне является CloudFront. (Скорее всего, Cloudflare будет служить точно такой же цели, так как небольшое количество тестов, которое я провел, указывает на то, что оно также ведет себя правильно, и я уверен, что есть и другие.)

Хотя CloudFront в основном продается как CDN, он по своей сути является глобальной сетью обратных прокси-серверов с возможностью дополнительного кэширования ответов. Если www.example.comуказатель на CloudFront и CloudFront настроен на пересылку этих запросов backend.example.com, а запись DNS для него backend.example.comиспользует короткий TTL, то CloudFront будет действовать правильно, потому что он поддерживает этот короткий TTL. Когда изменяется внутренняя запись, весь трафик будет мигрировать к тому времени, когда истечет TTL.

TTL на внешней стороне записи, указывающей на CloudFront, и то, соблюдают ли его браузеры и средства разрешения кэширования, не имеет значения, поскольку изменения в конечном назначении не требуют изменений в www.example.comзаписи ... так что понятие «Интернет» имеет, что касается правильной цели для www.example.comявляется последовательным, независимо от того, где находится серверная система.

Для меня это полностью решает проблему, избавляя браузер от необходимости «следить» за изменениями IP-адреса исходного сервера.

ТЛ; dr: перенаправить запросы в систему, которая служит прокси-сервером для реального веб-сервера, так что только конфигурация прокси должна учитывать изменение IP-адреса исходного сервера, а не DNS-сервера, обращенного к браузеру.

Обратите внимание, что CloudFront также сводит к минимуму задержку за счет некоторой магии DNS, которую он налагает на лицевую сторону, что приводит к www.example.comразрешению в наиболее оптимальное крайнее местоположение CloudFront на основе местоположения запрашивающего браузера www.example.com, поэтому существует минимальная вероятность того, что трафик будет проходить излишне обходным путем от браузера к краю к источнику ... но эта часть прозрачна и автоматична и выходит за рамки вопроса.

И, конечно же, кэширование контента также может быть полезным за счет снижения нагрузки на исходный сервер или транспорт - я настроил веб-сайты на CloudFront, где исходный сервер находился в канале ADSL, а ADSL по своей природе ограничен для пропускной способности восходящего потока. Исходный сервер, к которому CloudFront подключается для получения контента, не обязательно должен быть сервером внутри экосистемы AWS.


Speak Я говорю о балансире как об одном объекте, когда на самом деле он имеет несколько узлов. Когда балансировщик является ELB, машина, стоящая за балансировщиком, действует как фиктивный сервер приложений и выполняет фактическое закрепление на балансировщике новой платформы, поскольку ELB не может сделать это самостоятельно.

² Единственное знание нового балансировщика о старом состоит в том, что он должен доверять старому балансирующему X-Forwarded-For и что он не должен делать какие-либо ограничения на основе IP для адресов источника старого балансировщика.

³ Если прокси-сервер является одним или несколькими серверами, которыми вы управляете, у вас есть возможность пропустить использование DNS на задней стороне и просто использовать IP-адреса в конфигурации прокси, но обсуждаемый сценарий размещения / распределения впоследствии требует второго уровня DNS ,


2
Спасибо, как всегда, за еще один отличный ответ. "В $ {day_job}, когда наши сайты переходят со" старой "платформы на" новую "платформу, [...]" +1!
gf_

4

Когда я меняю записи DNS, часто старый IP-адрес будет использоваться месяцами. Сказав это, TTL всего за несколько секунд - это то, что Amazon использует, например, для создания резервного сервиса.

Вместо изменения DNS вы можете установить прокси-сервер / балансировщик нагрузки перед ним.


1
В моих тестах TTL60 секунд работали большую часть времени, но у меня были клиенты, у которых задержка составляла около 10-20 минут.
Andrew8

1

Вы можете изучить использование динамического DNS. Это предназначено именно для сценария, который @glglgl упомянул в комментарии выше. Я полагаю, что они используют низкий TTL, который, как указывалось ранее, может быть не на 100% эффективным, поскольку клиенты могут его игнорировать. Но это работает "довольно хорошо".

Даже если вы не меняете свой IP-адрес часто, важно, чтобы ваш TTL был разумным. Много лет назад компания, на которой я работал, сменила интернет-провайдера, что привело к изменению наших IP-адресов. К сожалению, мы установили для нашего TTL что-то нелепое, например, месяц, поэтому старые записи DNS долгое время хранились.


Есть много DNS-серверов уровня ISP, которые не соблюдают TTL. Я работаю над продуктом, который переключает информацию DNS примерно два раза в год. У нас есть много людей, которые DNS-серверы кэшируют нашу старую информацию в течение нескольких недель после того, как мы ее изменим. Если вы не контролируете клиентскую сторону, не рассчитывайте, что это сработает хорошо.
Майкл Ганц
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.