Amazon EC2
Материал из Xgu.ru
|
Эта статья находится в процессе написания. |
Amazon Elastic Compute Cloud (Amazon EC2) — это web-сервис, предоставляющий изменяемую вычислительную ёмкость в облаке. Он предназначен для облегчения разработчикам организации вычислений web-масштаба.
Содержание |
[править] Начало работы
Для работы нам понадобится:
- платёжная карта, которую принимает Amazon (VISA[1] или Mastercard подойдёт);
- компьютер с белым IP-адресом. Программы Amazon EC2 tools, которые мы будем использовать, могут работать с Amazon только с белого адреса[2][3].
[править] Amazon EC2
$ ec2-run-instances ami-cf36d3a6 -k pstam-keypair RESERVATION r-2472fe4d 217945249311 default INSTANCE i-a26505cb ami-cf36d3a6 pending pstam-keypair 0 m1.small 2009-04-04T14:31:38+0000 us-east-1a $ ec2-authorize default -p 22 GROUP default PERMISSION default ALLOWS tcp 22 22 FROM CIDR 0.0.0.0/0
[править] Внутри узла
$ ssh -i id_rsa-pstam-keypair root@ec2-174-129-97-248.compute-1.amazonaws.com The authenticity of host 'ec2-174-129-97-248.compute-1.amazonaws.com (174.129.97.248)' can't be established. RSA key fingerprint is 6c:23:d8:71:ee:68:33:92:62:7a:6b:fd:b8:90:7f:6c. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'ec2-174-129-97-248.compute-1.amazonaws.com,174.129.97.248' (RSA) to the list of known hosts. Linux domU-12-31-39-02-ED-38 2.6.16-xenU #1 SMP Mon May 28 03:41:49 SAST 2007 i686 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.
Процессор:
root@domU-12-31-39-02-ED-38:~# 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 ht syscall nx mmxext fxsr_opt lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8legacy ts fid vid ttp tm stc bogomips : 5202.24
Память:
# free
total used free shared buffers cached
Mem: 1740944 273812 1467132 0 83256 151412
-/+ buffers/cache: 39144 1701800
Swap: 917496 0 917496
Дисковая подсистема:
# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 4.0G 335M 3.5G 9% / tmpfs 851M 0 851M 0% /lib/init/rw udev 10M 20K 10M 1% /dev tmpfs 851M 4.0K 851M 1% /dev/shm /dev/sda2 147G 188M 140G 1% /mnt
Сеть:
# ifconfig -a
eth0 Link encap:Ethernet HWaddr 12:31:39:02:ed:38
inet addr:10.248.242.198 Bcast:10.248.243.255 Mask:255.255.254.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:118 errors:0 dropped:0 overruns:0 frame:0
TX packets:75 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:13088 (12.7 KiB) TX bytes:12194 (11.9 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Данные экземпляров виртуальных машин живут до выключения машины. Как только машина выключается (перезагрузка не в счёт), её данные удаляются.
[править] Регионы и зоны EC2
Всего, на настоящий момент, существует три региона EC2 и готовится четвёртый:
- Запад США (us-west-1a);
- Восток США (us-east-1a);
- Западная Европа, физическое размещение в Ирландии (eu-west-1a).
- Азия, физическое размещение в Сингапуре[4]:
$ ec2-describe-regions REGION eu-west-1 ec2.eu-west-1.amazonaws.com REGION us-east-1 ec2.us-east-1.amazonaws.com REGION us-west-1 ec2.us-west-1.amazonaws.com
Зоны незначительно отличаются по цене (Европа дороже) и значительно по времени распространения сигнала.
Например, при обращении из Киева западноевропейский регион отвечает намного быстрее:
%$ sudo hping3 -p 80 -S eu-west-1.ec2.amazonaws.com HPING eu-west-1.ec2.amazonaws.com (venet0:0 87.238.86.31): S set, 40 headers + 0 data bytes len=44 ip=87.238.86.31 ttl=236 DF id=33990 sport=80 flags=SA seq=0 win=8190 rtt=61.5 ms len=44 ip=87.238.86.31 ttl=236 DF id=48758 sport=80 flags=SA seq=1 win=8190 rtt=60.6 ms --- eu-west-1.ec2.amazonaws.com hping statistic --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 60.6/61.0/61.5 ms
Восток США медленнее:
$ sudo hping3 -p 80 -S us-east-1.ec2.amazonaws.com HPING us-east-1.ec2.amazonaws.com (venet0:0 207.171.168.16): S set, 40 headers + 0 data bytes len=44 ip=207.171.168.16 ttl=245 DF id=40851 sport=80 flags=SA seq=0 win=8190 rtt=125.4 ms len=44 ip=207.171.168.16 ttl=245 DF id=25062 sport=80 flags=SA seq=1 win=8190 rtt=125.8 ms len=44 ip=207.171.168.16 ttl=245 DF id=44850 sport=80 flags=SA seq=2 win=8190 rtt=129.6 ms --- us-east-1.ec2.amazonaws.com hping statistic --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 125.4/126.9/129.6 ms
И запад ещё медленнее:
%$ sudo hping3 -p 80 -S us-west-1.ec2.amazonaws.com HPING us-west-1.ec2.amazonaws.com (venet0:0 204.246.160.140): S set, 40 headers + 0 data bytes len=44 ip=204.246.160.140 ttl=238 DF id=44613 sport=80 flags=SA seq=0 win=8190 rtt=216.6 ms len=44 ip=204.246.160.140 ttl=238 DF id=18519 sport=80 flags=SA seq=1 win=8190 rtt=229.6 ms --- us-west-1.ec2.amazonaws.com hping statistic --- 3 packets transmitted, 2 packets received, 34% packet loss round-trip min/avg/max = 216.6/223.1/229.6 ms
Просмотр зон в пределах региона:
$ ec2-describe-availability-zones -U https://ec2.eu-west-1.amazonaws.com AVAILABILITYZONE eu-west-1a available eu-west-1 AVAILABILITYZONE eu-west-1b available eu-west-1
SSH-ключи для Европы и США разные. Нужно их создавать заново.
Подробнее о зонах EC2:
- http://www.ducea.com/2008/12/11/amazon-ec2-european-cloud/ (англ.)
- http://www.cloudclimate.com/ec2-eu (англ.) — мониторинг европейского региона
[править] IP-адреса
[править] Amazon EBS
Данные на диске виртуальной машины уничтожаются, после того как она останавливается. Поэтому чтобы данные могли пережить останов и запуск системы, нужно использовать внешние хранилища.
Elastic Block Storage (EBS) — виртуальное блочное устройство, которое можно присоединять к экземпляру виртуальной машины. Изнутри виртуальной машины EBS видится как обычное блочное устройство, грубо говоря, как обычный жёсткий диск.
EBS доступно только в пределах той зоны, в которой работает виртуальная машина. Данные блочного устройства не реплицируются и никаки другим образом не распределяются между зонами. Для хранения долговременных бэкапов Amazon рекомендует использовать S3, которое в отличие от EBS реплицируется.
Физически тома EBS находятся на NAS, который физически подключен к узлу виртуализации с помощью того же сетевого соединения, что и внешняя сеть. Это означает, что сетевой трафик виртуальной машины и дисковый трафик на EBS фактически делят одно сетевое соединение между собой.
Размер тома может находиться в диапазоне от 1GB до 1TB.
Аренда тома оплачивается помесячно исходя из расчёта: $0.10 за 1GB.
|
За тома берутся отдельные деньги! |
Операции (и программы) для работы с томами EBS:
- CreateVolume (ec2-create-volume) — создать новый том EBS;
- DeleteVolume (ec2-delete-volume) — удалить том (снимки остаются);
- DescribeVolumes (ec2-describe-volumes) — перечислить тома с дополнительной информацией о них (size, source snapshot, Availability Zone, creation time, status (available, in-use)).
- AttachVolume (ec2-attach-volume) — присоединить том (том в отдельный момент времени можно подключить только к одной машине);
- DetachVolume (ec2-detach-volume) — отсоединить том;
- CreateSnapshot (ec2-create-snapshot) — создать снимок (snapshot);
- DeleteSnapshot (ec2-delete-snapshot) — удалить снимок;
- DescribeSnapshots (ec2-describe-snapshots) — вывести список снимков с дополнительной информацией о них (source volume, snapshot initiation time, progress (percentage complete), status (pending, completed)).
- ModifySnapshotAttribute (ec2-modify-snapshot-attribute) — изменить права доступа к снимку;
- DescribeSnapshotAttribute (ec2-describe-snapshot-attribute) —показать права доступа к снимку.
Создание нового тома:
%$ ec2addvol -z us-east-1a -s 25 VOLUME vol-ebef0f82 25 us-east-1a creating 2009-04-04T15:22:01+0000 %$ ec2-describe-volumes VOLUME vol-ebef0f82 25 us-east-1a available 2009-04-04T15:22:01+0000
Подключение тома:
%$ ec2-attach-volume -d /dev/sdb -i i-a26505cb vol-ebef0f82
Просмотр подключений:
$ ec2-describe-volumes VOLUME vol-ebef0f82 25 us-east-1a in-use 2009-04-04T15:22:01+0000 ATTACHMENT vol-ebef0f82 i-a26505cb /dev/sdb attached 2009-04-04T15:24:38+0000
В гостевой системе:
# cat /proc/partitions major minor #blocks name 8 2 156352512 sda2 8 3 917504 sda3 8 1 4194304 sda1 8 16 26214400 sdb
%# echo ';' | sfdisk /dev/sdb %# mkfs.ext3 /dev/sdb1 %# mkdir /mnt2 %# mount /dev/sdb1 /mnt2 %# df -h /mnt2
%# df -h /mnt2 Filesystem Size Used Avail Use% Mounted on /dev/sdb1 25G 173M 24G 1% /mnt2
Отключить том можно так:
%$ ec2detvol vol-ebef0f82 ATTACHMENT vol-ebef0f82 i-a26505cb /dev/sdb detaching 2009-04-04T15:24:38+0000
И удалить том, если он больше не нужен (данные, разумеется, будут удалены!):
%$ ec2-delete-volume vol-ebef0f82
Блочное устройство может быть подключено только к одному домену одновременно. Даже в режиме "только для чтения" это сделать нельзя. Доступ из нескольких узлов к одному устройству в режиме readonly можно получить, если создать на его основе снимки (snapshots)[5].
Подробнее о EBS:
- http://aws.amazon.com/ebs/ (англ.)
- Using EBS (англ.) — технические подробности
[править] Public Data Sets
Тома EBS могут создаваться на основе уже существующих томов, наполненных общедоступными данными. Например, такими, как:
- статистика доступа к серверам Wikipedia;
- база OpenStreetMap;
- метеорологические данные за период 1929-2009, полученные с нескольких тысяч станций всего мира;
- база энциклопедии freebase.
[править] Amazon S3
Amazon S3 (Amazon Simple Storage Service) — служба по организации масштабируемого хранилища данных. Может использоваться как совместно с Amazon EC2, так и без него.
Данные хранятся в виде объектов (objects), которые организованы в букеты или коллекции (bucket). Размер одного объекта может находиться в диапазоне от 1 Байта до 5 ГБайт. Количество объектов в коллекции не ограничено.
- Максимальное количество букетов на одного пользователя — 100;
- Название букета должно быть уникальным в пределах всего S3;
- Букеты не могут быть вложенными;
- В имени букета могут присутствовать только базовые алфавитно-цифровые символы, точка и дефис. Использование пробелов и прочих символов запрещено.
Объекты, хранящиеся в Amazon S3, можно сделать общедоступными, а можно закрытыми и регулировать доступ к ним с помощью списков доступа. Общедоступные данные видны из сети по адресу: http://s3.amazonaws.com/bucket-name/object-name (возможно использование других URL).
Данные автоматически реплицируются по нескольким серверам, но не переходят границу региона. Это означает, что если вы создали объект в Европе, он не будет доступен в Северной Америке (естественно, речь идёт о доступности внутри службы Amazon).
Возможностей по работе с объектами S3 намного меньше чем при работе с обыкновенными файлами на диске:
- нельзя переименовать или переместить объект;
- для того чтобы изменить даже один байт внутри объекта, его нужно выгрузить, изменить, а потом загрузить назад на S3;
- нельзя возобновить прерванную загрузку файла на S3.
Некоторые особенности использования S3:
- IP-адреса S3-серверов периодически могут меняться, поэтому нужно не забывать использовать DNS-преобразование имён при доступе к ним; кэширование результатов преобразования не нужно делать на большой срок, рекомендуемое время кэширования — 5 минут;
- Изредка некоторые запросы к S3 могут не обрабатываться, вместо этого будет возвращаться ошибка "Internal Server Error"; это нормально, нужно быть готовым к этому, и в случае такой ошибки повторить запрос.
Работа с S3 выполняется через API, для использования которого разработаны библиотеки под все наиболее популярные языки программирования, в том числе Perl, Python, Java и другие. Есть сторонний набор программ s3tools, который позволяет использовать S3 прямо из командной строки. Программа s3cmd обеспечивает интерфейс командной строки к хранилищу, а программа s3fuse даёт возможность подмонтировать с помощью FUSE хранилище S3 локально.
Пример использования s3cmd:
~$ s3cmd ls s3://logix.cz-test
Bucket 'logix.cz-test':
2008-01-19 01:46 120k s3://logix.cz-test/addrbook.xml
2008-11-14 01:46 32k s3://logix.cz-test/storage.jpg
~$ s3cmd get s3://logix.cz-test/addrbook.xml addressbook-2.xml
Object s3://logix.cz-test/addrbook.xml saved as 'addressbook-2.xml' (123456 bytes)
~$ md5sum addressbook.xml addressbook-2.xml
39bcb6992e461b269b95b3bda303addf addressbook.xml
39bcb6992e461b269b95b3bda303addf addressbook-2.xml
~$ s3cmd rb s3://logix.cz-test
ERROR: S3 error: 409 (Conflict): BucketNotEmpty
~$ s3cmd del s3://logix.cz-test/addrbook.xml s3://logix.cz-test/storage.jpg
Object s3://logix.cz-test/addrbook.xml deleted
Object s3://logix.cz-test/storage.jpg deleted
~$ s3cmd rb s3://logix.cz-test
Bucket 'logix.cz-test' removed
Цена по работе с S3 складывается из нескольких составляющих: оцениваются все операции, которые выполняются с объектами, и отдельно оценивается трафик.
Сейчас цены такие (подробнее смотрите на сайте Amazon [1]):
- хранение: $0.150/GB;
- трафик, закачка на S3: пока беслпатно;
- трафик, скачка с S3: $0.15/GB;
- операции, все кроме скачки: $0.01 за 1000 операций;
- операции, скачка: $0.01 за 10000 операций.
Итоговая сумма складывается из стоимости всех оказанных услуг.
Дополнительная информация:
- Amazon Simple Storage Service (англ.) — документация по Amazon S3
- s3tools.org (англ.) — пакет программ s3tools
[править] Amazon EC2 tools
Дополнительная информация:
- API Command Line Tools Reference (англ.)
[править] Поддержка операционных систем
[править] Linux
[править] Solaris
Solaris на Amazon EC2 поддерживается.
Подробнее:
- http://www.sun.com/third-party/global/amazon/faq/index.jsp
- http://blogs.sun.com/ec2/ — Блог Sun посвящённый запуску OpenSolaris на EC2; содержит много полезной информации
[править] FreeBSD
FreeBSD на Amazon EC2 пока не поддерживается.
Date: Wed, 28 Apr 2010 22:05:32 -0700
From: Colin Percival <cperciva@freebsd.org>
First, an update on the state of FreeBSD/EC2: Amazon is cooperative, but seems
unlikely that it will be possible to run FreeBSD in EC2 until some deficiencies
in FreeBSD's Xen code have been fixed. FreeBSD's 32-bit Xen code is missing
some important bits; FreeBSD's 64-bit Xen code doesn't exist at all. These two
issues are more or less independent. Once the FreeBSD kernel's Xen code works
on EC2, I believe I can take care of the userland bits and produce an AMI quite
quickly.
I believe that the best person to write this kernel code is Kip Macy; but he
can't afford to work on this without getting paid, so I'm trying to find people
who can contribute -- or to put it another way, "figure out what being able to
run FreeBSD in EC2 is worth to the community".
If you're still interested in running FreeBSD in EC2, please reply with the
following information:
1. How many instances, of which types, would you expect to use?
2. Which is more important to you, 32-bit support (small and medium instances)
or 64-bit support (large, XL, 2XL, and 4XL instances)?
3. What sort of applications would you be running on EC2? (general-purpose
servers, video encoding, databases, bandwidth-heavy serving, etc.)
4. Can you provide any funding for development? (if yes, how much?)
I'd like to hear from you even if you can't provide any funding, but obviously
"yes" is better than "no" for that last question. If you're at a company which
might be able to contribute but you need to talk to your CEO, please reply with
a "maybe" and let me know when that turns into a dollar (or zero-dollar) value.
[править] Windows
[править] Дополнительная информация
- Amazon Elastic Compute Cloud
- Ec2 Resource Center на сайте Amazon
- Technical Documentation for EC2 on сайте Amazon
- Amazon EC2 API Tools (англ.) — утилиты для управления виртуальными машинами EC2
- Using Amazon S3 from Amazon EC2 with Ruby (англ.)
- Feature Guide: Amazon EC2 Availability Zones (англ.)
- Данные в Amazon EC2 - заметка в LiveJournal
- Amazon Elastic Compute Cloud (EC2) в блоге одного из разработчиков
- The fast track to Amazon EC2
- Web Clustering with Amazon EC2
- Amazon encourages EC2 image sharing
- INFOWORLD: Amazon Tries Hand at Virtual Appliances
- How To: Getting Started with Amazon EC2 (англ.) — простой и доходчивый документ, рассказывающий о том, как начать играться с EC2
- Starting cluster of Erlang nodes on EC2 (англ.) — Erlang-узлы на EC2
- Sharing EBS Volumes Among Instances (англ.) — как поднять внешнее блочное устройство для виртуальной машины
- Oracle in the Cloud (англ.) — запуск Oracle на EC2
- Exploring Amazon EC2
- Cloud versus cloud: A guided tour of Amazon, Google, AppNexus, and GoGrid (англ.) — сравнение нескольких облаков вычислений
AMI:
- How to create an Amazon Elastic Compute Cloud EC2 Machine Image (AMI) (англ.) — о том как заточить свой собственный AMI; простая и подробная дока
- [2] Неплохой AMI на Ubuntu с NX
- [3] Неплохой AMI на Ubuntu, голый, без X
S3:
- s3fs (англ.) — файловая система, работающая через FUSE, позволяющая монтировать S3 как блочное устройство
Дополнительные инструменты для управления специализированными облаками в EC2:
- cloudtools (англ.) — инструменты для упрощения развёртывания и администрирования облака J2EE приложений внутри облака EC2
- Cloudera's Distribution for Hadoop (англ.) — готовое решения для запуска Hadoop в EC2; есть AMI
[править] Примечания
- ↑ Но не каждая
- ↑ Это связано с библиотеками Java, которые они используют.Вот здесь подробнее: http://www.rmiproxy.com/doc/FAQ.html
- ↑
Прокси использовать можно, если между ним и вами и между ним и ими нет
дополнительной трансляции адресов:
EC2_JVM_ARGS=-Dhttp.proxySet=true -Dhttp.proxyHost=gatekeeper-w.mitre.org -Dhttp.proxyPort=80 -Dhttps.proxySet=true -Dhttps.proxyHost=gatekeeper-w.mitre.org -Dhttps.proxyPort=80
Какой сервер использовать для обращения:
EC2_URL=https://exec.amazon.com
- ↑ http://aws.amazon.com/about-aws/whats-new/2010/04/29/announcing-asia-pacific-singapore-region/
- ↑ Более подробно идея описана здесь: http://linuxforlovers.wordpress.com/2009/04/11/sharing-amazon-elastic-block-store-among-multiple-instances/ (англ.)
