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

Я веб-разработчик, который сейчас интересуется сисадмином. Я ранее настраивал сервер на 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 ответ

Решение

Я настроил свою справедливую долю развертываний 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, рубиновый инструмент для развертывания приложений в EC2. Это даст вам большую часть пути туда.

Другие вопросы по тегам