Развертывание моего первого приложения в AWS - PullRequest
4 голосов
/ 03 сентября 2011

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

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

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

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

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

1 Ответ

3 голосов
/ 03 сентября 2011

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

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

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

  1. SimpleDB - собственная база данных Amazon. Они дают вам HTTP API, который вы используете для чтения и записи ваших данных. Для него есть несколько библиотек rails, но в целом это не изящная вставка для rails.
  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, который является инструментом ruby ​​для развертывания приложений в EC2. Это даст вам большую часть пути туда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...