Pull to refresh

Хостинг на AWS (EC2, EBS, S3) для чайников

Reading time 4 min
Views 138K
На хабре уже проскакивали периодически заметки посвященные AWS (Amazon Web-Services) — так что тема не новая. Однако, если для меня лично (да и для многих моих знакомых как выяснилось) — этот термин был знаком — однако каких-либо деталей я не знал. Попробую на основании только-что полученного опыта рассказать немного подробней, а так же изложить основные шаги по организации хостинга сервера на AWS и его преимущества. Как и несколько ссылок, которые могут оказаться полезными.
image

Сразу же хочу сказать огромное спасибо хабрачеловеку Gomer который поделился некоторой базовой информацией и ссылками. В этом деле оказалось важным именно понять — с какой стороны копать — так сказать получить первый пинок.

Итак, настал момент ремонта в квартире, и хостинг моего EmForge на домашнем сервере (кстати на базе процессора Atom — но об этом отдельная история) — становился невозможным. Я давно к этому шел (держать сервер дома было не самой лучшей идеей). Куда уходить? Dedicated сервер — дорого, VPS — учитывая что мой сервер на J2EE требовал памяти — получалось тоже не дешево (минимум надо было 512 Mb) — плюс ряд других проблем. И вот я решил (давно собирался) что настало время AWS
Первый взгляд на веб-сайт дал понять то что я и так уже слышал. Да, набор веб-сервисов, да, позволяет запускать image операционных систем, да, можно хранить данные. Но как? Итак, по порядку.

В прицнипе, если говорить о AWS — то это конструктор. С которым вы можете сделать много чего — главное уметь делать. А еще, организацию хостинга сервера с помощью AWS можно сравнить со сборкой компьютера (по сравнению с покупкой готового — заказ хостинга у провайдера):
  • EC2 — это материнка и память. Этот сервис позволяет запускать image операционной системы (запущенный image называется instance). Но — он не обеспечивает хранение каких-либо данных — пока instance работает — хорошо — но если вы его остановили — все. при следующем запуске вы вернетесь к исходному image
  • EBS — это винч. Вы можете сказать — сделай мне винч размером в 25 гигов (можно от 1 Gb до 1Tb) и подключи его к такому-то instance (созданный винч будет называться volume). В результате в вашей системе появляется новый девайс, дальше вы его монтируете, форматируете и работаете с ним. Все что было записано на него — сохраняется не зависимо от жизни instance. Так же можно легко делать snapshot-ы (например для организации backup-ов)
  • S3 — это лента. Туда можно сохранять большие файлы и хранить их там вечно


Я не буду рассматривать тут организацию кластерных систем, High Aviability систем и прочая — мне надо было просто захостить мой сервер — ubuntu, tomcat, postgresql + собственно мое приложение. Что пришлось сделать (если это не очень интересно — можете сразу перейти к концу — где описаны плюсы и минусы):
  1. зарегистрироваться на AWS, получить ключи, поставить EC2-Tools. Под убунту есть хороший starters guide. Это позволит вам работать с сервисами амазона
  2. Выбрать наиболее подходящий image (в aws они называются AMI) с которого вы начнете построение своей системы. Список доступных AMI можно посмотреть тут, в консоли (очень полезная тулза)Для убунту есть как официальные AMI (перечислены на том же starter guide), так и «продвинутые» (кстати — Eric — автор этих AMI — суда по всему продвинутый чел — очень рекомендую почитать его блог — можно найти ответы на многие вопросы). В моем случае я выбрал «продвинутую» 9.04
  3. запустить выбранную AMI (смотри ec2-run-instances) — при запуске можно указать на какой «материнке» запускать (сколько памяти, проц) и где запустить (штаты, европа)
  4. по умолчанию все порты на машине будут закрыты — надо открыть 22 (для ssh) при помощи ec2-authorize default -p 22 ну и в будующем не забыть открыть другие нужные порты (например 80)
  5. зайти на запущенную систему через ssh, поставить и настроить необходимый софт (позже мы сделаем свой AMI со всем необходимым нам)
  6. скорей всего, у вас будет база и еще какие-то данные которые надо хранить на «винче» — потому необходимо сделать EBS volume и подключить его к вашей машине-instance-у. Хорошее описание как это сделать (ну и в принципе, статья, которая оказалась для меня самой полезной) тут — только обратите внимание на комментарии по поводу использования файловых систем Ext3 & XFS от того же Eric-а
  7. после того как вы подключите volume к вашей системе — необходимо изменить настройки базы и других сервисов, чтобы необходимые данных хранились на нем — то есть, чтобы данные лежали на EBS Volume — а не внутри instance — помните- instance может умереть — и вместе с ним умрут и данные — а EBS останется
  8. в прицнипе мы получили систему, какой она нам нужна — теперь надо «зафиксировать» это состояние (чтобы не повторять установку и настройку софта каждый раз при запуске нового instance). та же статья описывает как сделать image для запущенного instance, положить его на S3 и зарегистрировать свой AMI
  9. Ок, у вас есть свой AMI — теперь, если что — вы сможете быстро поднять сервер со всем необходимым софтом
  10. осталась мелочь — взять Elastic IP (фиксированный IP), изменить DNS чтобы использовать новый IP, смигрировать данные в базу. Сервер готов!


Минусы


  • AWS сложный — ну по крайней мере по сравнению с простой покупкой хостинга. Хотя, надеюсь, моя статья поможет сделать его не таким сложным
  • AWS платный. Забудьте про бесплатные лимиты аля Google App Engine — платить придется за все — за каждый час работы instance, за траффик, за EBS, за обращения к EBS и прочее и прочее. Чтобы иметь представление за что и сколько придется платить — можете посмотреть на AWS Activity image


Плюсы


  • Да, платный, но не такой уж и дорогой. При организации хостинга, вам скорей всего не интересно будет платить за instance по часам — можно оплатить год. Минимальный instance будет стоить вам 325$ в год — или менее 30 баксов в месяц. Плюс траффик, EBS, S3 — в сумме не должно получиться более 40. За это вы получаете машину с 1.7 Gb памяти и проц эквивалентный 1.0-1.2 ггц Оптерон. VPS за теже деньги будет что-то на уровне 800 Mb памяти — то есть в два раза меньше
  • Да, AWS сложней чем просто пойти и заказать хостинг — но у меня на все про все ушло около 8-ми часов. Вполне разумное время я считаю
  • AWS расширяем — вы можете запустить instance на простейшей машине — а потом смигрировать на машину с 15-тью гигами памяти (только надо будет перейти на 64-битную систему)
  • как говорилось выше — AWS — конструктор — организация хостига сервера — это простейшая задача которую можно решить — как я понял — изначально AWS предназначался для немного другого (организация кластеров и пр.)


Надеюсь эта информация позволит вам сделать правильный выбор и, если что, сэкономить время и деньги

UPD Только закончил пост — как хабр предложил похожий — как я его раньше не заметил — может «рисоваська» смутила?

UPD2 перенес в хостинг
Tags:
Hubs:
+95
Comments 62
Comments Comments 62

Articles