Текущая архитектура
- Основные данные: Наше веб-приложение использует большой набор статических файлов, иногда превышающий 10 миллионов файлов и постоянно увеличивающийся.
- Метод репликации: Вторичный (пассивный) сервер использует запланированный Задача Robocopy для извлечения файлов с основного (активного) сервера каждые $\приблизительно 2$ минуты.
- Логика аварийного переключения: В сценарии аварийного переключения вторичный сервер должен выполнить один последний цикл репликации, прежде чем взять на себя обслуживание, чтобы обеспечить максимальную согласованность данных.
Текущая зависимость от Robocopy — наша единственная точка отказа в обеспечении согласованности данных. Мы сталкиваемся с случайными, непредсказуемыми сбоями (например, конфликтом ресурсов среды, временными проблемами разрешений при доступе к конкретному файлу), из-за которых Robocopy прекращает успешную репликацию на длительные периоды времени.
Поскольку высокая доступность имеет первостепенное значение, мы не можем задержать или заблокировать запуск вторичного сервера в случае сбоя окончательной репликации. Это означает, что вторичный сервер может запускаться с неполным, противоречивым и устаревшим набором данных, что приводит к критическим ошибкам приложений.
По сути: нам необходимо устранить риск того, что механизм репликации выйдет из строя автоматически или заблокирует аварийное переключение из-за проблем с утилитами на уровне ОС, подобных тем, которые наблюдаются в Robocopy.
Рассмотрены существующие решения (и почему они были использованы). Отклонено)
- Общая/общая файловая система (например, SMB Share, DFS): Отклонено, поскольку это создает новую единую точку отказа (уровень хранения) и создает аналогичные сетевые проблемы доступности между серверами и ресурсом хранения.
- Инструменты на основе Rsync (не для Windows) родной): Отклонено, поскольку они усложняют интеграцию среды Windows (сопоставление пользователей, контексты безопасности служб и т. д.) и по-прежнему полагаются на утилиты файловой системы, подверженные тем же рискам, связанным с окружающей средой и разрешениями.
Мы ищем фундаментально другой, современный и независимый от среды подход для достижения окончательной согласованности миллионов файлов между этими двумя файлами. Серверы Windows.
- Можно ли этого добиться с помощью выделенного безопасного API на основе HTTP для синхронизации (например, Primary предоставляет конечную точку манифеста/дельта и конечную точку получения)?
- Какая расширенная масштабируемая альтернатива (например, на основе объектного хранилища, распределение, управляемое событиями) полностью отделит процесс репликации от локальной файловой системы Windows и логики разрешений, обеспечивая высокую вероятность доступности данных на вторичном сервере при аварийном переключении?
- Мы используем базу данных MSSQL для нашего приложения с помощью mssql. Можем ли мы чего-нибудь добиться?
Подробнее здесь: https://stackoverflow.com/questions/798 ... ly-availab
Мобильная версия