Нет, это не так. В зону можно настроить более одной записи определенного типа и имени. Клиент обычно не знает об этом; он запрашивает определенное имя и тип (например, браузер запрашивает имя, которое вы ввели в поле адреса, типа A, AAAA).
Если возвращается более одной записи, он выбирает одну случайным образом и пытается подключиться к ней. Клиент может повторить попытку подключения к другой записи, если она есть. Серверы также поощряют такое поведение, каждый раз отвечая на один и тот же запрос с разным порядком записей. Таким образом, даже если какой-то клиент «всегда выбирает первый», рандомизация на сервере все равно происходит. Таким образом достигается примитивная форма балансировки нагрузки.
Специальные балансировщики нагрузки DNS возвращают записи A с очень низким TTL, поэтому срок их действия быстро истекает; поэтому сервер может быстро реагировать на внезапные скачки нагрузки или сбои в работе внутренних узлов, опуская их адреса в ответах.Вы можете увидеть это в действии, если попытаетесь разрешить серверы видеоконференций Zoom; они используют эту технологию. Но для этого требуется специальное программное обеспечение, балансировщик нагрузки DNS, для управления DNS для этого имени, и это только начало истории.
Как правило, если первый пробный IP-адрес, полученный в записи A, не отвечает, веб-клиенты обычно возвращают ошибку, даже если нужно было попробовать другие IP-адреса. Есть программы, которые действительно повторяют попытку, например, OpenVPN может повторять попытку бесконечно, но это особый случай.
DNS обеспечивает избыточность с помощью совершенно другого механизма, опять же, ожидая достаточно умного клиента. Существуют специальные записи DNS, называемые СРВ (сервис), который имеет 4 поля данных: приоритет, вес, порт, имя.
Имя самое простое: имя записи A, которую описывает эта запись SRV. Порт — это порт TCP или UDP, на котором запрошенная служба находится на сервере с таким именем. Это должно быть имя, с которым связана запись A или AAAA; CNAME не разрешено. Если существует более одной записи A или AAAA с этим именем, у нас будет обычное поведение DNS «попробовать один раз» для этой конкретной записи SRV (но клиент должен попробовать другие записи SRV, если они есть, например, с более высокими значениями приоритета).
Вес позволяет более глубоко контролировать балансировку нагрузки: если есть несколько записей с одинаковым приоритетом, клиент должен попытаться распределить нагрузку в соответствии с их весом. Часто это делается вероятностно.
Приоритет используется для избыточности: сначала должны быть опробованы записи с наименьшим значением, затем следующий приоритет и так далее. Но опять же, повторная попытка зависит от клиента.
Запись выглядит так:
_kerberos._tcp.example.net. SRV 0 100 88 dc.example.net.
Символы подчеркивания на самом деле являются буквальными символами подчеркивания в имени записи. В нем говорится, что служба «kerberos» обслуживается через TCP на порту 88 dc.example.net. dc.example.net должен иметь записи A или AAAA. Этот пример взят из MS Active Directory, который в значительной степени полагается на DNS для правильной работы и использует его для ldap (каталог) и kerberos (инфраструктура безопасности).Если у вас более одного контроллера домена AD, таких записей, указывающих на разные контроллеры домена, будет больше.
Этот тип записей используется, например, для ldap, kerberos, kpasswd (изменение пароля Kerberos), xmpp (jabber), sip (ip-телефония) и некоторые другие Сервисы.
МХ это как "частный случай SRV", который привязан к порту 25 и имеет только поле "приоритет", без "веса". Это просто "старый стиль", который был придуман до SRV (и который его вдохновил). И он используется только для электронной почты.
SRV не может помочь вам с веб-сервисами. Это помогает только для служб, где клиент знает, как использовать запись SRV для обнаружения сервера; веб-клиенты никогда этого не делают.