Внедряю Liferay
0,0
рейтинг
18 июня 2009 в 15:22

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

На хабре уже проскакивали периодически заметки посвященные 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 перенес в хостинг
@akakunin
карма
124,0
рейтинг 0,0
Внедряю Liferay
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Администрирование

Комментарии (62)

  • 0
    А MySQL бекапится на EBS?
    • +2
      В статье ttlnews.blogspot.com/2009/01/setting-up-amazon-ami-with-java-and.html человек просто сконфигурировал (в основном при помощи симлинков) MySQL что бы база лежала на EBS
      Я для postgres-а сделал тоже самое.

      То есть, база лежит на EBS, если надо backup — от можно создавать snapshot для EBS volume (либо через консоль, либо через ec2-tools, можно простеньку прогу написать которая будет это делать автоматично-периодично)
      • 0
        Ну EBS ведь сетевой диск — другая машина. Разве не должно сказаться сильно на перформансе?
        • 0
          Не совсем, так. Идеология всего этого хозяйства не совсем простая и понятная, но EBS работает с такой же скоростью как и «локальный диск», который по-моему однороден с EBS по своему происхождению и подцеплен к «материнке» точно так же. Просто по умолчанию и фиксированного размера.
  • 0
    А насколько сложно создать свой AMI?
    • 0
      примерно час времени
      • 0
        да — час времени — это из готового instance — в первый раз (пока разбираешься с s3 и прочим) — потом быстрей
  • 0
    А какой пинг до России?
    • НЛО прилетело и опубликовало эту надпись здесь
      • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        Ну вот это единственная проблема. До Твиттера 220 мс, до моего московского сервера 9 мс.
        • НЛО прилетело и опубликовало эту надпись здесь
  • +2
    Вот именно как организовать кластер с лаудбалансингом на базе AWS как раз очень интересно…
    • +2
      Недавно написал статью на эту тему, «Новые возможности Амазоновских облаков: Elastic Load Balancing, Auto Scaling и CloudWatch»:
      habrahabr.ru/blogs/hosting/60425/

      А если с самого начала, то вот еще моя статья про AWS:
      habrahabr.ru/blogs/hosting/55058/
      • 0
        спасибо
  • +6
    То есть получается, что организовав комбинированную атаку типа bandwidth consumption + resource starvation можно кого угодно поставить на бабки?
    Лучше уж по старинке — фиксированный/безлимитный трафик и фиксированные ресурсы.
  • +4
    8 ГБ, 4 ядра получается почти $300, железный можно за $200 снять
    • +1
      • 0
        Какие у вас впечатления этом хостинге? Думал выбрать server4you.de, — о нем хорошие, но платить выгодно минимум на год вперед.
        • 0
          на серче много десятков страниц впечатлений. Рекомендую почитать. Большинство вполне положительные.
  • +1
    Да, как ты уже отметил, я написал похожую статью тоже подробно описывающую AWS с самого начала:
    habrahabr.ru/blogs/hosting/55058/

    Не соглашусь с вашим мнением, что AWS будет дешевле выделенного сервера. Есть выделенные сервера в Европе или России, которые обойдутся вам примерно за 50 долларов, а на минимальном инстансе EC2 вы потратите 73 доллара только за время работы и еще сколько за трафик.
    Впрочем, рад, что вам было интересно поизучать эту тему :)
    • 0
      Если платить по часам — то да — Амазон получается дорогим. Но если оплатить сразу год — по моим прикидкам получается порядка 40 в месяц — что не так уж и много
      • 0
        Если резервный инстанс, то да, примерно будет одинаково с выделенным сервером. Амазоном я сам доволен, никаких претензий, но для вашей задачи, есть и другие варианты.
        • 0
          да — я видел тут ссылки — надо будет посмотреть. По идее задача простая — мне нужен томкат желательно с 512 mb на борту (может и 256 потянет — но не уверен) и postgresql. нагрузка на сервер (и траффик) небольшая — сейчас порядка 150 уников в день. То есть — тот же VPS меня бы вполне устроил (да по большому счету VPS не так уж и нужен) — но как я писал — получается VPS надо с 800Mb ОЗУ — а это уже порядка 40-50 баксов в месяц. По моим подсчетам получалось что Амазон при большей мощьности получается примерно так же стоит

          Пробовал Mor.ph — но после недели мучений так и не смог смигрировать к ним свою базу — и забил (использую только для демки). А теперь они эту лавочку совсем прикрыли

          Что еще?
          • 0
            А вот кстати, сегодня на Хабре такое предложение появилось:
            habrahabr.ru/company/spaceweb/blog/62380/

            Тебе подойжет VX-2 за 970 рублей в месяц.
          • 0
            пользуюсь linode.com — с десяток сайтов, какая-никакая нагрузка, правда, от одного — 1-1,5К уников в сутки, на остальных по 20-100. Все летает.
            $20/мес. за VPS с 512 ОЗУ + 16 Гб места, пинг до ДЦ в Лондоне (есть и в США) — 45 мс из Украины.
  • +1
    Вот что-то не правильно Вы описали про цены, $325 в год за инстанс это за резерв. Когда вы его берёте из резерва и используете платите $0.03 за каждый час(а не $0.10 как при обычном использовании).
    так что не 30 баксов в месяц, а около 50 выйдет, хотя всё же экономия в $23 есть.

    как альтернативу всем интересующимся очень рекомендую клауд хостинг от rackspace — mosso.com
    цены на сервера у них поменьше(чуть дороже трафик) и при этом это по сути обычный привычный хостинг, с нормальным стораджом, а не ephemeral storage как на амазоне, где тебе дают 160Gb пространства и оно как бы есть, но в то же время его и нет, т.к. любой fail железа или незапланированный ребут — и увы.

    в общем, есть более приспособленные для нужд как у автора клауд хостинги :)
    ещё я пользуюсь gogrid.com от ServePath, хорошие ребята, есть свои плюшки, но и минусы тоже.
    • 0
      Ууупс — спасибо за подсказку. Тогда получается да — амазон и не такой уж дешевый
    • 0
      плохой ping. Время отклика велико. а так неплохо очень и сервисы неплохие.
      Вопрос к оллу — что в европе есть кроме амазона облачного?
    • 0
      У меня на GoGrid переплата 150 баксов в первый же месяц относительно рекламных цен за ресурсы получилась. И это без учета трафика. Получается слишком дорго.
      • 0
        не совсем понятно за что тогда переплата? стоимость часа работы каждого сервера фиксированная, только за траффик можно «переплатить», поясните плиз.
        • 0
          Окрыл рекламную страницу на Wiki, расчитал цену по ней, получилось около 150 баксов в месяц, посчитал что в общем подходит. Запустил конфигурацию, тем более мне еще 50 баксов кредита дали. Вроде все нормально, начал переносить данные и оставил в холостом режиме на некоторое время на стабильность посмотреть, как раз думаю пока купон рекламный кончится. Правда вернулся чуть позже. И вижу, что с меня оказывается уже под 200 баксов моих списали. Написал в саппорт, они мне отписали, что мол так и должно быть. Сколько не пытался арифметическими действиями получить ту же сумму на которую меня зачарджили, но так и не понял как это сделать с прайслистом. Наверное какой-то магический коэффициент потерял.

          Понял что с GoGrid у меня работать уже не удалось и закрыл аккаунт.
          • 0
            Не знаю, у меня выходит 70-80 в месяц с траффиком на самом маленьком инстансе, к тому же у них в панели есть ежедневные счета на услуги, сравните их.
            траффик вот у них непредоплаченный дорогой… зато входящий бесплатен, он мне и нужен в основном, потому я очень доволен пока :)
            • 0
              Мне минимальная не подошла из-за памяти. А дневные сводки и того интереснее были. Инстанция стоит и не шевелится, а цена прыгает. Что это такое саппорт так и не объяснил, вместо этого прислал еще 50 баксов на счет, но быть бета тестером за такие немалые деньги я уже был не согласен.
  • +3
    Был опыт использования EC2 в продакшне. Не понравилось.

    1. Периодически случались странные тормоза. Похоже, Амазон перепродаёт ресурсы.
    2. Как-то раз инстанс подвис, из контрольной панели с ним ничего сделать не получалось, а саппорт не реагировал никак целые сутки!
    3. Elastic IP фактически NAT'ится на «серый» (который и висит на интерфейсе) из подсети 10/8 — неудобно.

    По-моему, для общих задач лучше брать обычный XEN VPS, благо их сейчас много кто предоставляет. И дешевле, и надёжнее.

    А вот S3 штука прикольная, хотя тоже со своими минусами.
    • +1
      >перепродаёт
      В сысле oversell? Чёртова неоднозначность русского языка :)
      • 0
        Угу, oversell. К сожалению. Не ожидал такого от крутой и известной конторы.
  • +4
    Куда уходить? Dedicated сервер — дорого, VPS — учитывая что мой сервер на J2EE требовал памяти — получалось тоже не дешево (минимум надо было 512 Mb) — плюс ряд других проблем. И вот я решил (давно собирался) что настало время AWS
    Хостинг на Амазоне — это решение не для экономии, а для масштабируемости. По цене он как раз проигрывает обычным дедикам. Выделенный сервер в Европе можно взять от 50 евро в месяц.
    • 0
      50 евро и 40 баксов (хотя получается что не 40 и ближе к 60-ти) — все таки большая разница (в случае когда мощность всего dedicated и не нужна)
      Я все-таки выбирал между VPS и амазоном и получалось что за туже цену я получал в два раза менее мощный (объемистый) VPS
  • 0
    Касательно «AWS сложный» & «не для экономии, а для масштабируемости» — есть ряд надстроек типа rightscale и нашего Scalr
  • +1
    Кстати по поводу цен — как раз недавно тут было обсуждение цен на VDS в россии — некоторое summary тут: habrahabr.ru/blogs/hosting/62008/#comment_1708062

    Итого — ничего меньше 30 баксов. Да, AWS получается в районе 50-60 в месяц (при оплате за год) — но и параметры при этом в 2-3 раза лучше
  • 0
    За small instance в европейской локации у меня вышло под 70$ в месяц. Поигрался, фичи вкусные попробовал, чтобы быть на волне прогресса и закрыл, слишком дорого это.
    Собсно прайсы вот или по ссылке:





  • 0
    Благодарю за статью было интересно почитать.
    Сервисы от амазона пока использовать желания нет (кроме S3) поэтому есть просьба к тем кто сталкивался: скиньте пожалуйста ссылочек на проверенные европейские компании у которых можно заказать dedicated. И как у них там дела с трафиком обстоят? Как я понимаю бесплатного трафика у них нет в принципе? Или ошибаюсь?
  • 0
    Поосторожнее с данным хостером. Два месяца назад ушел от них. После четырех месяцев использования рухнул жесткий диск, сервер полностью стал неработоспособным. Достучаться до саппорта просто нереально было, ибо бесплатный саппорт отвечает у них в течении 2-3 дней, да и ответ-то был интересны: «Да, такое случается, поднимите еще 1 инстанс и все.». В итоге куча негатива только к ним, и ничего более.
    • 0
      ну так у них и смысл сервиса в том что инстанс не вечен.
      для надежного хранения данных надо использовать s3. А инстанс это где то в облаках, то тут то там. При выключении или зависании все пропадает и запускается новый из нужного вам образа. Образ кажется тоже нужно хранить на s3. Если не ошибаюсь то трафик на s3 считается локальным. Амазон для тех кому нужно несколько серверов под одну задачу. Один из десяти упал поднялся другой. Нагрузка возросла поднялось еще 10 инстансов, нагрузки нет — осталось 1-2 инстанса.
      Почитайте статью про Рисоваську, там все человеческим языком написано, даже я смог поднять инстанс на винде и зайти в него по RDP.

      PS: у какого еще хостера вам дадут vps для экспериментов на пару часиков за смешные копейки. Я поигрался понял что это круто, понял что мне это не где применить, и успокоился. В конце месяца получил счет на один доллар и забыл.
      • 0
        Я не говорил о как таковой потере данных. Ситуация вот какая: у меня есть проектик небольшой, я поставил сервер, заплатил человеку 200 долларов, чтобы он все настроил. При падении, вся эта работа пропала. Я понимаю, что сервера не вечные, понимаю, что ломаются, но не через 4 месяца же. Сервера же — это вам не туалетная бумага, какая-то стабильность быть должна и при большом их количестве только и делать, что заниматься установокой новых и удалением старых? Причем теперь и по поводу S3 у меня большие сомнения, гарантии надежности там нет никакой так же как и на EC2. Можно обезопасится разве что при помощи многократного клонирования информации. В таком случае где тут выхода-то? Где тут копейки? Вместо физического сервера за 150 баксов с зеркальным рейдом, ежедневным бакупом и т.п. вещами, создавать такой же набор, только на основе амазона, по деньгам то же самое и выйдет, если не дороже. Опять же при малейшем подозрении, на то, что у вас проблемы с безопасностью, к примеру у меня через открытый движок произвели атаку, сервак был отрублен, после апдейта пришлось стучаться в саппорт 2 дня.

        В общем у меня не сложилось с ними, вот и все тут. А размер проекта тут не при чем, если я плачу за сервера (или сервера) то какого черта делить меня на большой или малый, да пусть хоть 1 посетитель в сутки, мне нужно, чтобы все работало и работало всегда, без перерывов, я купил мощный сервер, мое дело сколько и кому отдать денег.
        • 0
          мне кажется вы не правильно поняли идеологию облачных серверов.
          После настройки инстанса нужно было сделать его полный бэкап на s3 — это вообще первое что нужно сделать, т.е. у вас появляется ваш личный образ настроенного сервака. Этот образ инстанса вы можете выложить в общее использование, а можете оставить приватным. Все данные(БД) нужно хранить не в EC2.
          Данные помещенные в s3 сразу же дублируются физически на разных железках, если к файлу с s3 идет много обращений, то он автоматически дублируется на другие сервера, таким образом он доступен всем и всегда — может выдержать любую нагрузку на скачивание!!! и будет всегда доступен по url.
          • 0
            амазон для тех проектов, которым сейчас нужен один сервер, а через неделю нужно 10.
            Твиттер — ни кто ж не знал что он будет так популярен. Ребята просто не успевали покупать новые сервера, твиттер постоянно падал из-за нагрузки, вот и решили перейти на амазон. Начиная проект, который может стать бешено популярным лучше запустить его на амазон, т.к. при увеличении нагрузки Вы в любой момент можете увеличить количество серверов.

            Вот же habrahabr.ru/blogs/hosting/55058/ отличная статья где все разжеванно
        • 0
          Да, вы не правильно понимаете, что Амазон — это очередной хостер и просто ваш человек не правильно настроил, где хранить данные. У Амазона четко написано, в любой момент инстанс может умереть и вы потеряете все данные на нем! Правда происходит это все же очень редко. Чтобы не терять данные, нужно было подключать монтируемый том (EBS) к инстансу. Данные на нем хранятся раза в три надежнее, да и скорость доступа к нему выше. При смерти инстанса, монтируемый том остается, вам нужно только запустить новый инстанс, остановить старый и подключить том к новому инстансу.
          Далее про S3. В ней данные хранятся с троекратным дублированием (минимум), то есть это внутреннее устройство S3 и вы за это не платите. Поэтому надежнее и не нужно, плюс выдерживание высоких нагрузок при большом кол-ве обращений, плюс CloudFront, чтобы ускорить доступ к данным. В общем действительно клевая штука.
          • 0
            Да был там S3, ничего никуда не потерялось. Меня ситуация с быстрой кончиной сервера не обрадовала совсем.
            • 0
              да не сервер это был, а инстанс.
              Представьте что у него срок жизни 4 месяца и они все умерают через 4 месяца. Может так будет проще понять что такое облачный сервер.
              • 0
                хорошо =)
  • 0
    Дорого. Банально дорого. VPS можно брать например у ганди (gandi.net) или в слайсхосте (slicehost.com) гараздо, гараздо дешевле.
    • 0
      ну а что вы хотели за сервис, в котором в любой момент в течении пары минут можно увеличить количество своих серверов в разы, а после спада нагрузки вернутся на один сервер. При этом заплатив за дополнительные сервера только за часы использования.
      • 0
        я могу такое на gandi.net
        • 0
          что-то с трудом верится, что там есть возможность с одной инстанции перепрыгнуть на 20 и быстро вернуть обратно.
          • 0
            1-16 макс. Дальше рекомендуют в инфраструктуру уходить.
    • 0
      Не согласен. Как тут было подсчитано — минимальный хостинг будет стоить на амазоне при оплате за год порядка 50-60 баксов в месяц. На ганди за такие деньги можно взять 4 shares. А теперь сравниваем — на амазоне за это получаем 1.7 Mb, у ганди 1024 Mb

      То есть тут проблема амазона в том, что это минимальный хостинг — то есть меньше не получится — на ганди (и у других провайдеров) можно.
      • 0
        4shares — это 20мбит анлим канал у ганди. У амазона — расходы на трафик отдельно.

        Покупать Amazon имеет смыла только когда у вас больше 20 тысяч залогиненых юзверей в сутки. И то не факт.
        • 0
          ну оно как бы и расчитано на то, что его будут использовать сетевые сервисы. Тот же wordpress.com использует AWS
  • 0
    Как там оплатить с карты Visa, если CVV2 не спрашивают?
    • 0
      Да им и не нужен этот код. Вот вопрос на тостере toster.ru/q/34795

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.