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:

[править] 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:

[править] Public Data Sets

Тома EBS могут создаваться на основе уже существующих томов, наполненных общедоступными данными. Например, такими, как:

  • статистика доступа к серверам Wikipedia;
  • база OpenStreetMap;
  • метеорологические данные за период 1929-2009, полученные с нескольких тысяч станций всего мира;
  • база энциклопедии freebase.

[править] Amazon S3

Amazon S3 (Amazon Simple Storage Service) — служба по организации масштабируемого хранилища данных. Может использоваться как совместно с Amazon EC2, так и без него.

Данные хранятся в виде объектов (objects), которые организованы в букеты или коллекции (bucket). Размер одного объекта может находиться в диапазоне от 1 Байта до 5 ГБайт. Количество объектов в коллекции не ограничено.

  1. Максимальное количество букетов на одного пользователя — 100;
  2. Название букета должно быть уникальным в пределах всего S3;
  3. Букеты не могут быть вложенными;
  4. В имени букета могут присутствовать только базовые алфавитно-цифровые символы, точка и дефис. Использование пробелов и прочих символов запрещено.

Объекты, хранящиеся в 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 EC2 tools

Дополнительная информация:

[править] Поддержка операционных систем

[править] Linux

[править] Solaris

Solaris на Amazon 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

[править] Дополнительная информация


AMI:

S3:

  • s3fs (англ.) — файловая система, работающая через FUSE, позволяющая монтировать S3 как блочное устройство


Дополнительные инструменты для управления специализированными облаками в EC2:

  • cloudtools (англ.) — инструменты для упрощения развёртывания и администрирования облака J2EE приложений внутри облака EC2
  • Cloudera's Distribution for Hadoop (англ.) — готовое решения для запуска Hadoop в EC2; есть AMI

[править] Примечания

  1. Но не каждая
  2. Это связано с библиотеками Java, которые они используют.Вот здесь подробнее: http://www.rmiproxy.com/doc/FAQ.html
  3. Прокси использовать можно, если между ним и вами и между ним и ими нет дополнительной трансляции адресов:
    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
    
  4. http://aws.amazon.com/about-aws/whats-new/2010/04/29/announcing-asia-pacific-singapore-region/
  5. Более подробно идея описана здесь: http://linuxforlovers.wordpress.com/2009/04/11/sharing-amazon-elastic-block-store-among-multiple-instances/ (англ.)
Источник — «http://xgu.ru/wiki/Amazon_EC2»