Я  несколько раз пытался что то написать, но не мог решить с чего же начать рассказывать про Амазон EC2. Всё таки по сравнению с мировой революцией и выходом человека в космос сервис амазона это не такая значительная веха в истории человечества. На самом деле это не совсем так – Амазон сделал очень удобную технологию на которой базируются уже многие сотни вполне успешных проектов и у этой технологии огромное будушее. Вкратце это выглядит так – вы платите амазону небольшие денежки ( 10 центов в час за один сервер через кредитку ) и в ответ получаете сервер ( Fedora ) c root-вым доступом, который виден снаружи : http, ssh – открываем/закрываем доступ как хотим – у нас же root. То что установлено – можно подправить – заходим через ssh, конфигурируем там все как хотим – сохраняем image под своим именем, потом когда просим новый сервер – просто говорим что хотим загрузить на сервер тот самый наш image.
Денег такое счастье стоит совсем немного, особых проблем ( в виде например втыкания железа в стойки ) за собой не тянет. Основная фишка – это то что можно оперативно “заказывать” и “выключать” ( и соответственно не платить! ) более-менее любое количество серверов.
Дешево ли 0.10 $ в час за некий не шибко мощный сервер ( примерно 75 $ в месяц или 900 $ в год ) ? Аренда чего то похожего ( наверное все таки dedicated ) будет стоить около 200$ в месяц или 2400$ в год. Конечно dedicated в стойке я так подозреваю будет побыстрее чем разделяемый одновременно несколькими виртуальными ОС ( см. Защищенность данных в Amazon Web Services )  за 10 центов в час, но тем не менее это всё таки почти тоже самое ( root доступ :-) ), и денег стоит дешевле. И самое главное – сразу забываем про стойки, дц и прочее – нужен сервер – легким кликом говорим амазону хочу N серверов ( instance в терминологии амазона ) на котором будет стоять вот этот мой image с пропатченным моими кривыми ручками моим родным русским апачем. И еще – я хочу не один, а пару сотен таких серверов в ближайший час. И через несколько минут я их получаю. Со свеженалитыми, белоснежно чистыми ос загруженными с моего image ( сколько денег-времени будет стоить переналить какую нибудь FreeBSD на хостинге, да еще если нужна FreeBSD c русским апачем и ерлангом ? :-) . Нагрузка на проект выросла – нажал кнопочку – добавил в кластер сколько нужно серверов, упала нагрузка – прибил лишние.
Конечно сделать систему гибко масштабируемой чтобы от плюс-минус серверов всё так же работало сложнее чем сразу прибить гвоздями все в расчете на N серверов, а потом вытаскивать прибитые гвозди и забивать новые когда появились деньги на расширение аппаратного парка. Конфигурация small AMI ( того за который надо платить 0.1$ в час – но есть мощнее, и дороже) на самом деле неплохая – Dual Core AMD 2.6 GHz


#cat /proc/cpuinfo

processor : 0
vendor_id : AuthenticAMD
cpu family : 15
model : 65
model name : Dual-Core AMD Opteron(tm) Processor 2218 HE
stepping : 3
cpu MHz : 2599.998
cache size : 1024 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu tsc msr pae mce cx8 apic mca cmov pat pse36 clflush mmx fxsr sse sse2 h t syscall nx mmxext fxsr_opt lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8legacy ts f id vid ttp tm stc
bogomips : 5201.99
# uname -a
Linux domU-12-31-38-01-BD-B3 2.6.16-xenU #1 SMP Mon May 28 03:41:49 SAST 2007 i686 athlon i38 6 GNU/Linux
# free
total used free shared buffers cached
Mem: 1740944 67652 1673292 0 3604 22372
-/+ buffers/cache: 41676 1699268
Swap: 917496 0 917496

Как выглядит моя работа со всем этим? Очень просто – запустить новый сервер ( instance ) из командной строки – дело менее чем минутное. Я запускаю Cygwin, хотя тоже самое можно делать из win32 command line – просто я привык к ls и grep, а из него виртуальную машину Java и несколько команд из ec2 command line toolkit. Запускаем виртуальную машину java ( “%JAVA_HOME%\bin\java” -version ), потом последовательно ec2-describe-images, ec2-run-image %имя_image%, ec2-describe-instances – вижу имя машины
Amazon ec2 Cygwin getting started

потом захожу на неё putty
Amazon ec2 putty
root в терминале – делаем что хотим :-)
amazon ec2 instance terminal

Apache поднят ( 80 порт у меня открыт, как и 22 :-) )
fedora apache

