Вступление
В этом докладе будут рассмотрены сервисы AWS, которые использует наша платформа и с которыми я знаком не по наслышке. Я работаю над проектом, который использует почти все возможные сервисы, а так же мы нацелены в ближайшем будущем охватить ещё больше возможностей, которые предоставляет нам Amazon.
Управление AWS осуществляется как с помощью веб интерфейса (AWS console), так и с помощью Command Line Tools. В консоли собраны все сервисы AWS, но функциональность настройки несколько обрезана. В командной строке же можно более гибко настроить тот или иной сервис, так же доступны закрытые в консоли функции.
Amazon Elastic Compute Cloud (EC2)
Описание
EC2 — это облачный сервис, предоставляющий виртуальные сервера (Amazon EC2 Instance), 2 вида хранилищ данных, а так же балансировщик нагрузки (Load Balancer).
Многие из вас знакомы с VPS — Virtual Private Server. Так вот, EC2 — это не что иное, как сервис, предоставляющий VPS в настоящем облаке, где сервер может легко мигрировать между нодами, а хранилище легко может быть расширено до почти безразмерного. Потому-то в названии и звучит слово Elastic — Эластичный.
Функциональность
EC2 позволяет запускать уже заранее сконфигурированные серверы с предустановленными ОС: Amazon Linux, Red Hat EL, Suse ES, Windows 2008, Oracle EL, Выбор операционных систем выглядит так:
Так же возможно создавать свои образы (AMI — Amazon Machine Image) и использовать любой Linux. Наша платформа использует Debian Squeez как основную систему, но, конечно же мы можем запустить и работать практически на любом дистрибутиве Linux, например CentOS или Ubuntu. Так же мы поддерживаем RHEL и Suse ES.
Есть возможность настроить защиту доступа к серверам. EC2 инстансы объединяются в группы безопасности (Security Groups) с возможностью ограничения доступа по портам с IP или подсетей.
Настройка групп безопасности выглядит следующим образом:
Балансировка нагрузки и автомасштабирование являются очень важными функциями EC2. Вы можете создать правила при которых станет возможно автоматически увеличить количество серверов, например, если один или несколько серверов не справляются с нагрузкой. Контроль за здоровьем серверов ведёт ещё один сервис AWS — Amazon Cloud Watch. С помощью этого сервиса можно создавать разного рода проверки — checks — с помощью которых контролируются важнейшие показатели работы ОС.
Добавление почти бесконечного количества дисков с почти бесконечным объёмом хранения. EBS (Elastic Block Storage) — это один из типов хранилища в EC2. Особенность его такова, что диски, создаваемые по этой технологии не зависимы от VPS-ноды и расположены на специальных Storage серверах, в отличии от Instance хранилищ, которые расположены непосредственно на серверах виртуализации.
Используя EBS, к запущенным серверам можно “наживую” добавлять диски любого размера.
Создание диска:
Управление дисками:
Elastic IP адреса дают возможность быстро менять адрес сервера, например для того, чтоб избежать DNS propagation — времени обновления DNS зоны по всему миру.
Создание мгновенных образов (Snapshot) позволяет создать слепок диска и использовать его в качестве исходника для AMI (Amazon Machine Image), а так же для простой резервной копии ОС.
Типы серверов
Серверы EC2 можно описать следующей таблицей:
* EC2 compute unit — единица измерения производительности процессоров, сопоставимая c производительностью 1.0-1.2 ГГц процессоров Opteron или Xeon.
Биллинг
Оплата EC2 ведётся почасово, некоторые подсервисы, такие как EBS имеют помесячный биллинг. Для каждого подсервиса есть свой отдельный биллинг по заведомо утверждённой цене в час или в месяц.
Так же у EC2 инстансов существует так называемая резервация (Reservation) — оплачивается сразу 3-4 месяца работы сервера, после чего, час работы сервера стоит в ~1,5 раза дешевле. Резервации удобно использовать, если EC2 используется на постоянной основе — экономия на лицо.
Amazon Simple Storage (S3)
Тезисы
- Amazon S3 это сервис для хранения данных в файлах. Указано, что предоставляется безразмерное пространство для хранения файлов размером от 1 байта до 5 Терабайт.
- Файлы хранятся в отдельных бакетах (bucket), в которых можно создавать директории и поддиректории.
- Бакеты хранятся в разных регионах (Region). Доступны следующие регионы: US Standard, US West (Oregon), US West (Northern California), EU (Ireland), Asia Pacific (Singapore), Asia Pacific (Tokyo), South America (Sao Paulo), и GovCloud (US).
- К бакетам можно применять разного рода политики безопасности: делать их приватными, публичными, а так же разделять права между пользователями. Например, можно открыть вебсайт:
bucketname.s3-website-us-east-1.amazonaws.com и хранить там статический контент. - S3 может логгировать запросы и складывать отчёты в отдельный бакет. Это удобно при расследовании, когда много пользователей/приложений имеют доступ к сервису.
- Загрузка, удаление и другие операции доступны по REST или SOAP, так же возможно шифрование канала передачи данных с S3.
- Интересной деталью является то, что можно встроить BitTorrent протокол заменой http, как основного протокола скачивания файлов.
- Предоставляется 99.999999999% гарантия целостности и 99.99% гарантия доступности файлов в год.
- S3 так же предполагает версионность файлов. Всегда можно восстановить файл предыдущей версии, т.е. откатиться до нужного состояния.
- UPD: Неймспейс названий бакетов один на всех пользователей, по этому названия бакетов должны быть уникальными
Интерфейсы
S3 может управляться с помощью вот такой консоли:
Так же есть официальные и неофициальные инструменты командной строки. Существует огромное количество библиотек для всяческих языков программирования для соединения приложений с S3.
Биллинг
S3 оплачивается помесячно за объём хранимых данных, за запросы и за исходящий траффик. Так же существует Free Tier — 5Гб места, 20.000 запросов скачки, 2.000 запросов закачки и 15 гигабайт трафика в месяц бесплатно.
Amazon Relational Database Service (RDS)
Описание
RDS — это сервис баз данных, который выносится на отдельную машину. Проще говоря, это отдельные VPS серверы, оптимизированные для работы с базами данных.
В Amazon RDS доступны следующие Системы Управления Базами Данных:
- MySQL community edition
- Oracle Database Standard Edition One
- Oracle Database Standard Edition
- Oracle Database Enterprise Edition
Выбор выглядит так:
Дисковое пространство RDS инстанса так же заказывается клиентом. Минимальный размер стораджа — 5 Гб.
Существует возможность гибко настроить доступ к серверу БД с помощью групп безопасности. Доступ возможно дать отдельным адресам/подсетям или же группам безопасности EC2 и всем серверам, которые в неё входят. Это полезно, например при автомасштабировании, когда все экземпляры приложения поднимаются в одной группе и имеют доступ к серверу БД.
Так же можно настроить репликацию между серверами баз данных через консоль или утилиты командной строки.
RDS поддерживает мгновенные слепки (Snapshot) и автобекап, давая возможность быстро и качественно восстановить данные.
Если же случаются проблемы с аппаратным обеспечением, RDS автоматически перенесёт ваш хост на здоровую ноду.
При выходе обновлений, СУБД могут быть автоматически пропатчены и перезагружены. Клиенты уведомляются заблаговременно.
Стоит заметить, что root доступа к СУБД нет. Возможности хранения встроенных процедур и тонкие настройки осуществляются через API и утилиты командной строки.
Все RDS инстансы работают на 64 битной платформе.
Типы RDS инстансов
Биллинг
Как и EC2, оплата RDS проводится за каждый час использования рабочего инстанса, его стораджа, отдельная плата берётся за хранение бекапов и снапшотов. Так же считается количество I/O операций.
Так же существуют Резервации (Reservation) — оплата сразу суммы за 3-4 месяца, после чего на год или 3 года почасовая ставка за работу инстанса значительно снижается. В среднем в полтора раза.
Route 53
Описание
Route53 — это облачный DNS сервис от Amazon. Практически самый обычный сервис имён, отличающийся высокой производительностью и ценой. Это на самом деле дешёвый сервис. Имея немаленькие зоны с мелкими TTL? мы лишь не на много выходим за Free Tier — бесплатный лимит использования и платим сущие гроши за ДНС.
Одной из отличительных возможностей Route53 является его интеграция с другими сервисами AWS, такими как EC2 и балансировщиком нагрузки, S3, CloudFront.
Балансировщик нагрузки не имеет статического адреса, но имеет публичое DNS имя. Используя сторонние сервисы, нам бы приходилось использовать CNAME записи, чтоб ссылаться на это имя, но в Route53 имеется специальный тип записей — ALIAS на балансировщик нагрузки. Это позволяет без пропагаций использовать полную функциональность балансировщика.
Так же инетересно, что можно воспользоваться WRR (Weighted Round Robin) записями, которые позволяют делать балансировку нагрузки на уровне DNS.
Управление Route53 осуществляется через консоль или через инструменты командной строки. Так же существуют несколько сторонних сервисов, которые, скажем, более наглядно, чем консоль, показывают состояние зон и дают более удобную настройку. Конда в консоли не было возмоности управлять Route53, сервисы третьих лиц пользовались большой популярностью, я например часто использовал https://interstate53.com для этих целей.
Биллинг
Оплата производится за запросы, которые считаются миллионами штук.
Simple Queue Service (SQS)
Описание
SQS — сервис для построения очередей событий. Требуется такая очередь, например, когда разделены приложения создания имейла и его посылка. Тогда создаётся элемент очереди c телом письма, хедерами и т.п, а приложение отправляющее почту считывает элементы из очереди и рассылает их.
Мы используем очереди SQS для создания и отправки Push сообщений Apple, WP7 и Android. А так же для отправки электронной почты.
Лимитов по количеству очередей и по количеству элементов в очередях Amazon не предоставляет.
Биллинг
В счёт выставляется количество элементов очередей, вышедшее за Free Tier. На данный момент это 100.000. Платится за каждые 10.000 элементов. Так же взимаются средства за трафик, который сгенерировал сервис за месяц.
Simple Email Service (SES)
Описание
SES используется для отправки почты, а точнее рассылок. Высокая репутация IP адресов, высокая производительность серверов, позволяющая слать десятки-сотни тысяч писем в день даёт возможность осуществлять рассылку сообщений от малого до огромного корпоративного размера предприятия.
Особенностью можно считать автоматическое увеличение лимита писем посланных в сутки. С 10 тысяч до миллиона лимит поднимается атоматически в зависимости от ваших нужд посылки. Так же увеличивается лимит количества писем, посланных в секунду. В начале “прокачки” аккаунта этот лимит стоит на 5 штуках в секунду.
Функционал
SES позволяет слать письма через API — непосредственно из приложения. Существуют десятки библиотек, плагинов дающих возможность слать письма обходя SMTP методы. Для тех приложений, которые не могут быть интегрированы с SES через API — существует опция включения SMTP сервера с авторизацией по связке логин-пароль.
Биллинг
Оплачивается в SES за каждые 10.000 посланных писем в месяц. Так же плата взимается за трафик, который генерируется при отправке писем.
Amazon Cloud Watch
Описание
Cloud Watch используется для мониторинга здоровья/состояния преимущественно всех сервисов AWS, включая стандартный мониторинг здоровья серверов, доступность тех или иных портов, сторадж, работу СУБД, место на S3 и очень много всяких других чеков.
В Cloud Watch существует 3 типа состояний — OK, ALARM и UNSUFFICIENT DATA. Названия говорят сами за себя: чек в состоянии ОК, в состоянии ошибки или тревоги, а так же в неизвестном состоянии. На все состояния можно настроить триггеры, которые будут срабатывать во время изменения счётчика в это состояние.
Автомасштабирование, например, построено на показателях счётчиков CloudWatch. По политикам CloudWatch могут сработать триггеры, которые запускают новые копии серверов для увеличения мощности приложения, и так же при снижении нагрузки потушить ненужные серверы.
Выглядит консоль управления Cloud Watch следующим образом.
Консоль предоставляет почти весь функционал настройки Cloud Watch, но всё же через утилиты командной строки настройка может быть проведена гораздо быстрее и точнее, чем через веб интерфейс.
Биллинг
В оплаты сервиса Cloud Watch входят количество чеков, выходящее за Free Tier. Элементарный мониторинг в этом лимите настроить вполне можно.
AWS Identity and Access Management (IAM)
Описание
Сервис IAM позволяет контролировать права доступа ко всем остальным сервисам AWS. Имея штат сотрудников по всем правилам нужно разграничить доступ администраторов, разработчиков, тестирощиков и так далее. В пределах одно аккаунта могут быть создано до 80 учётных записей пользователей, объединённых в группы, к которым в свою очередь применяются политики безопасности.
Каждому IAM пользователю можно присвоить:
- пару ключей
- логин и пароль
- пару сертификатов
С ключами и сертификатами пользователи могут иметь доступ к API и утилитам коомандной строки. С логином и паролем — в консоль, которая доступна лишь членам организации. Адрес на логин экран такой консоли выглядит так: https://company.signin.aws.amazon.com/console. Каждый владелец AWS аккаунта в праве создать свой корпоративный экран входа.
Правила для ограничения доступа для сервисов AWS генерируются в JSON формате, вида:
{ "Sid": "Stmt1327249403354", "Action": [ "ses:*" ], "Effect": "Allow", "Resource": [ "*" ] }
На примере участникам группы полностью открыт сервис SES и позволены все действия, связанные с SES.
IAM так же легко использовать для передачи прав на короткое время третьим лицам, например фрилансерам для настройки сервисов. Ключи, сертификаты и пароли легко быстро отозвать, тем самым прекратив доступ к AWS.
Биллинг
Использование IAM абсолютно бесплатно. Плата взимается только за ресурсы, потребляемые пользователями.
Послесловие
В данной статье сделано краткое и, надеюсь, понятное описание Amazon Web Sevices. К сожалению, такие сервисы как Dynamo DB, Simple DB, Cloud Front и Cloud Formation это описание не затронуло. Это случилось лишь потому, что автор не имеет опыта работы с этими сервисами, но очень надеется что вскоре этот опыт обязательно появится и он сможет проектировать и масштабировать инфраструктуры энтерпрайз размеров опираясь на свой большой опыт.