Возможно ли, что одно доменное имя имеет несколько соответствующих IP-адресов?

87

Например, когда мы подключаемся к www.example.com, сначала мы пытаемся подключиться к 192.0.2.1. И если первая попытка не удалась, мы попробуем 192.0.2.222.

Является ли это возможным? Можно ли зарегистрировать несколько резервных IP-адресов для одного доменного имени?

Firia2000
источник
Это точно не будет работать (с циклическим перебором). Если вы запрашиваете хост несколько раз, он будет возвращать вам разные IP-адреса каждый раз, когда вы выполняете запрос, а не только при выходе из строя хоста.
karatedog
@karatedog, я предполагал, что соединение сокета попытается подключиться к следующему IP, если оно не может подключиться к первому
Акаш Кава
4
@AkashKava: одно соединение состоит из нескольких внутренних шагов. Упрощенно: приложение запрашивает DNS и получает IP-адрес. Затем он подключается к этому IP-адресу. Если это соединение не удается, приложение не вернется к первому шагу и снова не запросит DNS, только если это явно указано в коде. И многократный запрос DNS-сервера не обязательно дает вам другой IP-адрес. Короче говоря, стандартный DNS нельзя использовать для балансировки нагрузки.
karatedog
можем ли мы использовать этот метод для масштабирования нескольких балансировщиков нагрузки?
Викас Верма,

Ответы:

63

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

Йенс Брэдлер
источник
3
Это зависит от ваших ожиданий относительно времени восстановления. Если предоставленная служба может быть недоступна на несколько секунд или минут, вы можете соответствующим образом обновить DNS (например, удалить IP-адреса неисправных систем). Если это неприемлемо, DNS не может вам помочь, и вам придется использовать балансировщики нагрузки и сетевую структуру высокой доступности.
Йенс Брэдлер
Вы знаете, как клиент выбирает свой ip из списка? Это случайный выбор, или клиент должен выбрать первое из списка? Потому что в первом случае раунд / робин не очень полезен.
Tobia
Задача DNS-сервера - перемешивать или чередовать записи. Большинство клиентов будут использовать только первую запись. Например, Bind9 можно настроить для применения разных порядков к этому типу набора записей: bind.isc.org/doc/arm/9.13/Bv9ARM.ch05.html#rrset_ordering
Йенс Брэдлер,
можем ли мы использовать эту технику для масштабирования нескольких балансировщиков нагрузки?
Викас Верма,
46

Ты можешь это сделать. Это то, что делают и большие парни.

Первый запрос:

» host google.com 
google.com has address 74.125.232.230
google.com has address 74.125.232.231
google.com has address 74.125.232.232
google.com has address 74.125.232.233
google.com has address 74.125.232.238
google.com has address 74.125.232.224
google.com has address 74.125.232.225
google.com has address 74.125.232.226
google.com has address 74.125.232.227
google.com has address 74.125.232.228
google.com has address 74.125.232.229

Следующий запрос:

» host google.com
google.com has address 74.125.232.224
google.com has address 74.125.232.225
google.com has address 74.125.232.226
google.com has address 74.125.232.227
google.com has address 74.125.232.228
google.com has address 74.125.232.229
google.com has address 74.125.232.230
google.com has address 74.125.232.231
google.com has address 74.125.232.232
google.com has address 74.125.232.233
google.com has address 74.125.232.238

Как видите, список IP-адресов менялся, но относительный порядок между двумя IP-адресами остался прежним.

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

каратес
источник
1
Должны ли мы что-то активировать, чтобы эта циклическая переборка работала, или это делается автоматически каждым DNS-сервером? У меня один Linux и один MS DNS.
Акаш Кава
3
Зачем Google это делать, если он не покрывает отказоустойчивость?
Джозеф Перси
12
@JosephPersie: потому что DNS не используется для отработки отказа. Предоставляя несколько IP-адресов одному и тому же доменному имени, входящие запросы просто разделяются между серверами, которые прослушивают эти IP-адреса. Думайте об этом как о балансировке нагрузки первого уровня без проверки работоспособности серверной части. Вам это не нужно, если у вас нет тысяч серверов :-)
karatedog
что происходит, когда балансировщик нагрузки не работает и запрос перенаправляется на тот же балансировщик?
Jitendra Vispute
1
@JitendraVispute: DNS не знает о службе, стоящей за возвращаемым IP-адресом. Короче говоря, если за IP-адресом, который только что был возвращен DNS-сервером, находится неисправный сервер или неисправная служба, то запрос к этому IP-адресу завершится ошибкой.
karatedog
2

Да, это возможно, но, как сказал Йенс, неудобно. Использование балансировщиков нагрузки нового поколения, таких как Alteon, который использует собственный протокол, называемый DSSP ( протокол распределенного состояния сайта), который выполняет регулярные проверки сайта, чтобы убедиться, что услуга доступна как локально, так и глобально, то есть в разных географических регионах. Однако вам необходимо в своем главном DNS делегировать URL-адрес или службу устройству, настроив его в качестве полномочного сервера имен для этого IP- адреса или службы. Таким образом, устройство отвечает на DNS-запросы, в которых оно будет разрешать IP-адрес, который обслуживается по круговой схеме или не перегружен, в зависимости от того, как вы выбрали из нескольких показателей.

Эзра А. Мосоми
источник
1
Это звучит скорее как реклама, чем что-либо еще, и балансировщики нагрузки не являются лучшими исполнителями в мире DNS (в отношении спецификации). И если быть точным: «в вашем главном DNS для делегирования URL-адреса или службы» нет концепции URL-адреса или службы в серверах имен / DNS, когда вы делегируете, вы делегируете зону (домен) другим серверам имен. «в качестве авторитетного сервера имен для этого IP-адреса или службы». следовательно, серверы имен являются полномочными для зон / доменов, а не для IP-адресов или служб.
Патрик Мевзек 09
С рабочей точки зрения они действительно работают, это было стандартом де-факто для всех CDN, чтобы использовать балансировщики нагрузки для эффективного управления этим, поскольку они могут объединять расширенные функции, такие как GEO-LOCATION, для предоставления IP-адресов, которые даже находятся рядом с вашим или для сервера, который очень отзывчив, среди прочих показателей.
Эзра Мосоми
1
И одновременно они создают множество проблем. Никакой серебряной пули, у всего есть свои особенности и недостатки. Любой сервер имен может выполнять геолокацию и отвечать с разными IP-адресами в зависимости от клиента, для этого не нужны балансировщики нагрузки. Есть даже стандарт, который помогает: подсеть клиента EDNS.
Патрик Мевзек