Журнал LinuxFormat - перейти на главную

LXF128:Amazon EC2

Материал из Linuxformat
Перейти к: навигация, поиск
Hardcore Linux Проверьте себя на крутом проекте для продвинутых пользователей

Содержание

Amazon EC2: На облаке

Надоела шумиха насчет облачных вычислений? Коэн Вервлоесем докажет, что это не пустая болтовня, и запустит в облака Ubuntu.

Elastic Compute Cloud (EC2) от Amazon – гибкая альтернатива традиционному серверному хостингу. Посути, это те же серверы, на которых запущены виртуальные машины на гипервизоре Xen, но работа с ними организована поистине гибко. Можно запускать свои виртуальные машины за какие-то минуты, а за ненадобностью – отключать. Оплата за них рассчитывается по трем параметрам: количество машинного времени, объем сгенерированного сетевого трафика и тип используемой конфигурации, от ма ленькой (Small) до большой (Large). Это настоящие вычисления по требованию: если ваш сервер испытывает пик нагрузки, вы просто бросаете на подмогу дополнительные экземпляры. Отпадает и проблема долгосрочных контрактов на хостинг – Amazon не требует авансовых платежей. Неудивительно, что многие начинающие компании и сервисы Web 2.0 вроде Facebook используют для своих web-приложений EC2.

Как пользователь EC2, вы создаете или загружаете так называемый образ компьютера Amazon (Amazon Machine Image, AMI). Это заранее сконфигурированная операционная система и ПО, которые инициа лизируются на EC2 как виртуальная машина (ВМ). У Ubuntu есть официальные образы для Server Edition 8.04, 8.10 и 9.04. Виртуальные серверы Ubuntu следуют стандартному жизненному циклу поддержки Ubuntu, то есть обычный релиз сопровождается обновлениями безопасности и тому подобным в течение 18 месяцев, а релиз с долгосрочной поддержкой, такой как 8.04, поддерживается в течение пяти лет. Посмотрим, как это работает в Ubuntu 9.04.

Официальные AMI Ubuntu

Версия Доступна x86 x86_64
8.04 (Hardy) Европа ami-30c0e844 ami-3ac0e84e
8.04 (Hardy) США ami-5d59be34 ami-2959be40
8.10 (Intrepid) Европа ami-80c0e8f4 ami-84c0e8f0
8.10 (Intrepid) США ami-5059be39 ami-255bbc4c

Присоединяемся к Amazon EC2

Образами Ubuntu можно пользоваться бесплатно, но вам придется завести учетную запись на Amazon EC2 и указать данные своей кредитной карты, с которой будет списываться плата за ресурсы. Итак, создайте учетную запись AWS на http://aws.amazon.com, перейдите на http://aws.amazon.com/ec2 и выберите SignUp For Amazon EC2. Затем введите реквизиты своей кредитной карты. После регистрации сайт попросит вас создать сертификат X.509 или загрузить его. Если у вас его нет, позвольте Amazon создать его и заберите закрытый ключ. Не потеряйте ключ, потому что Amazon удалит его с сервера! Вам так же понадобится загрузить файл сертификата. Мы сохранили оба в ката логе ~/.ec2. Запишите номер своей учетной записи – число в виде XXXX-XXXX-XXXX, которое показывается под словами «Добро пожа ловать, имярек» после входа в систему.

Получив учетную запись, нужно за дать кое-какие переменные окружения, так как утилитам EC2, которые мы собираемся установить, потребуются закрытый ключ и файл сертификата. Для этого добавим в ~/.bashrc следующие строки:

export AWS_USER_ID=XXXXXXXXXXXX
export AWS_ACCESS_KEY_ID=XXXXXXXXXXXXX
export AWS_SECRET_ACCESS_KEY=XXXXXXXXXXX
export EC2_PRIVATE_KEY=$HOME/.ec2/pk-XXXXXX.pem
export EC2_CERT=$HOME/.ec2/cert-XXXXXXXXXX.pem
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/

Первые три числа можно найти на странице «Идентификаторы доступа» (Access Identifiers) на странице вашей учетной записи в Amazon AWS. AWS_USER_ID — номер учетной записи без дефисов, а переменные EC2_PRIVATE_KEY и EC2_CERT ссылаются на закрытый ключ и сертификат соответственно. Убедитесь в правильности имен файлов, затем откройте новый терминал или выполните в нем команду source ~/.bashrc, чтобы обновить переменные окружения.

установка утилит

