Синхронизация двух серверов - вторичный сервер должен быть загружен только для резервного копирования или отключен
Я только начал новую работу по разработке программного обеспечения, но мне в основном дали кучу сисадминов, потому что команда разработчиков состоит всего из 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.