Прозрачный географический отказоустойчивый сайт DR
У нас уже есть веб-серверы с балансировкой нагрузки. И хотя перебоев не должно быть, они происходят по разным причинам. (сбой центрального коммутатора, неправильно настроенные маршрутизаторы ISP, отказы магистрали, атака DOS на общую инфраструктуру) Я хочу поместить второй набор серверов в совершенно другое географическое расположение с совершенно другими соединениями. Я могу синхронизировать серверы SQL с помощью различных методов, так что это не проблема. Но что я не знаю, как это сделать, так это прозрачно перенаправить существующие пользовательские веб-сеансы на серверы резервного копирования, когда основной сервер отключается или становится недоступным.
AFAIK, три наиболее распространенных способа борьбы с этим:
- Балансировка нагрузки DNS, которая использует очень низкий TTL для интеллектуального разрешения запросов DNS к IP-адресам серверов в наилучшей среде.
- Интеллектуальное перенаправление, которое использует третий сайт для авторитетного перенаправления пользователей на общеизвестные, но вторичные DNS-имена, такие как na1.mysite.com и eu.mysite.com.
- Используйте интеллектуальный минимальный прокси-сервер для передачи запросов на разные сайты, размещая прокси-сервер в облаке где-нибудь.
Но в случае сбоя сайта первый из них лишит пользователей возможности доступа к серверу, пока TTL не заставит клиентов запрашивать DNS и разрешить доступ к сайту DR или не вызовет чрезмерных дополнительных DNS-запросов. Второй метод все еще оставляет нас с потенциальной единственной точкой отказа (хотя я мог видеть, что несколько A-записей используются для дублирования главной роли входа в систему между средами), но все еще не перенаправляет пользователей, когда сайт, на котором они В настоящее время используется не работает. И третий не будет лишним вообще, если облако упадет. (как они все время от времени)
Из того, что я знаю о работе в сети, разве нет способа, которым я мог бы дать двум разным серверам в двух географически разделенных средах один и тот же перекрывающийся IP-адрес и позволить перенаправлять IP-пакеты и направлять трафик на сервер, принимающий запросы? Это возможно только с IPv6? Как это называется и почему отказоустойчивые сайты DR в настоящее время не используют такую технику? Обновление: это называется anycast. Как мне это сделать? И стоит ли это хлопот?
Для пояснения: этот вопрос относится только к трафику HTTP-сервера, при этом прерывание службы допускается на срок до 60 секунд. Пользователям не нужно закрывать браузер, возвращаться на страницу входа или что-либо обновлять. Мобильные пользователи не могут принять дополнительный DNS-запрос для каждого запроса страницы.
2 ответа
Вот некоторые из моих прошлых вопросов.
Обычно TL;DR заключается в том, что DNS не является решением по многим причинам, некоторые из которых вы определили. Некоторые из которых находятся в ответах на вышеупомянутые связанные вопросы.
Единственный реальный способ обеспечить географическую устойчивость - это использовать BGP и разделить /23 на 2 /24, рекламировать их вашими вышестоящими пользователями, а затем делать отдельные вещи DNS оттуда.
Тогда вы получите раздражающую проблему синхронизации между ними, но это уже другая история.
Я могу синхронизировать серверы SQL с помощью различных методов, так что это не проблема.
Ну, это еще не проблема
Если вы использовали интеллектуальное перенаправление, либо изменив имя хоста, либо прокси запрос, то у вас возникла еще одна проблема... "Где вы размещаете прокси, чтобы он не был SPOF"
В противном случае у вас будет N географически отдельных сайтов, но одна точка отказа (механизм прокси / перенаправления).
Я полагаю, что теоретически вы могли бы вместо этого использовать MPLS, чтобы ваши местоположения находились в одной сети L2, хотя я не уверен, как это на самом деле поможет повысить устойчивость к сбоям.
DNS сам по себе не обеспечивает возможности автоматического перехода на другой ресурс. Но в сочетании с повторной попыткой клиента браузера он предлагает бесплатное (с точки зрения инвестиций в сеть) и решение с низкой задержкой (~1 с). См. Ссылки ниже для более подробной информации.
http://blog.engelke.com/2011/06/07/web-resilience-with-round-robin-dns/
Несколько центров обработки данных и HTTP-трафик: DNS Round Robin - ЕДИНСТВЕННЫЙ способ обеспечить мгновенное переключение при сбое?