Как настроить отказоустойчивый web-service в 2х датацентрах?

Добрый день.
Есть задача организации отказоустойчивого web-server'a.
Располагаться web-server'a в 2х разных датацентрах, которые соеденины друг c другом VPN тунелем.
Что планируется использовать:
1. DNS Roundrobin. 2 А записи указывают на один домен.
1.1. TTL записей 1 минута.
2. NginX в каждом из датацентров, как reversproxy. Каждому из них присовена своя А запись.
3. Tomcat выполняет роль application server.

Проблема, которая наблюдается у пользователей во время тестирования:
После отключения одного из Nginx'ов у части пользователей перестает быть доступен данный домен.
Вопросы:
1. Каким образом браузер работает с 2мя A записями?
2. Каким образом сделать так, чтобы браузер при недоступности одного из адресов обращался на другой, без принудительного обновления страницы пользователем?
  • Вопрос задан
  • 832 просмотра
Пригласить эксперта
Ответы на вопрос 3
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
> 2
Поднимаете 2 NS-сервера (на каждом из фронтов), каждый из которых отдаёт одну А-запись, смотрящую "в себя" (в ip текущего фронта).

При падении веб-сервера тушите dns-сервер тоже.

Процентов 5% пользователей всё равно отвалится (те, у кого TTL в кеше игнорится), но в отличии от тупого RR, здесь всё же какая-то отказоустойчивость есть (ns-сервера перебираются до получения хоть какого-то ответа).

> 1. Каким образом браузер работает с 2мя A записями?
Большинство браузеров "берет" первую попавшуюся А-запись и работает с ней, как будто она одна.
Браузеры поумнее выбирают следующую А-запись, если с сервером из первой записи не получилось установить tcp-соединение (но всякие 502/444/etc они честно отобразят с первой записи).
Ответ написан
Вам не хватает просто VRRP между 2 серверами, чтобы при недоступности одного из серверов, его IP адрес брал себе второй сервер. В этом случае, сайт будет доступен по 2 A записям.

К сожалению, да же последний Chrome, кеширует только первый попавшийся IP адрес из полученных от DNS. И в случае, если IP адрес станет недоступен, браузер не делает повторный резолв для получения других IP адресов. По этой причине и нужно перебрасывать IP на второй сервер.

TTL в одну минуту это очень сильно. Нагрузка на NS серверы будет чрезмерная. С рабочим VRRP, такой TTL вам не понадобится.

Подобная услуга VRRP между дата-центрами имеется, к примеру, у Selectel
Ответ написан
@spotifi
https://habrahabr.ru/company/ivi/blog/237349/
Вот эти ребята утверждают, что с балансировкой на DNS все грустно.
И предлагают anycast.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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