Рейтинг:-2

Избыточность с несколькими серверами на одном DNS

флаг sv

У меня есть доменное имя, например api.test.com. У меня тоже три сервера.

Я хочу иметь избыточность в промежутке между этим, и поэтому, если один сервер отключен, доменное имя api.test.com не будет перенаправлять на него, а только на других.

Я обнаружил, что у нас может быть несколько А/АААА запись на том же доменном имени, но не учитывается, пингуется ли компьютер или нет, просто случайным образом дайте один из всех доступных IP-адресов.

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

Patrick Mevzek avatar
флаг cn
Сам по себе DNS не может обеспечить отказоустойчивость. Несколько адресов обеспечивают только балансировку нагрузки.
Nikita Kipriyanov avatar
флаг za
@PatrickMevzek, это не совсем так. В DNS предусмотрены некоторые условия аварийного переключения в записях SRV и MX.Но только в тех записях.
Elikill58 avatar
флаг sv
В самом деле ? Это круто, как я могу использовать их с несколькими IP-адресами?
флаг cn
Отвечает ли это на ваш вопрос? [Является ли циклический DNS «достаточно хорошим» для балансировки нагрузки статического контента?](https://serverfault.com/questions/101053/is-round-robin-dns-good-enough-for-load-balancing-static- содержание)
Patrick Mevzek avatar
флаг cn
@NikitaKipriyanov Да, но ОП, безусловно, говорит о доступе по HTTP./HTTPS и 1) `MX` как бесполезный там и 2) записи `SRV`, потому что браузеры их не используют. И аварийное переключение не входит в состав DNS для этих записей, это происходит только потому, что клиенты обрабатывают их определенным образом. Теперь с будущими записями `HTTPS`/`SVCB` все будет по-другому, но все же зависит от клиента. Отказоустойчивость не является внутренним свойством DNS, она может просто предоставлять данные, которые могут быть использованы для этого, но это полностью зависит от клиента.
Elikill58 avatar
флаг sv
@TomTom после проверки не полностью отвечает. Ответ Никиты объясняет больше о DNS и почему мы не можем их использовать, а ссылка, которую вы дали, дает решение о том, как это исправить, которое кажется [HAProxy] (http://www.haproxy.org/)
Nikita Kipriyanov avatar
флаг za
@TomTom У меня также возникло желание прочитать между строк и счесть это дубликатом, но посмотрите, нигде в вопросе ничего не сказано о HTTP (S) и статическом контенте. Даже в тегах. Вопрос действительно хорошо сформулированный вопрос про DNS. Это, конечно, ** не ** дубликат этого вопроса, а другой.
Рейтинг:1
флаг za

Нет, это не так. В зону можно настроить более одной записи определенного типа и имени. Клиент обычно не знает об этом; он запрашивает определенное имя и тип (например, браузер запрашивает имя, которое вы ввели в поле адреса, типа 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 для обнаружения сервера; веб-клиенты никогда этого не делают.

Elikill58 avatar
флаг sv
Спасибо за Ваш ответ. Почему SRV не может помочь в веб-сервисе, если он выбирает действительный IP-адрес между рабочими в соответствии с приоритетами? Может ли MX помочь мне с веб-сервисом?
Nikita Kipriyanov avatar
флаг za
Я объяснил уже. SRV помогает только службам, которые действительно используют записи SRV. Веб-клиенты никогда не запрашивают их и не используют записи SRV. Вы можете создать такую ​​запись, но никто не заметит. Тем не менее, MX является особым случаем записи SRV, используемой для электронной почты (чтобы найти почтовый обменник домена, куда доставлять почту для этого домена).
Elikill58 avatar
флаг sv
О да, спасибо. Я пропускаю несколько частей, потому что я был на телефоне. Итак, для этого я не могу использовать DNS, и мне нужно сделать что-то еще, например, использовать прокси, который перенаправляет?

Ответить или комментировать

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