LINUX.ORG.RU
ФорумAdmin

Одно доменное имя для двух серверов.

 


2

3

Есть сайт размещенный на стороннем сервере, допустим с ip 11.11.11.11. Резервный сайт размещен на другом физическом сервере с адресом 22.22.22.22. Оба хоста будут иметь одно доменное имя на двоих, к примеру site.domain.com. Просто создать две «A» записи с одним доменным именем, вызовет конфликт. Как сделать так, чтобы к доменному имени было привязано два ip адреса? Скажем если по основному ip 11.11.11.11 сайт не доступен, то запрос перенаправлялся на резервный ip 22.22.22.22. Но если ip 11.11.11.11 вновь стал доступным, то все запросы отправлялись исключительно на него! Round robin на ДНС сервере или нечто другое?

11.11.11.11

Никто тебе не даст такой красивый айпи.

22.22.22.22

И такой тоже.

Просто создать две «A» записи с одним доменным именем, вызовет конфликт

Кто тебя так обманул? Никаких конфликтов не будет.

Скажем если по основному ip 11.11.11.11 сайт не доступен, то запрос перенаправлялся на резервный ip 22.22.22.22. Но если ip 11.11.11.11 вновь стал доступным, то все запросы отправлялись исключительно на него!

Меняй записи в днс в зависимости от доступности айпи-адресов. И поставь им маленькое TTL чтобы изменения быстрее доходили до клиентов. Других способов нет.

Если пропишешь две A записи то клиенты поровну рандомно распределятся между ними, приоритеты там не предусмотрены.

firkax ★★★★★
()

Просто создать две «A» записи с одним доменным именем, вызовет конфликт

$ dig google.com a
google.com.		300	IN	A	142.250.150.102
google.com.		300	IN	A	142.250.150.113
google.com.		300	IN	A	142.250.150.138
google.com.		300	IN	A	142.250.150.101
google.com.		300	IN	A	142.250.150.139
google.com.		300	IN	A	142.250.150.100

sergej ★★★★★
()

Просто создать две «A» записи с одним доменным именем, вызовет конфликт.

нет. Так и делают, используют dns round robin. Только оно не равномерно распределяется.

targitaj ★★★★★
()
Ответ на: комментарий от targitaj

dns round robin

Именно так

Только оно не равномерно распределяется.

не везде и не у всех работает. Так скорее правильнее будет.

anc ★★★★★
()

Кроме того, используй CNAME. Этот чит позволяет игнорировать ttl. Просто перебиваешь CNAME на другую запись и оно сразу выдаёт новый.

targitaj ★★★★★
()
Ответ на: комментарий от targitaj

То есть тот из двух сайтов, который ещё живой, он может переписать CNAME прямо в рантайме и всё сразу на него пойдёт?

Shushundr ★★★★
()

Когда прописывают в DNS два ip-адреса — это подразумевает, что оба эти адреса всё время доступны.

Базово не гарантируется, что браузер получит оба ip-адреса, и в случае чего попробует подключится по второму адресу. Если вы пропишите в DNS два ip, но один будет недоступен, у части клиентов сайт будет доступен.

Как уже написали, для резервирования только правка DNS и низкий TTL.

mky ★★★★★
()
Ответ на: комментарий от Shushundr

Да. Даёшь в зоне A записи на именные уникальные имена и потом испльзуешь CNAME как указатель. Полагаю, оба метода можно совмещать.

targitaj ★★★★★
()
Ответ на: комментарий от targitaj

Откуда инфа? Почему гугл про свои dns пишет такое:

Если Google Public DNS возвращает ответы с устаревшими записями CNAME, вам необходимо очистить тип записи CNAME для каждого домена CNAME, начиная с последнего CNAME в цепочке и возвращаясь к запрошенному имени. После того, как вы сбросите все CNAME, сбросьте запрошенные имена со всеми типами записей, которые отвечают устаревшим CNAME.

mky ★★★★★
()
Ответ на: комментарий от targitaj

Не понял, что проверить. google DNS выдаёт TTL для CNAME-записи.

dig www.urfu.ru @8.8.8.8

; <<>> DiG 9.16.15 <<>> www.urfu.ru @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62490
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.urfu.ru.                   IN      A
;; ANSWER SECTION:
www.urfu.ru.            1917    IN      CNAME   urfu.ru.
urfu.ru.                3600    IN      A       93.88.179.200

;; Query time: 73 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sat Dec 24 09:04:33 +05 2022
;; MSG SIZE  rcvd: 70

Проверить, что google DNS не кеширует CNAME? Или что CNAME не кешируют браузеры?

Как проверить, что там кеширует google я вобще не знаю, допустим, я сделал несколько запросов к @8.8.8.8 с интервалом примерно 10 секунд, получил такое:

www.urfu.ru.            3600    IN      CNAME   urfu.ru.
www.urfu.ru.            3590    IN      CNAME   urfu.ru.
www.urfu.ru.            3498    IN      CNAME   urfu.ru.
www.urfu.ru.            1469    IN      CNAME   urfu.ru.
По мне получается, что на мои запросы отвечали физически разные DNS-сервера, каждый со своим кешем. Первый запрос пришёлся на сервер, который ничего не знал про urfu.ru., он обратился к NS-серверу и создал у себя в кеше запись с исходным TTL 3600, второй запрос пришёлся к этому же серверу, а последующие к другим.

Из этого получается, что менять содержимое CNAME записи и делать запрос к 8.8.8.8 не вариант. Мы можем попасть на сервер, где нашей CNAME нет (уже нет) в кеше и получить в ответ новое значение. Но не потому, что это CNAME (с якобы TTL 1), а потому, что кеш пустой.

mky ★★★★★
()

Или реверс прокси с балансером, nginx умеет round robin.

Upd. Тьфу, глупость написал ) тут уже третий сервер нужен

vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 2)
Ответ на: комментарий от targitaj

Этот чит позволяет игнорировать ttl.

4.2.

thesis ★★★★★
()

Сначала разберись какую конкретно проблему ты пытаешься решить. Сейчас ты занимаешься ерундой.

level1 ★★
()
Ответ на: комментарий от vvn_black

А как же чётвёртый, если один лоад балансер ляжет:)

А если серьёзно, то ничего не мешает развернуть обратный прокси на существующий серверах

GLaDOS
()

На nic.ru есть подробная инструкция.

Boatmen
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.