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

Я только начал новую работу по разработке программного обеспечения, но мне в основном дали кучу сисадминов, потому что команда разработчиков состоит всего из 2 человек + технический директор. У меня практически нет опыта работы с подобными вещами, и я сосредоточился в основном на программировании в настольных системах в университете. Надеюсь, вы, ребята, сможете мне помочь с тем, что я пытаюсь сделать здесь...

Итак, у нас будет два экземпляра Amazon EC2, которые начнутся абсолютно одинаково (но в разных местах, поскольку Amazon в последнее время был довольно нестабильным), один из которых будет основным, а другой - резервным. Оба они работают под управлением Windows Server 2008, но настроили XAMPP для обслуживания веб-службы mySQL/PHP. Идея заключается в том, что в случае сбоя или тому подобного мы можем изменить наши настройки DNS, чтобы они указывали на резервный экземпляр, просто чтобы минимизировать время простоя. Поскольку есть транзакционная база данных и загрузка файлов, мне нужно синхронизировать все. Проблема в том, что резервный экземпляр не будет работать постоянно. Мне сказали, что мы должны постоянно отключать его (за исключением случаев, когда мы "синхронизируем" серверы), чтобы сократить расходы.

Из того, что я могу сказать, репликация "мастер-мастер" между базами данных будет работать нормально, поскольку она по существу "синхронизируется", когда экземпляр подключается к сети. Правильно ли я думаю, что это сработает? И как лучше всего синхронизировать каталоги? Еще одна проблема, о которой я думал, - это просто "резервное копирование" главного сервера на сервер резервного копирования, когда сервер резервного копирования фактически используется (в случае сбоя), как процесс может быть полностью изменен?

Как я уже сказал, я абсолютно нуб, когда дело доходит до такого рода вещей, но я довольно взволнован, чтобы узнать об этом материале. Мои начальники на моей работе, похоже, не имеют понятия, поэтому я довольно стараюсь быть "иди к парню". Любая помощь или ссылки или рекомендации книги будет принята с благодарностью

2 ответа

Быстрый и простой подход заключается в резервном копировании базы данных каждый час /, затем rsync (для Windows попробуйте Deltacopy rsync) ваших файлов резервных копий и других каталогов на сервер резервного копирования. Затем на сервере резервного копирования напишите скрипт для восстановления файла резервной копии базы данных, который запускается каждый час.

rsync будет передавать только дельты файла и сжимать при передаче.

Идея заключается в том, что в случае сбоя или тому подобного мы можем изменить наши настройки DNS, чтобы они указывали на резервную копию, просто чтобы минимизировать время простоя.

FFS, я бы не назвал минимальное время простоя 3 часа, минимизируя время простоя.

Переход в режим ожидания никогда не является хорошим способом реализации отказоустойчивости. Используйте балансировку нагрузки для запуска всех узлов и направления трафика от сбойных узлов.

Не пытайтесь перенастроить архитектуру на лету с помощью DNS - это займет слишком много времени.

Простое решение состоит в том, чтобы внедрить циклический перебор DNS веб-серверов и использовать репликацию master-master на СУБД с настраиваемым соединением базы данных на каждом узле, чтобы вы переключались с отказавшей СУБД. Вы можете использовать репликацию master-slave, если синхронизация в реальном времени является обязательной, и автоматизировать продвижение slave.

Другие вопросы по тегам