Развертывание моего первого приложения в AWS

Я веб-разработчик, который только сейчас интересуется системным администратором. Я уже настраивал сервер на Linode.com (Ubuntu 10.04 LTS, nginx, Ruby on Rails, PostgreSQL), но были некоторые проблемы. Все было на одной машине, поэтому всякий раз, когда что-то шло не так с Linode или у меня было много трафика, мой сайт отключался.

Теперь я заинтересован в создании личного блога и развертывании его в Amazon AWS. Для меня это хорошая возможность научиться использовать несколько серверов с балансировкой нагрузки, автоматическим масштабированием, аварийным переключением и т. д. Единственная проблема в том, что я не совсем уверен, с чего начать.

Я прочитал множество документации от Amazon и сообщений в блогах в других местах, но как новичок в области системного администратора у меня есть несколько вопросов:

  • Я понимаю, что экземпляры EC2 слишком изменчивы для хранения данных. Так где мне его хранить? Магазин эластичных блоков Amazon? Вся файловая система туда пойдет, а также база данных?
  • Нужны ли мне серьезные знания в области балансировки нагрузки и масштабирования? Или ручка Amazon Elastic Load Balancer упростит мне задачу? Как их балансировщик нагрузки взаимодействует с nginx?
  • Какую часть этого вы рекомендуете делать через интерфейс AWS, а не через командную строку?
  • Любые неочевидные препятствия, которые могут зацепить меня?
  • Есть ли руководства по развертыванию блога или простого приложения Rails на EC2? Мне не нужна установка производственного качества здесь; моя главная цель - учиться.

Спасибо за любые ответы, которые вы можете предоставить!


person NudeCanalTroll    schedule 03.09.2011    source источник
comment
Вероятно, вам следует задать этот вопрос на superuser.com.   -  person rubish    schedule 03.09.2011


Ответы (1)


Я настроил свою долю развертываний AWS; вот основы:

Хранилище данных

Если у вас есть часто используемые данные, как вы, вероятно, знаете, лучше всего использовать базу данных. Это одна из самых сложных частей хостинга AWS. Ваши варианты примерно в порядке возрастания сложности/стоимости:

  1. SimpleDB — собственная база данных Amazon. Они дают вам HTTP API, который вы используете для чтения и записи ваших данных. Для него есть несколько библиотек для рельсов, но в целом это не изящная замена для рельсов.
  2. Amazon RDS — Amazon предварительно настроит для вас сервер базы данных, подобный mysql. Для этого требуется, чтобы вы загрузили экземпляр сервера БД, поэтому сервер ценообразования не подходит для крошечных сайтов. С положительной стороны, это позволяет вам легче масштабировать сервер БД.
  3. Создавайте свои собственные планы — спланируйте, что инстансы Amazon EC2 исчезнут в любой момент; поэтому локальное хранилище, которое вы получаете с инстансами EC2, лучше всего рассматривать как большой временный каталог. Elastic Block Store — это решение Amazon; это фактически образ диска, монтируемый вашими экземплярами. Образы EBS живут независимо от инстансов EC2, поэтому, если ваш сервер выйдет из строя, вы сможете смонтировать образ EBS на новый инстанс EC2. По сути, вы можете развернуть свой собственный кластер базы данных, загрузив несколько экземпляров и настроив их для репликации друг друга. Это работает, но не изящно, и на самом деле его следует пытаться делать только в том случае, если вы не можете решить свою проблему менее экзотическими методами.

Amazon в значительной степени перечисляет эти варианты, а также несколько других, которые не применимы к вам, на http://aws.amazon.com/running_databases/

Редко изменяемые данные должны храниться в S3; есть много рубиновых драгоценных камней для легкого доступа к этому. Если ваш веб-сайт полностью статичен на стороне сервера, вы даже можете запустить весь сайт вне S3

Балансировка нагрузки

Amazon «Elastic Load Balancing» довольно эффективно справляется с типичными требованиями к балансировке веб-нагрузки. Обычно это несложный выбор, если только у вас нет экзотических требований. Однако он не будет масштабировать ваш кластер за вас. Для автоматической загрузки и выключения инстансов вам следует обратиться к собственному решению автоматического масштабирования от Amazon.

Предостережения

Обязательно отметьте, в какой «зоне доступности» (также известной как центр обработки данных) вы находитесь. В некоторых случаях вы не можете совместно использовать ресурсы AWS в разных зонах доступности.

Учебники

Существует множество учебных пособий, но в ходе моего краткого поиска я не нашел ни одного действительно отличного или актуального. Тем не менее, проверьте https://github.com/wr0ngway/rubber , который является рубиновым инструментом для развертывания приложения в EC2. Это поможет вам пройти большую часть пути.

person Jason S    schedule 03.09.2011
comment
Спасибо за очень обстоятельный ответ! Думаю, я пока просто буду использовать RDS, а о балансировке нагрузки и автоматическом масштабировании позабочусь позже. У меня есть один вопрос: как противостоять изменчивости экземпляра? Значение: если у меня возникнут проблемы с установкой и настройкой всего программного обеспечения, которое я хочу, на экземпляре, затем он будет прекращен, как мне предотвратить запуск с нуля в следующий раз, когда я захочу запустить экземпляр? - person NudeCanalTroll; 04.09.2011
comment
Образы, загружаемые инстансами EC2, называются образами AMI. Есть несколько стандартных дистрибутивов Linux, и вы можете создать свой собственный достаточно легко. Вы также можете загрузка с моментальных снимков EBS. Третий вариант, чаще встречающийся в больших установках, — загрузиться со стандартного AMI, но запустить скрипт для настройки сервера «на лету», используя что-то вроде Шеф или Puppet . Удачи. - person Jason S; 06.09.2011