Подготовив учетную запись и задав переменные окружения, остается установить утилиты EC2. В версии 9.04 (Jaunty) это легко. Просто включите репозиторий Multiverse (так как исходники утилит EC2 от Amazon не открыты) и установите инструменты, например, командой sudo apt-get install ec2-api-tools.

Чтобы проверить, все ли утилиты установлены и настроены правильно, просто убедитесь, работает ли команда

ec2-describe-images -o self -o amazon

Если все в порядке, вы увидите длинный список образов, которые Amazon предлагает запустить на EC2. А если вас поприветствова ло сообщение об ошибке ‘Client.AuthFailure’, значит, что-то не так с учетной записью Amazon Web Services (например, указаны неверные данные кредитной карты) или вы сослались не на те закрытые ключи или файл сертификата в ~/.bashrc.

Теперь сгенерируйте пару ключей SSH для входа в EC2, следующим образом:

ec2-add-keypair lxf-keypair > ~/.ec2/lxf-keypair.pem

Затем разрешите доступ по SSH, иначе мы не сможем войти в наш экземпляр ОС на облаке (а если в вашей облачной ОС работает web-сервер, откройте так же доступ к порту 80):

ec2-authorize default -p 22

На последнем этапе убедитесь, что права доступа ко всем файлам ключей заданы верно. Вряд ли вы за хотите, чтобы их видел кто-то другой:

