У нас есть несколько серверов, на которых работает веб-приложение, все серверы работают в одном центре обработки данных, и у нас никогда не было проблем. Однако по мере того, как мы становимся больше, мне приходилось думать о том, что мы будем делать, если наш центр обработки данных выйдет из строя. Для нас нерентабельно иметь серверы в двух разных центрах обработки данных, работающих круглосуточно и без выходных, поэтому мой текущий план состоит в том, чтобы наши основные серверы работали как обычно, но «горячий» сервер базы данных постоянно работал у провайдера «облачного» / VPS-сервера. поддерживать синхронизацию с основными серверами баз данных, но без прямого подключения серверов приложений. Затем, когда наш центр обработки данных выходит из строя, мы клонируем сервер базы данных, чтобы предоставить нам достаточную мощность, и запускаем несколько новых серверов приложений, сводя время простоя к минимуму до нескольких минут.
Проблема, которая у меня есть, - выяснить, как переключиться на облачные серверы. Я не хочу использовать циклический перебор DNS, потому что в нормальных условиях запросы не должны поступать на наш VPS ', я также хочу избежать использования аварийного переключения DNS (IE, когда наш DC отключается, мы обновляем DNS, чтобы указывать на новые серверы ), потому что, по моему опыту, некоторые интернет-провайдеры не соблюдают TTL DNS и будут кэшировать записи в течение нескольких дней.
Я не ищу точного руководства о том, как это сделать, я просто хочу изучить некоторые темы. Я посмотрел на IP {любую, мульти, широкую} трансляцию, но они, кажется, не имеют отношения к тому, что мы пытаемся сделать (и я не уверен, что возможно иметь точку IP для нескольких серверов от нескольких провайдеров на разные сети, но могу ошибаться). Я также не хочу ставить прокси / балансировщик нагрузки перед всеми запросами, опять же, это потребует оборудования в отдельном центре обработки данных и, вероятно, снизит производительность.
Есть несколько компаний, предлагающих DNS, которые выполнят аварийное переключение на вторую машину, если первая недоступна.
Но прежде чем вы посмотрите на все это, какова надежность вашего нынешнего центра обработки данных?
Есть ли у него резервные подключения к Интернету от разных провайдеров?
Есть ли у него резервное питание от разных источников питания?
Есть ли у него резервный ИБП и генератор не менее N +1?
Какого класса это объект? Это такой объект, как Terremark, Level 3 и т. Д. Или местный домашний интернет-провайдер?
Сколько стоит простой в день / час / минуту? Оправдана ли стоимость смягчения этого воздействия?
Итак, если ваш сайт доступен по адресу www.example.com, и вы хотите, чтобы www.example.com в определенное время переходил в «другое место», вариантов не так уж много. Как вы сказали, аварийное переключение DNS не сработает для вас, потому что вы хотите, чтобы холодный сайт нес нулевой трафик и мгновенно выходил из строя взад и вперед. Итак, мы смотрим на отказоустойчивость на основе IP для 1.2.3.4. Вы можете очень быстро сделать еще одно объявление о 1.2.3.4 в другом DC, но для этого требуются маршрутизаторы и BGP, и, скорее всего, это не то, в чем вы разбираетесь. Итак, единственная альтернатива, которую я вижу, - это сделать 1.2.3.4 "интерфейсом" "устройство, которое перенаправляет запросы в соответствующее место. Что-то из этого семейства продуктов: http://www.cisco.com/en/US/products/hw/contnetw/index.html (но я человек cisco, поэтому могу быть предвзятым).
Как насчет облачного решения для балансировки нагрузки, которое эффективно настраивает балансировку нагрузки между двумя вашими сайтами?
У вас должна быть возможность извлечь второе местоположение из конфигурации и перенаправить службу только в ваш главный центр обработки данных, а в случае сбоя выполнить быстрое переключение.
Это также устраняет необходимость иметь несколько физических устройств, поскольку вы передали эту часть инфраструктуры на аутсорсинг.