Для нашего веб-приложения SaaS у нас есть два идентичных сервера в двух географически разделенных центрах обработки данных.
FOO_1 является рабочим сервером и выполняет репликацию в реальном времени (ведущий-ведомый MySQL) в свою резервную копию F00_2. Мы хотим, чтобы наши пользователи всегда заходили на THEFOO.COM, который каким-то образом указывает на рабочий сервер.
Таким образом, даже если FOO_1 умирает, мы можем просто переключить THEFOO.COM на перенаправление на FOO_2, чтобы ошибка была прозрачной. Этот переключатель может быть ручным или автоматическим, но без восстановления после сбоя (если FOO_1 каким-то образом снова станет доступным).
Есть ли способ сделать это с помощью DNS? Я застреваю с конфигурацией ANAME и CNAME. Мы не используем субдомены, только прямые домены.
Если нет, то каковы другие варианты? Есть ли смысл иметь веб-сервер на LOVELY_FOO.COM и просто перенаправлять весь трафик? Я также посмотрел на балансировщики нагрузки, но не нашел решения для центров обработки данных / сетевых поставщиков.
Вы можете, как вы упомянули, сделать это с помощью внешнего интерфейса обратного прокси. (Например, apache). Точно так же брандмауэр веб-приложения (например, веб-прокси sophos / astaro) может обеспечить отказоустойчивость (а также другие полезности, которые могут вам понадобиться в дополнение, например, различные функции безопасности веб-приложений.
Просто используйте запись A. Он сопоставляет thefoo.com с любым IP-адресом. Таким образом, при нормальных обстоятельствах он будет указывать на IP-адрес foo_1. Если foo_1 выходит из строя, вы меняете запись A, чтобы она указывала на IP-адрес foo_2.
Держите TTL коротким, чтобы изменения распространялись быстро. Некоторые поставщики DNS предлагают автоматическое переключение при отказе как услугу (например, Amazon Route53).
Вы можете сделать это с помощью глобального балансировщика нагрузки. У нас есть несколько gtms F5, которые обрабатывают этот трафик. Это делается через DNS, и в зависимости от конфигурации вы можете определить, какая запись предоставляется клиенту. Вы можете купить эту услугу, если не можете разместить свои собственные gtm.