Назад | Перейти на главную страницу

Разумная по стоимости архитектура аварийного переключения между двумя центрами обработки данных

Я хотел бы поделиться своими мыслями об архитектуре для обработки аварийного переключения между двумя серверами приложений, на которых размещено несколько приложений (веб-сайты на базе .NET, SQL Server) в Швейцарии. Цель состоит в том, чтобы иметь ограниченное время простоя в случае отказа от переключения вторичного сервера (<2 часов), разумные затраты и ограничение вмешательства человека для восстановления.

Примечания:

На этом этапе я планирую использовать следующую настройку:

  1. Nginx размещен в Azure в Швейцарии (F2sv2 - 2 виртуальных ЦП - 4 ГБ ОЗУ)
  2. Сервер A: выделенный сервер Dell R6515 в Швейцарии, центр обработки данных Tier IV (активный экземпляр - купить)
  3. Сервер B: выделенный сервер Dell R6515 / для разработки в инфраструктуре нашего собственного офиса в Швейцарии (соединение 1 Гбит / с) (резервный экземпляр - уже приобретен)

Nginx (80 евро / месяц - бесплатно в качестве партнера MS)

Основная цель Nginx - позволить нам переключать трафик с IP-адреса сервера A на IP-адрес сервера B в случае сбоя. DNS всех служб приложений будет указывать на IP-адрес Nginx. Поскольку он размещен в Azure, он должен быть избыточным по дизайну, если сам Nginx выйдет из строя. Возможно, это какие-то функции для обеспечения избыточности в Azure для Nginx.

VMWare Essential (~ 600 евро)

В настоящее время у нас есть основная лицензия WMWare, которая позволяет нам запускать до трех хостов ESXi. Сервер A и сервер B будут экземплярами ESXi, зарегистрированными в VSphere. Сервер A будет размещать активную виртуальную машину, содержащую наш сервер приложений.

Veeam Community Edition (бесплатно)

Мы планируем использовать Veeam Community Edition для репликации образа виртуальной машины сервера приложений + журналов транзакций SQL Server с сервера A на сервер B.

Отказ оборудования сервера A / центра обработки данных

Пока что я предполагаю, что в случае отказа оборудования или отказа центра обработки данных на сервере A необходимо выполнить следующую процедуру: 1. Настройте Nginx для страницы обслуживания 2. Восстановите образ виртуальной машины сервера приложений на сервере B с помощью Veeam 3. Восстановите журналы транзакций на сервере B с помощью Veeam 4. Измените конфигурацию Nginx для перенаправления трафика с сервера B на сервер A. 5. Когда сервер A снова станет доступен, повторите процедуру в другом направлении с сервера B на сервер A

Поскольку я не являюсь экспертом по инфраструктуре / WMWare, мне бы хотелось узнать ваше мнение об этой архитектуре или любом предложении, которое поможет нам достичь нашей цели. На этом этапе я спрашиваю себя, каково будет влияние задержки / производительности, если каждый запрос будет перенаправлен с Nginx в центр приложений, даже если оба они находятся очень близко с точки зрения местоположения.

Спасибо за советы!

Жиль

Я бы не назвал это понятие «разумной стоимостью», скорее «избеганием затрат» ...

Предполагая, что вы используете nginx в качестве прокси, запросы туда не перенаправляются, но течь через этот сервер. Это может быстро стать узким местом и задержкой ответа в целом. Кроме того, вы на 100% зависите от облака Azure - это может быть дешево, но собственная инфраструктура, вероятно, может обеспечить лучшую доступность. Дважды проверьте соглашение об уровне обслуживания Azure и мелкий шрифт!

Кроме того, я бы не хотел полагаться на репликацию данных SQL посредством репликации всей виртуальной машины - вам следует рассмотреть возможность (непрерывной) репликации данных на уровне SQL, уменьшая окно потери данных.