Ec2 Rootconf2009

429 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
429
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Ec2 Rootconf2009

  1. 1. Тупицын Дмитрий [email_address] Amazon Elastic Computing Clouds в действии
  2. 2. Ⅰ Что такое и зачем нужен EC2? Ⅱ Первые шаги Ⅲ Масштабируемый веб-сервер Ⅳ Создание о бразов Ⅴ Проблемы адресации Ⅵ Безопасность Ⅶ Вопросы Структура
  3. 3. Что такое и зачем нужен EC2? Часть Ⅰ
  4. 4. <ul><li>Сервера по требованию </li></ul><ul><ul><li>Аренда через программные API или веб-браузер </li></ul></ul><ul><ul><li>1-3 минуты и сервер готов </li></ul></ul><ul><li>Предустановленные ОС </li></ul><ul><ul><li>Linux, OpenSolaris, Windows </li></ul></ul><ul><ul><li>Возможность кастомизации </li></ul></ul><ul><li>Оплата после использования </li></ul><ul><ul><li>Метафора “pay by the drink” </li></ul></ul>Что такое EC2?
  5. 5. <ul><li>Т ипы серверов: (На другой слайд???)‏ </li></ul><ul><ul><li>Small — 1.7 Gb, 1 виртуальное ядро, 160 Gb HDD </li></ul></ul><ul><ul><li>Large — 7.5 Gb, 2 виртуальных ядра, 160 Gb HDD </li></ul></ul><ul><ul><li>Extra — 15 Gb, 4 виртуальных ядра, 160 Gb HDD </li></ul></ul><ul><ul><li>??????? </li></ul></ul>Типы серверов ????
  6. 6. <ul><li>П ериодические задачи </li></ul><ul><ul><li>Подсчет “сложной” статистики по БД, компиляция большого проекта </li></ul></ul><ul><li>Срочно нужен сервер </li></ul><ul><li>Масштабируемые приложения </li></ul><ul><ul><li>Непредсказуемая загрузка: запуск нового сервиса, наплыв пользователей во время PR-акций </li></ul></ul><ul><ul><li>Сезонные или суточные изменения </li></ul></ul>Зачем нужен EC2?
  7. 7. Первые шаги Часть Ⅱ
  8. 8. <ul><li>http://aws.amazon.com </li></ul><ul><li>Потребуется </li></ul><ul><ul><li>Email </li></ul></ul><ul><ul><li>Кредитная карта </li></ul></ul><ul><li>Получим </li></ul><ul><ul><li>Access Key (строка)‏ </li></ul></ul><ul><ul><li>Secret Access Key (строка)‏ </li></ul></ul><ul><ul><li>Account Number (или User ID – тоже строка)‏ </li></ul></ul><ul><ul><li>Certificate X.509 (файл в 1 Кб)‏ </li></ul></ul><ul><ul><li>Privat Key (файл в 1 Кб)‏ </li></ul></ul>Регистрация
  9. 9. <ul><li>Будем использовать unix подобную систему </li></ul><ul><li>В windows все аналогично </li></ul><ul><li>КАРИНКА: Пользователь под linux лезет в облако AWS!!!!!! </li></ul>Пользовательская ОС
  10. 10. <ul><li>Загружаем ec2-api-tools </li></ul><ul><ul><li>http://s3.amazonaws.com/ec2-downloads/ec2-api-tools.zip </li></ul></ul><ul><li>Распаковываем </li></ul><ul><ul><li>В д иректорию ~/.ec2/ec2-api-tools </li></ul></ul><ul><li>Копируем сертификат и ключ </li></ul><ul><ul><li>Сертификат в ~/.ec2/cert-ec2.pem </li></ul></ul><ul><ul><li>Ключ в ~/.ec2/pk-ec2.pem </li></ul></ul>Установка ec2-api-tools
  11. 11. Настройка окружения 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 # не обязательно <ul><li>Настройка java (JAVA_HOME и т.п.)‏ </li></ul><ul><li>Устанавливаем </li></ul>
  12. 12. КАРТИНКА!! Выбор образа $ ec2-describe-images -a # все доступные образы $ ec2-describe-images -a | grep debian-5 | grep i386 IMAGE ami-67fe190e alestic/ debian-5 .0-lenny-base-20090215.manifest.xml 063491364108 available public i386 machine aki-a71cf9ceari-a51cf9cc
  13. 13. ???? Описание атрибутов и прав Образ в разрезе
  14. 14. КАРТИНКА про админа с ключем!!!! Генерация SSH ключа $ ec2-add-keypair keypair > ~/.ec2/keypair # убрать первую строку из ~/.ec2/keypair $ chmod 700 ~/.ec2/keypair
  15. 15. КАРТИНКА: образ(пробирка) + ключь = запущеный сервер НО! ключь (какой) приходит из AWS Запуск образа $ ec2-run-instances ami-67fe190e -k keypair $ ec2-describe-instances #посмотреть что запущенно
  16. 16. Комманды запуска образа $ ec2-run-instances ami-67fe190e -k keypair $ ec2-describe-instances # ж дем 1-3 минуты до появления статуса running # видим dns имя и ip $ ec2-describe-instances INSTANCE i-55274a3c ami-67fe190e ec2-174-129-118-242.compute-1.amazonaws.com ip-10-250-6-8.ec2.internal running keypair 0 m1.small 2009-04-08T14:52:23+0000 us-east-1b aki-a71cf9ce ari-a51cf9cc
  17. 17. Сервер запущен! КАРТИНКА С ВОСТОРЖЕННЫМ АДМИНОМ!! $ ssh -i ~/.ec2/keypair root@ ec2-174-129-118-242.compute-1.amazonaws.com
  18. 18. Что на сервере? $ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 9.9G 506M 8.9G 6% / tmpfs 854M 0 854M 0% /lib/init/rw udev 854M 24K 854M 1% /dev tmpfs 854M 0 854M 0% /dev/shm /dev/sda2 147G 188M 140G 1% /mnt В / монтируется образ /mnt – исчезнет после остановки сервера!!!
  19. 19. Масштабируемый веб-сервер Часть Ⅲ
  20. 20. Структура веб-сервера Сколько пользователей? Сколько потребуется front-end серверов?
  21. 21. <ul><li>Условие: быстрое масштабирование </li></ul><ul><ul><li>front-end серверов от 1 до 5 </li></ul></ul><ul><ul><li>Добавление или останов front-end серверов за 5 минут </li></ul></ul><ul><li>Допущение: </li></ul><ul><ul><li>Один back-end сервер </li></ul></ul><ul><ul><li>БД без репликаций </li></ul></ul><ul><ul><li>Один back-end справится с 5-ю front-end серверами </li></ul></ul><ul><ul><li>Можно разрывать сессии на front-end </li></ul></ul>Условия и допущения
  22. 22. Создание образов Часть Ⅳ
  23. 23. Создание front-end образа КАРТИНКА: сервер + apache + python = веб-сервер (с глобусом)‏
  24. 24. Команды создания образа $ apt-get install apache2 libapache2-mod-python python-mysqldb # и т.д. $ ec2-bundle-vol -d /mnt/ -k pk-ec2.pem -c cert-ec2.pem -u &quot;$EC2_USER&quot; -r i386 -p front-end $ ec2-upload-bundle -b mybucket -m /mnt/front-end.manifest.xml -a &quot;$EC2_ACCESS_KEY&quot; -s &quot;$EC2_SECRET_KEY&quot; Выполняем на ec2 сервере:
  25. 25. Регистрируем front-end образ $ ec2-register mybucket/front-end.manifest.xml IMAGE ami-5a779e1f $ export FRONT_END_AIM=ami-5a779e1f КАРТИНКА: сохранение глобуса в S3 и получение образа (AMI)‏
  26. 26. Создание back-end образа КАРТИНКА: сервер + mysql = сервер БД (с дисками)‏ $ # команды аналогично front-end
  27. 27. Проблемы адресации Часть Ⅴ
  28. 28. Внешние и внутренние ip
  29. 29. <ul><li>Трафик по внешнему ip платный Даже между инстанциям в облаке!! </li></ul><ul><ul><li>0.01$ / Gb </li></ul></ul>Внешние и внутренние ip $ ec2-describe-instances INSTANCE i-55274a3c ami-67fe190e ec2-174-129-118-242.compute-1.amazonaws.com ip-10-250-6-8.ec2.internal running keypair 0 m1.small ......
  30. 30. Аренда внешних IP адресов Изменение дианмических IP на заранее известные Elastic IP Addresses (СДЕЛАТЬ КАРТИНКУ)‏ $ ec2-allocate-address # получить ip ADDRESS 114.129.212.37 $ export EC2_IP=114.129.212.37 $ ec2-associate-address -i i-cd5c34a4 $EC2_IP #установить ADDRESS 114.129.212.37 i-cd5c34a4
  31. 31. <ul><li>IP адрес БД может измениться </li></ul><ul><ul><li>Сбой сервера или необходимость перегрузки </li></ul></ul><ul><ul><li>Переход на более мощный сервер </li></ul></ul><ul><li>Как веб серверам искать БД? </li></ul><ul><ul><li>Прописывать адрес при формировании образа </li></ul></ul><ul><ul><li>Сохранить адрес back-end-а в известном месте (S3, SimpleDB)‏ </li></ul></ul><ul><ul><li>Зарезервировать постоянный внешний IP (Elastic IP Addresses)‏ </li></ul></ul><ul><ul><li>Свой DNS </li></ul></ul>Проблемы с БД
  32. 32. Текст Что-то-там
  33. 33. Безопасность Часть Ⅵ
  34. 34. КАРТИНКА ПРО СЕРВИС С firewall-ами Безопасность сервиса
  35. 35. КАРТИНКА С ГРУППАМИ (на основе предыдущей)‏ Группы серверов
  36. 36. <ul><li>Права: </li></ul><ul><li>front-end — 80 порт доступен для всех </li></ul><ul><li>back-end — полный доступ с front-end серверов </li></ul>Команды создания групп $ ec2-add-group front-end --description 'web servers' $ ec2-authorize front-end -p 80 $ ec2-add-group back-end --description 'db servers' $ ec2-authorize back-end --source-group front-end -u $EC2_USER
  37. 37. <ul><li>Временный доступ </li></ul><ul><li>С определенного ip </li></ul>Открытие ssh доступа # открываем доступ для 89.12.9.94 $ ec2-authorize front-end -p 22 --source-subnet 89.12.9.94/32 # закрываем $ ec2-revoke front-end -p 22 --source-subnet 89.12.9.94/32
  38. 38. Запуск сервера в группе $ ec2-run-instance $BACK_END_AIM -k keypair -g back-end $ ec2-run-instance $FRONT_END_AIM -k keypair -g front-end вывыыввы
  39. 39. Презент! Часть Ⅵ с половиной
  40. 40. Все вышеперечисленное можно сделать через веб интерфейс http://console.aws.amazon.com/ Автоматизировать — только через программные API AWS Management Console
  41. 41. Вопросы Часть Ⅶ

×