Я работаю разработчиком приложений в компании, в которой работаю некоторое время. Компания хотела бы отразить свой существующий сервер Windows (сервер A) на новый сервер (сервер B) с основной целью обеспечения избыточности там, где любой из серверов недоступен. Аппаратный балансировщик нагрузки будет управлять направлением трафика на любой из серверов. Предполагается, что только один сервер будет получать трафик в любой момент времени. На каждом сервере все ресурсы, необходимые для запуска всех приложений, находятся на одной машине.
Данные, которые потребуют двусторонней синхронизации на двух машинах:
Хостинговая компания совместного размещения находится на борту, у кого есть идеи по балансировке нагрузки и репликации, но меня попросили управлять этим.
У меня есть некоторые общие опасения по этому поводу:
Это не самая структурированная компания, в которой я работал с точки зрения процесса (небольшой опыт управления версиями в компании, свободный доступ к действующему серверу, конфигурация которого постоянно изменяется, нет документации и т. Д.). Это может потребовать большей технической дисциплины, чем сейчас.
Ни одно из приложений не поддерживает кластер. Большинство операций с БД не являются транзакционными.
Мои конкретные вопросы:
Является ли конфигурация аварийного переключения двух серверов, как я описал здесь, обычным явлением? Есть плюсы / минусы?
Каковы потенциальные недостатки двусторонней репликации данных, когда оба сервера баз данных должны быть и издателем, и подписчиком? Как я могу проверить риски, связанные с параллелизмом данных?
Есть ли у них какие-либо инструменты для дублирования установок / настроек серверного программного обеспечения? (Об образове, вероятно, не может быть и речи, поскольку у двух серверов разное оборудование и характеристики). Я полагаю, что сохранение настроек ОС / схем БД / исходного кода / сервера управления версиями / почтового сервера и т. Д. И т. Д. И т. Д. Может быть большими накладными расходами?
Учитывая мои вышеупомянутые опасения, следует ли мне посоветовать нам замедлить этот процесс до тех пор, пока мы не сможем улучшить управление системами и устранить любые потенциальные слабые места в приложении, прежде чем двигаться дальше, или вы думаете, что необходимость будет лучшим драйвером этих изменений после второго сервера в игре?
Извините, если это небольшая прогулка. Любое представление о том, как это сделать, или комментарии типа «оставьте это кому-то, кто знает, что они делают» приветствуются!
Это слишком большой вопрос; вы, скорее всего, не получите на него конкретных ответов.
Чтобы иметь репликацию «с несколькими мастерами», то есть оба сервера отвечают, вам необходимо решить эту проблему для каждого протокола отдельно (SQL, SMB, HTTP и т. Д.). Гораздо более простой путь - использовать только один сервер за раз в активно-пассивном сценарии, но вы по-прежнему говорите об очень сложном решении, обеспечивающем нулевую потерю данных во всех этих приложениях и протоколах.
Самое простое, но вряд ли лучшее решение - использовать виртуальную машину в отказоустойчивом кластере узлов, но если у вас есть незапланированный отказоустойчивость Я считаю, что вы потеряете то, что находится в памяти, пока виртуальная машина перезагружается.
Файловые службы Windows, IIS и SQL Server имеют различные уровни избыточности, но каждый из них уникален и требует оценки в зависимости от потребностей конкретного приложения.
Если бы это был я, я бы основывал это решение на времени доступности и важности данных. Если вы можете выдержать активно-пассивный сценарий кластера виртуальных машин, сделайте это. Я думаю, что попытка сделать его мульти-мастером со всеми этими различными технологиями на одном устройстве - кошмар. Я не знаю никого, кто бы это делал. У них / у нас есть SQL-серверы, выполняющие зеркальное отображение, а электронная почта - собственное дело на отдельных серверах и т. Д. Каждое приложение, которое вы добавляете, является собственным «решением» для обеспечения высокой доступности (для меня).