Amazon EC2

Когда речь заходит об облаке Amazon, большинство пользователей сразу же ассоциируют его с Amazon EC2. EC2 представляет собой вашу виртуальную сеть, в составе которой работают все ваши виртуальные серверы. Однако эта сеть не является независимой. Если вы пользуетесь EC2, то вы должны пользоваться и S3 для хранения ваших образов машин (machine images), о которых речь пойдет совсем скоро. Помимо этого, S3 может вам потребоваться и для хранения другой информации. Поэтому, если вы пропустили предыдущий раздел, считая, что вы можете пользоваться только EC2, а S3 вам не требуется, вернитесь назад и перечитайте его!

Концепции EC2

EC2 — это сервис несколько более сложный, чем S3. Основные компоненты, формирующие Amazon EC2, и их взаимоотношения схематически изображены на рис. 2.1.

Рис. 2.1. Компоненты, поддерживающие Amazon EC2

Перечислим основные концепции Amazon EC2.

± Экземпляр (Instance) — экземпляром EC2 называется виртуальный сервер, на котором работает выбранная вами гостевая операционная система (guest operating system), созданный на основании образа машины (machine image), который использовался для клонирования экземпляра.

± Образ машины Amazon (Amazon Machine Image, AMI) — изначальная (pristine) копия вашего сервера, которая используется для запуска любого количества экземпляров. Если вы знакомы с концепцией клонирования (ghosting), то вы быстро поймете, что образ машины представляет собой клонированный образ, на основе которого вы можете создать любое количество серверов. Как минимум, образ машины содержит основную операционную систему плюс типовой набор преинсталлированных утилит. В зависимости от выбранной вами стратегии развертывания он может содержать и ваше предварительно построенное Web- приложение. Amazon предлагает набор предварительно построенных AMI, с помощью которых вы можете быстро начать работу. В дополнение к этому, существуют еще AMI от сторонних разработчиков, и, наконец, при желании вы можете собрать и свой собственный AMI с учетом ваших индивидуальных требований.

± Эластичный IP-адрес (Elastic IP address) — это просто статический IP-адрес, присвоенный вам. Термин "эластичный" звучит несколько странно и может дезориентировать: будьте уверены в том, что он означает именно статический IP-адрес, а не динамический. По умолчанию каждый экземпляр Amazon получает динамически назначаемый IP-адрес, который после завершения работы вашего экземпляра может быть присвоен другому пользователю. Эластичные IP-адреса зарезервированы для вас, что очень полезно для экземпляров, доступ к которым должен осуществляться по одному и тому же статическому IP- адресу.

± Регион (Region) — группа зон доступности, которые формируют единый географический кластер. На момент написания этой книги соглашение об уровне сервиса (service level agreement, SLA) компании Amazon для сервиса EC2 гарантировало доступность как минимум двух зон доступности в пределах региона на 99,95 % в течение 12-месячного периода.

± Зона доступности (Availability zone) — примерный аналог центра обработки данных. SLA гарантирует, что в двух зонах доступности никогда не будет общих точек отказа (points of failure). На настоящий момент Amazon имеет три зоны доступности в США (все — на восточном побережье) и две — в Западной Европе. Вы можете указать зону доступности, в которой вы собираетесь запускать свои экземпляры виртуальных серверов, чтобы создать определенный уровень географической избыточности для ваших приложений.

± Группа безопасности (Security group) — в очень грубом приближении группа безопасности может рассматриваться как аналог сетевого сегмента, доступ к которому контролируется брандмауэром. Вы запускаете экземпляры своих серверов в группах безопасности и, в свою очередь, группы безопасности определяют, кто и что имеет право получать доступ к вашим новым экземплярам.

± Том блочной записи (Block storage volume) — на концептуальном уровне представляет собой аналог SAN. Том блочной записи предоставляет хранилище для блочной записи, которое вы можете примонтировать на основе ваших экземпляров EC2. После этого том можно отформатировать по вашему усмотрению, или вести на него запись неструктурированных данных (raw-формат). Можно даже создать на основе нескольких томов блочной записи виртуальный RAID.

± Моментальный снимок (Snapshot) — вы в любой момент можете создавать "моментальные снимки" ваших томов блочного хранения для целей резервного копирования или репликации. Эти моментальные снимки хранятся в Amazon S3, где их можно использовать для создания новых томов.

ОБРАЗЫ МАШИН ПО СРАВНЕНИЮ С ЭКЗЕМПЛЯРАМИ

Когда вы только начинаете работать с Amazon EC2, вы должны уяснить себе важное различие между образами машин (AMI) и экземплярами. Не расстраивайтесь, если сначала это отличие не вполне вам ясно, хотя в будущем эту разницу нужно прочувствовать, потому что ваша стратегия управления образами машин может оказать критическое влияние на ваши долгосрочные успехи в работе с облачными вычислениями.

Образ машины представляет собой прототип, по образу и подобию которого создаются ваши виртуальные серверы. Возможно, проще всего уяснить себе этот вопрос на концептуальном уровне, если воспринимать образы машин как копии жестких дисков вашего виртуального сервера, которые клонируются перед созданием и запуском нового сервера. Этот "новый сервер" как раз и будет представлять собой ваш экземпляр. Каждый раз, когда вы запускаете экземпляр, EC2 копирует образ машины на новый виртуальный жесткий диск, с которого и происходит затем загрузка экземпляра. На основе одного образа машины можно создать множество экземпляров.

Если вы программист, возможно, вам будет удобнее использовать такую аналогию: образ машины представляет собой класс, написанный на одном из языков программирования, а экземпляр EC2 — это экземпляр объекта.

Доступ к EC2

Как и в случае с Amazon S3, основным средством доступа к Amazon EC2 является интерфейс прикладного программирования (API) Web-сервисов. Amazon предоставляет ряд интерактивных инструментов, работающих "поверх" API Web- сервисов, в том числе:

± консоль Web-сервисов Amazon (Amazon Web Services Console), показанную на рис. 2.2 и доступную по адресу http://console.aws.amazon.com;

± плагин для Firefox ElasticFox;

