Дмитрий Петров Amazon Elastic Computing Clouds для стартапов
Теоретическая, или зачем стартапам облака? Часть
EC2 - это сервис аренды серверов с почасовой оплатой Что такое Elastic Computing Cloud?
Арендовать сервера по требованию 1-3 минуты и сервер запущен можно запустить десятки-сотни серверов одновременно Выбирать тип сервера ОС: Linux, Windows, Solaris CPU, объем памяти и диска Платить после использования, а не до метафора pay by the drink Что позволяет EC2?
Необходимы сервера для экспериментов Недостаточно средств для аренды серверов Загрузку сложно спрогнозировать Сервера простаивают Проблемы Интернет-стартапов
Задача - временный запуск прототипа Цель: разработка, тестирование или демонстрация сервиса Арендовать сервер на месяц(ы) – дорого Решение: В EC2 почасовая оплата. Провели эксперимент – выключаем сервер Проблема: необходимы сервера для экспериментов
В EC2 оплата ПОСЛЕ использования в конце месяца деньги можно успеть заработать/выиграть/… Формально: EC2 позволяет превратить капитальные затраты в операционные Проблема: недостаточно средств для аренды серверов
Вопрос: хватит 3-х серверов? 5-и? 7-и? Переплачивать не хочется … Решение: запускаем минимальное количество серверов на EC2 и добавляем при необходимости Проблема: загрузку сложно спрогнозировать
Остановка «лишних» серверов «на ночь» Добавление серверов в часы пик Сезонные изменения Периодические задачи Проблема: сервера простаивают
EC2 позволяет экономить за счет гибкости Проблема: пользоваться этой гибкостью непросто Вывод
Гибкость EC2 и «облаков» в целом позволяет создавать сервисы с новыми бизнес-моделями Презент для стартапов!
стоимость аренды снижается ранее не рентабельные проекты/идеи становятся рентабельными легкодоступность ресурсов можно арендовать сотни серверов, имея только кредитную карту и ноутбук небольшой стартап может решать ресурсоемкие задачи без суперкомпьютеров (увы, не все задачи) … На чем строить новые бизнес-модели?
Практическая, или как пользоваться EC2? Часть
Программные API или веб-консоль? AWS Management Console: Программные API: командная строка, java, python, perl, C# и т.д. Интерфейсы к EC2
Потребуется Почтовый ящик Кредитная карта Получим Access Key (строка) Secret Access Key (строка) Account Number (или User ID – тоже строка) Certificate X.509 (файл в 1 Кб) Private Key (файл в 1 Кб) Регистрация
Загружаем ec2-api-tools Распаковываем в директорию ~/.ec2/ec2-api-tools Копируем сертификат и ключ сертификат в ~/.ec2/cert-ec2.pem ключ в ~/.ec2/pk-ec2.pem Установка ec2-api-tools
Настройка окружения export EC2_HOME=~/.ec2/ec2-api-tools export EC2_PRIVATE_KEY=~/.ec2/pk-ec2.pem export EC2_CERT=~/.ec2/cert-ec2.pem export EC2_ACCESS_KEY=XXXXXXXXXXXXXXX export EC2_SECRET_KEY=XXXXXXXXXXXXXXXXXXXXXXXXX export PATH=$PATH:~/.ec2/ec2-api-tools/bin export USER_ID=XXXXXXX # не обязательно Настройка java (JAVA_HOME и т.п.) Переменные окружения
Типы серверов/инстанций Типы: Small, Large, Extra-Large Различия: CPU: Extra-Large в 8 раз «мощнее» Small Память: от 1.7 Гб до 15 Гб Диск: от 160 Гб до 1.6 Тб Сеть: у Small серверов ограничен в/в Стоимость: от 0.1 до 0.8 $/час
Выбор образа $ ec2-describe-images -a | grep debian-5 | grep i386 IMAGEami-67fe190ealestic/debian-5.0-lenny-base manifest.xml availablepublici386machineaki- a71cf9ceari-a51cf9cc
Генерация SSH ключа $ ec2-add-keypair keypair > ~/.ec2/keypair # убрать первую строку из ~/.ec2/keypair $ chmod 700 ~/.ec2/keypair
Запуск образа $ ec2-run-instances ami-67fe190e -k keypair $ ec2-describe-instances #посмотреть что запущенно
Комманды запуска образа $ ec2-run-instances ami-67fe190e -k keypair $ ec2-describe-instances # ждем 1-3 минуты до появления статуса running # видим dns имя и ip $ ec2-describe-instances INSTANCEi-55274a3cami-67fe190e ec compute- 1.amazonaws.com ip ec2.internal running keypair 0 m1.small T14:52: us-east-1b aki-a71cf9ceari-a51cf9cc
Что на сервере? $ df -h FilesystemSizeUsedAvail Use%Mounted on /dev/sda19.9G506M8.9G6%/ tmpfs854M0 854M0%/lib/init/rw udev854M 24K854M1%/dev tmpfs854M0854M0%/dev/shm /dev/sda2147G188M140G1%/mnt В / монтируется образ /mnt – исчезнет после остановки сервера!!!
Трафик по внешнему ip платный Даже между инстанциям в облаке!!! Стоимость: 0.01$ / Gb Два адреса: Внешние и внутренние ip $ ec2-describe-instances INSTANCEi-55274a3cami-67fe190e ec compute- 1.amazonaws.com ip ec2.internal running keypair 0 m1.small......
Цель: изменение динамических IP на заранее известные Фиксация ip адресов Elastic IP Addresses $ ec2-allocate-address # получить ip ADDRESS $ export EC2_IP= $ ec2-associate-address -i i-cd5c34a4 $EC2_IP #установить ADDRESS i-cd5c34a4
Команды создания образа $ apt-get install apache2 libapache2-mod-python python-mysqldb # и т.д. $ ec2-bundle-vol -d /mnt/ -k pk-ec2.pem -c cert-ec2.pem -u "$EC2_USER" -r i386 -p front-end $ ec2-upload-bundle -b mybucket -m /mnt/front-end.manifest.xml -a "$EC2_ACCESS_KEY" -s "$EC2_SECRET_KEY" Выполняем на ec2 сервере:
Регистрация образа $ ec2-register mybucket/front-end.manifest.xml IMAGEami-5a779e1f $ export FRONT_END_AIM=ami-5a779e1f Выполняем на консольном сервере:
Варианты доступа: Для всех Для заданного ip или сети Открываем ssh доступ # открываем доступ для $ ec2-authorize -p 22 --source-subnet /32 # закрываем $ ec2-revoke -p 22 --source-subnet /32
Мы на сервере! $ ssh -i ~/.ec2/keypair
Вопросы? Спасибо!