Замечу что поднята не просто какая то там Fedora, а именно та которая мне нужна ( на которую я поставил то что мне нужно как нужно ). Поигрался с erlang, поставил мозг набекрень – всем спасибо – ec2-terminate-instance %имя_instance%.
amazon terminate instance

Если я захочу тоже самое проделать с каким нибудь ЧЧЧ хостингом – это будет пара дней ожидания , и не дай бог я хочу что не то что есть у них . Не говоря, про то что ЧЧЧ хостинг захочет свои двести баксов сегодня – и хорошо если просто яндекс-деньгами можно оплатить, а то ведь есть варианты с тем чтобы отсылать по факсу копию паспорта, etc , а амазону я заплачу ровно за время между ec2-run-instance и ec2-terminate-instance ( больше 10 часов в терминале в день я не выдержу – получаем затраты в 1 $, хотя конечно одной машиной дело не всегда ограничивается но тем не менее ), и  самое главное что услуга оплачивается _потом_. Ведь правда же что есть некоторая разница в том чтобы вложить в проект пару сотен тысяч долларов сегодня на аппаратные ресурсы, или сегодня вложить 200 долларов, и если всё получиться – вложить завтра еще пару тысяч, а уж если и потом получится подключить более значительные инвестиции. Собственный ДЦ тут тоже не очень спасает положение – что-то будет делаться немного лучше и быстрее чем на чужом хостинге, но возможности даже самых лучших системных администраторов ограничены – никто не сможет дать вам пару сотен свежезалитых машин в течении 10 минут и избавиться от них через пару часов, например.

Amazon Elastic Clouds это не технологический прорыв ( ibm это делает уже много и давно – правда простым смертным сей сервис недоступен – выкупать товарный поезд в сотню вагонов, когда тебе нужно одно купе будет не очень хорошей идеей ), но то что они не первые и наверное не самые быстрые, я думаю их не особенно беспокоит потому что они самые удобные.

Остальные статьи про Amazon Elastic Compute Cloud.

В следующей серии – как начать работать с ec2 и получить от этого удовольствие :-)

ps. Стоит еще отметить что в реальной жизни есть еще такая вещь как оплата входящего-исходяшего трафика – но это отдельная история.

