Мы широко используем amazon EC2 для балансировки нагрузки и отказоустойчивости.Хотя мы по-прежнему широко не используем LoadBalancers, предоставляемые Amazon, у нас есть свои собственные балансировщики нагрузки (работающие вне Amazon).Amazon обещает, что LoadBalancers никогда не выйдет из строя, они внутренне отказоустойчивы, но я не достаточно хорошо это протестировал.
В общем, мы размещаем два экземпляра на зону доступности.Один действует как зеркальный сервер для реального сервера.Если в случае отказа одного из серверов мы отправляем клиентов другому.Но в последнее время Amazon показала, что одна зона доступности довольно часто отключается.
Итак, мудрый метод, который я предполагаю, заключается в настройке серверов в зонах доступности, как вы упоминали.Мы используем postgres, поэтому мы можем реплицировать содержимое в базе данных между экземплярами.В 9.0 есть двоичная репликация, которая отлично работает для двухсторонней репликации.Таким образом, оба сервера могут взять на себя нагрузку, когда они работают, но когда зона доступности отключается, все пользователи отправляются на один сервер.Поскольку общая база данных доступна, не имеет значения, куда пользователи переходят.Просто они будут испытывать небольшую медлительность, если перейдут не на тот сервер.
При таком подходе вы можете выполнять тандемное обновление веб-сайтов.Обновите один, убедитесь, что он работает нормально, а затем обновите следующий.Таким образом, даже если серверу не удалось обновить, весь сайт всегда работает.