Два IP на одном домене. Как настроить переадресацию?

Здравствуйте!
Есть доменное имя www.site1.ru, у него:
А запись с одним айпи 1.1.1.1
и А запись с другим айпи 2.2.2.2
Есть сервер, который работает на 1.1.1.1 айпи и в случае сбоя переключается на 2.2.2.2 айпи (то есть одновременно не работают)

При коннекте к www.site1.ru провайдеры через раз подключаются к правильному айпи, то к основному, то к резервному.
Соответственно где то на сайт заходит, где то нет так как конектится ко 2 айпи который в текущий момент сервер не использует.

Возможно ли на стороне DNS регистратора настроить "переадресацию" на тот айпи к котому подключен на момент запроса сервер ?
  • Вопрос задан
  • 1027 просмотров
Пригласить эксперта
Ответы на вопрос 4
Это разруливается не через DNS, а через балансировщик.
У тебя будет, получается, три узла: Основной, Резервный, и Балансер.
В DNS ты прописываешь балансер (через A/AAA или CNAME - не важно).
Все запросы от клиентов идут на Балансер и он их пересылает на основной.
В случае сбоя, Балансер каким-то образом выясняет состояние основного узла (может прямо запрашивать периодически какой-нибудь GET /health или смотреть на ответы, которые он даёт клиентам), и перераспределяет запросы на Резервный в случае, когда был выявлен сбой, и наоборот - в случае сбоя Резервного можно попробовать перенаправить запросы снова на Основной (тут уже как настроишь).

Попытаться обойтись без балансера можно, но тогда ты столкнёшся с той ситуацией, с которой ты столкнулся:

При коннекте к www.site1.ru провайдеры через раз подключаются к правильному айпи, то к основному, то к резервному.
Соответственно где то на сайт заходит, где то нет так как конектится ко 2 айпи который в текущий момент сервер не использует.

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

Придирки к терминологии

Не существует "DNS регистраторов". Есть просто регистраторы, которые говорят что домен принадлежит тебе и позволяют назначить dns-сервера, которые будут этот домен обслуживать.
И есть отдельно dns-хостинги, где ты можешь прописать различие записи в рамках домена.
Ответ написан
dimonchik2013
@dimonchik2013
non progredi est regredi
Возможно ли на стороне DNS регистратора настроить "переадресацию" на тот айпи к котому подключен на момент запроса сервер ?


да, через API делается на раз-два
берешь нормального DNS "регистратора" (CloudDNS, Cloudflare + думаю много их), с API и мутишь:

1) отсылаешь IP только работающего сервера
2) отсылаешь IP обоих серверов, в порядке [работающий, не работающий]

есть мнение, что во втором случае для Хромиума (ну и если повезет всей группы бразерров на нем) получишь дешманский "DNS балансер"

проблема хирой схемы (1), да и схемы (2) - в хитрых и ленивых провайдерах, которые хотели ложить на твои потуги и для локальных клиентов держат ДНС кеши

поэтому, как написал Василий Банников и коллеги - по-нормальному схему строят через HTTP load balancer

но - если требований к критичности нет (а их нет, судя по задаче, или они несколько, скажем так, специфичные) - сойдет и вариант (2)
Ответ написан
Комментировать
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Не получится. Или убирай резервный IP из доменной записи, или делай его работающим постоянно.
Ответ написан
Комментировать
uvelichitel
@uvelichitel
habrahabr.ru/users/uvelichitel
Невозможно. Да и бесполезно, инфраструктура dns инерционна, изменения распространяются не мгновенно.
Кроме уже упомянутого отдельного сервиса балансировки с гарантированным uptime, есть же ещё кривой но простой и дешевый костыль :-) Сделать A записи для www.site1.ru и site1.ru на разные IP. Ну или для www1. и www2. в общем для поддоменов :-)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы