Есть несколько способов это сделать.
Первый. Обеспечить высокую доступность сервису который для этого не проектировался. Когда web серверы не имеют балансировщиков, когда mysql задумывался как один, когда приложения в одном экземпляре. Как уже сказали - воспользуйтесь услугами amazon. Elastic ip для переключения между серверами, RDS (mysql) с multi-az, elastic storage для файловой системы.
Второй, самый сложный, но правильный. Изменить архитектуру сервиса. Web серверы как отдельная часть должны балансировать запросы между backend частью. Приложение должно уметь само переключаться между mysql базами если один сервер упал. Репликация mysql между удаленными датацентрами это боль и страдания, в идеале она должна быть только для бэкапа. Если уже не уйти Mysql репликации, используйте percona xtradb cluster. Обращаться не напрямую в ее, а через haproxy, в котором нужно настроить проверку статуса реплик.
Короче говоря, все слои должны иметь как минимум одно резервирование. На уровне IP воспользуйтесь услугами датацентра.