chmod 600 ~/.ec2/*.pem

Переносить ли сервер на облако?

В Ubuntu Server 9.04 к программе GNU screen были добавлены несколько полезных профилей, которые постав ляются под именем screen-profiles. Они позволяют показывать некоторую системную информацию в статусной строке экрана. Сюда входит примерная стоимость вашей сис темы на Amazon EC2. При ее расчете анализируются время работы системы, число процессоров и активность сети.

Утилита пригодится и на серверах, которые не работают на EC2. С ее помощью можно подсчитать, во сколько обойдется перенос на EC2 физического или виртуального сервера.

Для получения более подробной информации можно так же запустить скрипт ec2-cost script командой /var/lib/screen-profiles/ec2-cost --detail.

Запуск нашего первого AMI на EC2

Теперь все готово для запуска Ubuntu на EC2. Единственное, что нам нужно знать – идентификатор публичного образа Ubuntu AMI ID (несколько таких приведены в разделе «Официальные AMI Ubuntu» выше). Например, если вы хотите запустить 32-битную Ubuntu Hardy в США (на выбор даются США и Европа), выполните следующую команду:

ec2-run-instances ami-5d59be34 -k lxf-keypair

Убедитесь, что после параметра -k указано имя пары ключей, а не имя локального файла с путем. Если все в порядке, команда ec2-describeinstances выведет название нового экземпляра со статусом ‘pending’ [ожидание].

Запускаем и работаем

Через некоторое время (порядка пары минут – потерпите немножко!) статус изменится на ‘running’, и экземпляр получит IP-адрес и имя хоста:

$ ec2-describe-instances
RESERVATION r-c5a1f2ac 181921386298 default
INSTANCE i-afa7a8c6 ami-5d59be34 ec2-174-129-86-
66.compute-1.amazonaws.com ip-10-244-125-177.ec2.
internal running lxf-keypair 0 m1.small 2009-07-
29T13:45:18+0000 us-east-1d aki-6e709707 ari-6c709705

После этого можно войти на виртуальный сервер Ubuntu, который вы запустили как пользователь ‘ubuntu’. Просто ука жите правильно ключ SSH и имя хоста (которое начинается с ec2- и заканчивается amazonaws.com):

ssh -i ~/.ec2/lxf-keypair.pem ubuntu@ec2-174-129-86-66.compute-1.amazonaws.com


Так как вы входите в систему с помощью пары ключей, пароль вводить не придется. Ваша ВМ Ubuntu приветствует вас, и теперь на сервере Ubuntu в облаке можно делать все что угодно! Можно создавать пользователей и устанавливать пакеты, такие как web-сервер или база данных. Последнее проще всего сделать командой sudo tasksel.


Кстати, счетчик оплаты запускается с момента запуска ОС на EC2 — не забудьте завершить ее работу, если она вам не нужна! Это делается командой

ec2-terminate-instances i-afa7a8c6

Идентификатор экземпляра, в примере – i-afa7a8c6, можно найти в выводе команды ec2-describe-instances. Однако после остановки системы все ваши изменения, сделанные в образе, будут утеряны.

По умолчанию, каждая ВМ при инициализации получает случайный IP-адрес. Работающий на облаке сервер довольно удобен, но если вы хотите разместить на нем службу для других пользователей, он должен быть доступен по фиксированному IP-адресу. Нужно ли за это платить? Нет! Добрый Amazon предоставляет каждому пользователю пять бесплатных IP-адресов. Вот как их получить:

  1. Затребуйте IP-ад рес командой ec2-allocate-address. Она вернет строку с зарегистрированным адресом.
  2. Свяжите выполняющийся экземпляр с выделенным IP-адресом командой ec2-associate-address. Она принимает два параметра: идентификатор экземпляра и IP-адрес.
$ ec2-associate-address 174.129.11.115 -i i-15a3ac7c
ADDRESS 174.129.11.115 i-15a3ac7c

Это потребует пары минут, в течение которых система не будет доступна ни по старому, ни по новому IP-адресу. После этого вам нужно будет помнить только один IP-адрес, и можно создать собственное доменное имя, ссылающееся на него. Вывести список всех выделенных IP-адресов можно командой ec2-describe-addresses.

Создаем собственные AMI

EC2 прекрасен, но, как мы уже говорили, по завершении работы системы все изменения уничтожаются. Так почему бы не создать собственный образ? К счастью, Эрик Хэммонд [Eric Hammond] написал скрипт, который собирает, комплектует и загружает образ Ubuntu или Debian на Amazon EC2 (он так же создал несколько образов рабочих столов – см. ниже). Для начала просто загрузите программу с http://ec2ubuntu-build-ami.notlong.com.

Теперь создадим образ Ubuntu Jaunty командой ec2ubuntu-build-ami. Это большая команда с изрядным количеством параметров. Вот ее пример:

sudo bash ec2ubuntu-build-ami --codename jaunty –bucket
lxf-bucket --user $AWS_USER_ID --access-key $AWS_
ACCESS_KEY_ID --secret-key $AWS_SECRET_ACCESS_
KEY --private-key ~/.ec2/pk-XXXXXXXXX.pem --cert ~/.ec2/
cert-XXXXXXXX.pem --bundle-opts --no-inherit

Здесь lxf-bucket – название корзины S3, в которой окажется образ. В качестве кодового имени можно использовать ‘dapper’, ‘hardy’, ‘intrepid’, ‘jaunty’ и ‘karmic’ для образов Ubuntu и ‘etch’, ‘lenny’ и ‘squeeze’ – для образов Debian. Эту команду так же можно выполнить на экземпляре образа AMI, запущенном на EC2, опустив параметры --bundle-opts --no-inherit.

Рабочий стол на облаке

На Amazon EC2 можно запустить и настольную версию Ubuntu, и Эрик Хэммонд создал несколько общедоступных образов. Найдите идентификатор образа на http://alestic.com и запустите его на EC2. Например, для 32-битной версии Jaunty команда будет такой:

ec2-run-instances ami-0b729462 -k lxfkeypair

Этот образ загружается дольше, чем образы серверных систем. Зайдите в систему, обновите ее (apt-get update && apt-get upgrade -y) и создайте пользователя командой user-setup. Установите и запустите клиент NX на локальном компьютере и укажите ему внешнее имя хоста своего экземпляра настольной версии Ubuntu в EC2. Введите имя пользователя и пароль, которые вы указали при создании пользователя, и выберите рабочий стол Gnome.

Теперь ваш рабочий стол Ubuntu работает на серверах Amazon. Благодаря NX его не отличить от локального!

Создаем и загружаем

Команда ec2ubuntu-build-ami выполняется очень долго и выдает массу сообщений. Погуляйте в парке, заварите чашечку чая или другого кофеинового напитка и подож дите, пока образ создастся и загрузится. Когда вы вернетесь и увидите, что команда завершила работу, она предложит вам запустить ec2-register для регистрации загруженного образа в Amazon S3. Команда вернет идентификатор образа:

$ ec2-register lxf-bucket/ubuntu-9.04-jauntycustom-20090730.manifest.xml IMAGE ami-7b6c8d12

Идентификатор так же можно найти командой ec2-describeimages:

$ ec2-describe-images
IMAGE ami-7b6c8d12 lxf-bucket/ubuntu-9.04-jauntycustom-
20090730.manifest.xml 181921386298 available
private i386 machine

Итак, у нас появился частный образ с идентификатором ami-7b6c8d12. Запускается он так же, как и наши прежние образы. Например:

ec2-run-instances ami-7b6c8d12 -k lxf-keypair

Теперь немного подождите и зайдите на свой сервер Ubuntu Jaunty на Amazon EC2 по SSH (по умолчанию создается только пользователь root). Если система не загружается, изучите вывод ядра по команде ec2-get-console-output с идентификатором экземпляра.


Получив работающий образ, вы наверняка захотите сделать с ним еще что-нибудь. Добавить пакеты мож но с помощью параметра --package ИМЯ. Перед созданием образа можно так же запустить внешний скрипт параметром --script ФАйЛ. Для сборки образа настольной системы укажите параметр --desktop nx. Тогда в систему так же будет установлен сервер NX, и вы сможете подключиться к нему с рабочего стола Linux через клиент NX.

Кроме утилит командной строки, Amazon предоставляет для управления экземплярами EC2 web-интерфейс. Просто зайдите на http://console.aws.amazon.com/ec2 и войдите на сайт под своей учетной записью AWS. Теперь вы видите состояние своих систем на «приборной доске» [dashboard] EC2. Щелкнув на Instances [Экземпляры], вы увидите все запущенные системы и сможете завершить их работу или перезагрузить их, а так же посмотреть на консольный вывод запущенной системы или создать новую.

Щелкнув на AMIs, вы увидите список всех образов и сможете выбрать один из них для просмотра. Можно зарегистрировать новый образ, разрегистрировать существующий или изменить права доступа к вашим образам. Например, по умолчанию образ приватен, то есть запустить его может только владелец. Однако можно сделать его публичным и разделить с другими пользователями. Вы можете добавить других пользователей, если у вас есть номера их учетных записей AWS. Все это можно сделать и с командной строки, но web-интерфейс дает более широкий обзор.

Форум Swyzzle

Компания Swyzzle из Атланты предлагает сайт, на котором можно создать собственное мультимедиа-шоу. На серверной стороне они используют Ubuntu на Amazon EC2. Лори Холл [Laurie Hall], вице-президент по продуктам, объясняет, почему ее компании так нравится это сочетание: «Мы переместились с другой платформы облачных вычислений на Amazon EC2 из-за ее возможности поддерживать множество разных платформ. Мы выбрали Ubuntu потому, что наше серверное ПО для работы с мультимедиа, Wowza, его поддерживает, и потому, что нам нужна была платформа Unix. Раньше опыта работы с Ubuntu у нас не было, хотя мы уже много лет работа ли с различными версиями Unix. Я предпочла выбрать один из образов с http://alestic.com, так как они чистые и хорошо поддерживаются. При переносе нам оказался очень полезен форум ec2ubuntu на http://groups.google.com/group/ec2ubuntu. Рекомендую каждому желающему развернуть Ubuntu на EC2 подписаться на эту группу».

Польза от Ubuntu на облаке

Зачем нам Ubuntu на Amazon EC2? Если у вас есть web-приложение, и сервер регулярно работает на пике нагрузки, облако может быть жизненно необходимым, но у него есть и другие применения. Например, если вам время от времени нужен большой объем вычислительных ресурсов, но под рукой нет подходящего оборудования, воспользуйтесь конфигурацией High-CPU Extra Large: она примерно эквива лентна восьми виртуальным ядрам с процессорами Opteron или Xeon частотой 2,5 ГГц (см. таблицу «Варианты конфигурации»). Этот виртуальный компьютер отлично вас выручит, если понадобится ускорить сборку ядра на старом процессоре. Не забывайте: вы заплатите всего за один час, а это практически ничего не стоит!

Варианты конфигураций

Tип Процессор Память, ГБ Жесткий диск, ГБ Платформа Название Цена для США, $/час Цена для Eвропы, $/час
Small [Малая] 1 вычислительная единица EC2 1,7 160 32-битная m1.small 0,10 0,11
Large [Большая] 4 вычислительных единицы EC2 7,5 850 64-битная m1.large 0,40 0,44
Extra Large [Супер-большая] 8 вычислительных единиц EC2 15 1690 64-битная m1.large 0,80 0,88
High-CPU Medium [Средняя, с быстрым процессором] 5 вычислительных единиц EC2 1,7 350 32-битная c1.medium 0,20 0,22
High-CPU Extra Large [Супер-большая, с быстрым процессором] 20 вычислительных единиц EC2 7 1690 64-битная c1.xlarge 0,80 0,88
Персональные инструменты
купить
подписаться
Яндекс.Метрика