Каковы рекомендации по использованию зон доступности EC2?

Я перезапускаю сайт (более 5 мм посещений в день) на EC2 и не понимаю, как развертывать узлы в разных центрах обработки данных. Моя самая базовая установка — это два узла за сервером Varnish.

Должен ли я иметь два экземпляра Varnish в разных зонах доступности, каждый с узлами WWW, которые взаимодействуют с общей базой данных RDS? Каждый экземпляр Varnish можно балансировать с помощью балансировщика нагрузки Amazon.

Что-то типа:

1 балансировщик нагрузки общается с:

  • Varnish в Вирджинии, который разговаривает со своими узлами us-east-x
  • Varnish в Калифорнии, который разговаривает со своими узлами us-west-x

Развертывание в нескольких центрах обработки данных — новая концепция для меня, поэтому любая помощь приветствуется! Спасибо!


person Carson    schedule 24.08.2011    source источник


Ответы (1)


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

Как правило, мы размещаем два экземпляра в каждой зоне доступности. Один действует как зеркальный сервер для реального сервера. Если один из серверов выходит из строя, мы отправляем клиентов на другой. Но в последнее время Amazon показал закономерность, что одна зона доступности довольно часто выходит из строя.

Таким образом, я полагаю, что мудрый метод заключается в настройке серверов в зонах доступности, как вы упомянули. Мы используем postgres, поэтому мы можем реплицировать контент в базе данных между экземплярами. В 9.0 есть двоичная репликация, которая отлично работает для двусторонней репликации. Таким образом, оба сервера могут взять на себя нагрузку, когда они работают, но когда зона доступности выходит из строя, все пользователи отправляются на один сервер. Поскольку доступна общая база данных, не имеет значения, куда пользователи обращаются. Просто они будут испытывать небольшую медлительность, если зайдут не на тот сервер.

При таком подходе вы можете делать тандемное обновление веб-сайтов. Обновите один, убедитесь, что он работает нормально, а затем обновите следующий. Таким образом, даже если серверу не удалось обновиться, весь веб-сайт всегда работает.

person arunmur    schedule 24.08.2011
comment
как вы отправляете клиентов на другие серверы, когда одна зона доступности выходит из строя? - person Carson; 24.08.2011
comment
Наши настраиваемые балансировщики нагрузки будут проверять нагрузку с серверов каждую минуту. Мы используем URL-адреса поддоменов, чтобы направлять клиентов. Поэтому, если кластер не работает, мы отправляем им другой URL-адрес субдомена. Балансировщик нагрузки Amazon действует как уровень абстракции и внутренне направляет HTTP-запрос на сервер. Он проверяет доступность каждые 10 секунд, запрашивая веб-страницу с вашего сервера. Вы можете просто поместить пустой.html. Если экземпляр не работает, amazon не будет отправлять запросы на этот сервер. - person arunmur; 24.08.2011