± набор инструментов командной строки Amazon (Amazon Command Line tools). Когда вы приобретете некоторый опыт работы с Web-сервисами Amazon, вы, скорее всего, начнете пользоваться надежными средствами управления инфраструктурой, например, такими как enStratus (http://enstratus.com/) и RightScale (http://www.rightscale.com/). Но в самом начале освоения облачных сервисов Amazon вы, по всей вероятности, будете работать с комбинацией инструментов, предоставляемых Amazon. В примерах, которые приводятся в оставшихся разделах этой главы, основное внимание уделяется инструментам командной строки, которые доступны по следующему адресу: http://developer.amazonwebservices.com/connect/ entry.jspa?externalID=351. После того как вы скачаете инструменты командной строки и освоите их, все остальное будет очень просто. Вне зависимости от того, какие средства вы используете в основном, необходимость в командной строке оспариванию не подлежит.

Рис. 2.2. Консоль Web-сервисов Amazon

Установка экземпляра

Самое простое, что вы можете сделать с помощью EC2 — это запустить экземпляр. В результате этой операции EC2 динамически создает и настраивает сервер, после чего он становится вам доступен.

Экземпляр запускается из AMI, хранящегося в S3. Amazon предоставляет ряд готовых к использованию образов машин, помимо этого, вы можете купить и коммерческие образы. Когда вы достигнете определенного уровня уверенности в работе с EC2, вы сможете создавать и регистрировать ваши собственные образы машин.

ВНИМАНИЕ!

Поскольку ваши образы машин хранятся в Amazon S3, вы не можете запустить новый экземпляр EC2, если недоступен сервис Amazon S3.

Чтобы просмотреть, какие образы машин вам доступны, дайте следующую команду:

ec2-describe-images -o amazon

Опция -o amazon дает указание команде искать все образы машин, предоставляемые Amazon своим клиентам. Когда вы только начинаете работать, самый простой вариант для начала заключается в использовании одного из этих стандартных образов или же стандартного образа от другого поставщика. После того как вы выполните индивидуальную настройку этих образов, вы сможете построить собственные образы и зарегистрировать их. Чтобы просмотреть список зарегистрированных вами образов, дайте следующую команду:

ec2-describe-images

Вывод этой команды может выглядеть примерно следующим образом:

IMAGE ami-225fba4b ec2-public-images/fedora-core4-apache- mysqlv1.07.manifest.xml amazon available public i386 machine

Вторым элементом вывода команды является идентификатор образа (image ID). Это значение потребуется вам, чтобы ссылаться на образ во всех остальных контекстах, вне зависимости от того, чем вы пользуетесь — утилитами командной строки или API Web-сервисов.

Третий элемент вывода команды — это объект S3, который представляет собой файл манифеста образа. Файл манифеста (manifest file) описывает образ машины для EC2. В рассматриваемом примере ec2-public-images — это имя корзины, в которой хранится образ, а fedora-core4-apache-mysql-v1.07.manifest.xml — это объект, представляющий файл манифеста образа.

Четвертый элемент — это владелец образа машины, в данном случае — Amazon. Пятый элемент описывает состояние образа. Шестой элемент указывает, является ли образ публичным и общедоступным, или же частным.

Седьмой элемент, i386, идентифицирует целевую процессорную архитектуру образа. На данный момент Amazon поддерживает две архитектуры: 32-разрядную архитектуру Intel (i386) и 64-разрядную архитектуру Intel (x86_64).

Наконец, последний элемент идентифицирует тип образа: машина, электронный диск (ramdisk) или ядро (kernel). На текущий момент сконцентрируем основное внимание на образах машин.

ВЫБОР AMI

Изначально выбор AMI в EC2 представлял собой очень простую задачу. Но сегодня появилось довольно большое количество образов, как предоставляемых Amazon, так и построенных сторонними поставщиками, поэтому выбор нужного образа, особенно для новичка, стал делом не таким уж простым. Часто сложно сказать, какие из AMI являются достойными внимания, а какие представляют собой откровенный мусор, не говоря уже о том, что некоторые из них содержат вредоносные "трояны" или даже заранее предусмотренные "лазейки" (backdoors). К счастью, Amazon предоставляет каталог, в котором известные образы снабжаются аннотациями и рейтингами. Каталог этот доступен по следующему адресу: http://aws.amazon.com/amis. Обычно лучше всего начать с вашего любимого дистрибутива Linux (хотя на сегодняшний день доступно большое количество других вариаций UNIX и даже Windows). Просмотрите каталог и выберите какого-нибудь уважаемого пользователя, собравшего надежный, качественный дистрибутив в духе минимализма, собранный для предпочитаемой вами архитектуры, и воспользуйтесь этим дистрибутивом в качестве базы. Лично я предпочитаю сборки Ubuntu, созданные Эриком Хэммондом (Eric Hammond).

Каким бы ни был ваш выбор, я рекомендую начать с чего-нибудь максимально простого, а затем по мере необходимости устанавливать только те утилиты и сервисы, которые вам абсолютно необходимы для поддержки вашего Web-приложения. Прежде, чем возиться с инсталляциями, обезопасьте ваш сервер с помощью какого-нибудь средства защиты наподобие Bastille (http://www.bastille-unix.org), а затем, закончив с инсталляциями приложений, вернитесь еще раз к настройкам безопасности. Более подробно о защите ваших экземпляров в облаке Amazon будет рассказано в главе 5.

После того как вы выберете подходящий образ машины, его нужно будет использовать для запуска экземпляра виртуального сервера. Это делается с помощью следующей команды:

ec2-run-instances AMI_ID

Например:

$ ec2-run-instances ami-1fd73376

В результате выполнения этой команды вы получите либо сообщение об ошибке, либо информацию о резервации ресурсов (reservation) для вашего нового экземпляра:

RESERVATION r-3d01de54 1234567890123 default

INSTANCE i-b1a21bd8 ami-1fd73376 pending 0

m1.small 2008-10-22T16:10:38+0000 us-east-1a aki-a72cf9ce ari-a52cf9cc

Различие между резервацией (reservation)  и экземпляром (instance) не столь очевидно, как в этом простейшем примере, где я демонстрирую запуск единственного нового экземпляра. Когда вы попытаетесь запускать экземпляры, вы можете указать минимальное и максимальное количество экземпляров для запуска (иначе говоря, вы можете запустить не один, а множество экземпляров). Вывод команды сообщит вам информацию о резервации. В выводе команды будет указано, какое количество экземпляров может быть запущено с помощью этого запроса.

Например, вы можете запускать новые серверы приложений, чтобы распределить нагрузку на Web-сайт в часы максимальных пиковых нагрузок. Если вы хотите запустить 10 экземпляров, чтобы поддержать возросшие требования к ресурсам, вы можете столкнуться с ситуацией, когда ресурсы для всех 10 экземпляров не будут доступны одновременно в пределах одной и той же зоны доступности. Если вы запросили 10 экземпляров, но ресурсы для всех 10 виртуальных серверов выделить невозможно, команда завершится неудачей. Однако вы можете запросить ресурсы для 5 виртуальных серверов, указав в качестве максимального количества экземпляров число 10. Эта команда будет успешно выполняться до тех пор, пока доступны ресурсы как минимум для 5 экземпляров. Таким образом, резервация отображает успешно запущенные экземпляры.

К числу важных сведений об экземпляре, на которые следует обращать внимание, относятся:

± i-b1a21bd8 — идентификатор экземпляра (instance ID). Другие команды и API Web-сервисов используют этот идентификатор для ссылок на данный экземпляр;

± ami-1fd73376 — идентификатор образа машины того AMI, который использовался для запуска экземпляра;

± pending — текущий статус экземпляра. Статус экземпляра, кроме значения pending (ожидает) может иметь следующие значения: running (работает), shutting down (останавливается) и terminated (завершен);

± m1.small — тип экземпляра EC2, который вы запустили. Типы экземпляра указывают объем RAM, дискового пространства и ресурсы CPU, которые выделены вашему экземпляру. Тип m1.small соответствует самому простому экземпляру, потребляющему минимум ресурсов;

± us-east-1a — зона доступности, в которой запущен экземпляр. Поскольку в командной строке зона доступности указана не была, сервис EC2 по умолчанию выбирает наилучшую зону доступности для запуска вашего экземпляра, осуществляя выбор на основании текущей загрузки. Чуть далее в этой главе я более подробно остановлюсь на зонах доступности.

На данном этапе вам следует немного подождать. Время ожидания того момента, когда ваш экземпляр станет доступным, может составить до 10 минут. В течение этого промежутка ожидания Amazon выделяет вашему экземпляру ресурсы и загружает его. Проверить статус экземпляра можно с помощью команды ec2- describe-instances:

ec2-describe-instances [INSTANCE_ID]

Вот пример вывода этой команды:

$ ec2-describe-instances i-b1a21bd8 RESERVATION r-3d01de54 1234567890123 default

INSTANCE i-b1a21bd8 ami-1fd73376 ec2-75-101-201-11.compute-1.amazonaws.com domU-12-31-38-00-9D-44.compute-1.internal running 0

m1.small 2008-08-11T14:39:09+0000 us-east-1c aki-a72cf9ce ari-a52cf9cc

Приведенный пример вывода показывает, что ваш экземпляр уже запустился и теперь имеет статус running. Иначе говоря, теперь он доступен, но остается одна небольшая проблема: у вас нет учетной пользовательской записи на новой виртуальной машине.

Прежде чем я расскажу вам о том, как получить на запущенной машине учетную запись с доступом к оболочке (shell account)1, давайте посмотрим, какую еще информацию вы можете получить о работающем экземпляре.

Вывод команды ec2-describe-instances практически идентичен выводу команды ec2-run-instances, с тем исключением, что ec2-describe-instances предоставляет вам публичный IP-адрес и частный IP-адрес экземпляра, потому что

1 Shell account — в UNIX и Linux это учетная запись пользователя с возможностью работать через оболочку (shell). Чтобы избежать излишнего многословия, здесь и далее предлагается использовать термин shell-аккаунт или даже просто "шелл". Хотя некоторые ревнители чистоты русского языка и морщат нос, услышав этот "жаргон", но данный термин отлично прижился. Все, кто работает с UNIX и Linux, отлично знают, что это такое, и сам термин намного лаконичнее, чем "учетная запись с возможностью работы через оболочку". — Прим. перев.

теперь экземпляр находится в работающем состоянии (running). Когда экземпляр запускается, Amazon динамически присваивает ему один публичный и один частный IP-адрес. Для доступа к экземпляру из точки, находящейся вне облака, следует использовать публичный IP-адрес, а частный IP-адрес используется для доступа к экземпляру изнутри облака.

Источник: Риз Дж., Облачные вычисления: Пер. с англ. — СПб.: БХВ-Петербург, 2011. — 288 с.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете промотать до конца и оставить ответ. Pinging в настоящее время не допускается.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100