14 Comments

  1. valera says:

    Добавление сервера в кластер делаеться путем простого нажатия кнопки, а как же система делает балансировку нагрузки. К примеру Mysql нужно настроить для работы с кластером, ровно так же как и апач. Раскажит е про это поподробней

    Reply

  2. Про Oracle Business Intelligence » Еще про Oracle и Amazon EC2 says:

    [...] описание на русском о том, как работает EC2. Не в контексте Oracle, а вообще. [...]

  3. alexey bokov says:

    Да, Oracle в Elastic clouds активно внедряется лицензируется – Oracle Enters the AWS Cloud

    Reply

  4. And says:

    Алексей, а возможно ли создавать имиджи EC2 локально, а потом заливать на Амазон?
    Я нашел в инете, что существуют какие-то конвертеры между AMI и VMware, но насколько это надежно и поддерживается – не ясно.

    Reply

    alexey bokov Reply:

    Процедура создания Amazon images ( AMI ) вкратце выглядит следующим образом –
    1) скачиваем AMI tools https://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.noarch.rpm
    2) запускаем утилиту ec2-bundle-vol – она создает много image.part.XX файлов в указанном каталоге, формат файлов не смотрел – что внутри это не знаю, но подозреваю что без упаковки дело не обошлось и что на самом деле это разбитый на части ISO :-) Суммарный размер – около 200-300 Мб.
    3) Потом загружаем это в S3 – ec2-upload-bundle и регистрируем этот bucket в S3 как AMI – ec2-register.

    В принципе, ничего не мешает проделать все эти процедуры снаружи amazon compute cloud, но есть одно но – Amazon EC2 построен на базе Xen – см Защита данных в веб сервисах Amazon ), и нужно чтобы ОС в образе поддерживала Xen ( этим кстати Xen и отличается от VMWare – требуется поддержка Xen в ядре ОС, но зато Xen быстрее – как всегда платой за универсальность VMWare оказывается производительность ). Насколько я знаю большинство Lunix дистрибутивов включают в себя поддержку Xen.

    Про создание AMI внутри VMWare и конвертацию VMWare образов в AMI есть хороший пост на TheWebFellas. Я думаю что при определенных условиях ( ос с поддержкой Xen например ) это действительно будет работать.

    На мой личный взгляд лучше всего взять AMI с свежим и чистым Fedore ( ubuntu или кому что больше нравится ), создать instance внутри облака и доводить его до ума, а потом создать свой образ с правильными настройками и его расплодить на весь кластер.

    Reply

  5. Evgeniy says:

    Не могу подключить SSH к запущенному Linux Instance (использую putty) – говорит, что не может открыть ключевую пару или если принудительно указываю где она лежит – говорит что это не тот файл. Тем не менее для windows машины через remote desktop спокойно подчключаюсь.

    Если кто может помочь, оплачу консультацию. Можно просто показать – пущу в свой комп, чтобы я видел как это делается.

    Спасибо!

    Reply

    alexey bokov Reply:

    Возможно Вы перепутали ключи – http://developer.amazonwebservices.com/connect/thread.jspa?threadID=25309&tstart=45, или сгенерировали ключи для putty на основе другой пары ключей, отлючающейся от тех с помошью которых запускался instance.
    Если для аккаунта в amazon ec2 имеется несколько пар ключей ( например работает несколько девелоперов ) то при запуске instance не забывайте явно указывать имя пары ключей –
    ec2-run-instance xxx -k my-keypair, иначе instance запустится с парой ключей которая берется по умолчанию которая может не совпадать с Вашей, а Вы будуте пытаться получить туда доступ со своими ключами.

    Reply

  6. Alex says:

    \Дешево ли 0.10 $ в час за некий не шибко мощный сервер ( примерно 75 $ в месяц или 900 $ в год ) ? Аренда чего то похожего ( наверное все таки dedicated ) будет стоить около 200$ в месяц или 2400$ в год.\

    1x AMD Opteron 2344 HE, 1x Quad-Core
    4 GB DDR2-RAM ECC
    2x 250 GB SATA II HDDs
    Hardware RAID1
    5,000 GB data transfer included

    железо серверное, фирменное (Сименс Футжитсу)

    и все это счастье за 100 баксов в месяц.

    у амазона только эти 5Т трафика для веб-сайта будут стоить 500Г входящего = 500*0.1 = 50$ + 4500Г исходящего = 4500*0.17 = 765$ итого больше 800$ в месяц.

    никакого сравнения просто быть не может.

    а если нужно 200 серверов установить, то делается скрипт, который накатывается поверх стандартной установки.

    минуса два
    1) если амазоновский сервер включать на пару часов в день, тогда безусловно будет дешевле. только зачем такой сервер нужен?
    2) добавление сервера у амазона занимает минуты, добавление дедика – сутки-двое. однако если нужно добавить сервер за минуту – говорит о полном отсутствии мониторинга-планирования – винить только себя можно.

    Reply

    alexey bokov Reply:

    Об этом можно довольно долго спорить, хочу только заметить что существует целый класс scalable приложений для которых динамическое изменение размеров кластера ( автоматически, без участия админов и прочего ) является обычным делом – например rightScale, gigaSpaces XAP или например GridGain.
    Еще хочу заметить что ec2 очень удобно для поднятия разного рода демо для клиентов – в качестве пример деплоймента на общеизвестную cloud платформу, а также как средство быстро и без особых проблем потестировать свое приложение в каком либо окружении. Для классических приложений amazon ec2 конечно будет дороже, но вообще построение приложений на основе парадигмы data/compute cloud на сегодня является одним из самых перспективных трендов – cloud will be here – Kevin Kelly: Predicting the next 5,000 days of the web

    Reply

  7. Danil Negrienko says:

    Трафик очень дорогой по сравнению с dedicated/colocation решениями. Суровая проза жизни. Под видео/аудио — даже сравнивать страшно.

    Reply

    alexey bokov Reply:

    вообще про трафик ( внешний!! ) в целом плюс один, но относительно видео все не так плохо, есть например wowza – то есть на самом деле все не так уж и плохо )

    Reply

  8. tantra says:

    А вот если поднимать на ec2 кластер из Hadoop/Hbase, то внутренний трафик потребляемый кластером (для ребаланса дата нод и трифик между клинетом и регион сервером) он как то оплачиваеться? На ихнем сайте все както очень по хитрожопому описано, у час у них немашинный а календарный и трафик входящий с 2010 уже тарифицируеться.

    Вообще у меня идея для динамики построить кластер на ec2 адля статического контента взять какой нить CDN, по идее должно быть не дорого или же я ошибаюсь?

    Reply

    alexey bokov Reply:

    весь трафик внутри гео региона ( eu-west-1, us-east-1, us-west-1 ) не оплачивается. про недорого – надо на детали смотреть – есть примеры разных архитектурный решений использующих ес2.

    Reply

Leave a Reply

Get Adobe Flash playerPlugin by wpburn.com wordpress themes