29
 Amazon Web Services: инструменты обеспечения масштабируемости и отказоустойчивости Дмитрий Тупицын [email protected] HighLoad++ HighLoad++ 2008 2008

Tupitsyn High Load

  • Upload
    ontico

  • View
    1.840

  • Download
    3

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Tupitsyn High Load

   

Amazon Web Services: инструменты обеспечения

масштабируемости иотказоустойчивости

Дмитрий Тупицын[email protected]

HighLoad++HighLoad++20082008

Page 2: Tupitsyn High Load

   

Структура доклада

Преимущества EC2 Проблемы EC2 Дополнительные службы

Simple Storage Service (S3) SimpleDB (SDB) Simple Queue Services (SQS)

Языки и библиотеки

Page 3: Tupitsyn High Load

   

1Часть

Преимущества EC2

Page 4: Tupitsyn High Load

   

Простота

Простой интерфейс к EC2 и другим службам Просто запускать сервера Время запуска/останова инстанции (обычно) меньше 1 минуты

Не нужен системный администратор Нет проблем с сетью и железом

Page 5: Tupitsyn High Load

   

Минимизация затрат

Временное добавление серверов Пиковая нагрузка зачастую в 10 и более раз выше средней но длится 1­3 часа в сутки

Повышенная нагрузки во время PR­акций или сезоных изменений

Сервера для инфраструктурных,периодических задач (бакап, подсчет статиситки)

Временное отключение серверов Часть времени (ночью, выходные) сервера простаивают

Page 6: Tupitsyn High Load

   

Переход к фактическойнагрузке

Обычно:  Параметр ­ пиковая нагрузка Задача – минимизация количества серверов во время пиковой нагрузки

В облаках:  Параметр – фактическая загрузка Задача – минимизация серверов во время всего цикла работы системы

Page 7: Tupitsyn High Load

   

Снижение рисков

Не требуется больших финансовых вливаний в инфраструктуру Особенно важно для нефинансируемых стартапов

Бизнес модель работает? (ДА) Быстро добавляем сервера (НЕТ) Не тратимся на аренду

Page 8: Tupitsyn High Load

   

2Часть

Проблемы EC2

Page 9: Tupitsyn High Load

   

?Что изменилось

Все проблемы с сетью и железом решаются отключением проблемных и запуском новых серверов

При выключении сервера теряются все его данные не сохраненные во внешние службы (S3 и т.д.)

Новый сервер имеет неизвестный заранее IP адрес (как внешний так и внутренний)

Page 10: Tupitsyn High Load

   

:Проблема Потеря данных серверов

Диски сервера /dev/sda1   10Gb / (image образ системы) /dev/sda2 147Gb /mnt (временный диск)

/ ­ при запуске копируется из image /mnt – при запуске всегда чистый При остановке сервера/instance ничего не сохраняется!!!

Page 11: Tupitsyn High Load

   

1:РешениеSimple Storage Service (S3) Самое простое решение Неограниченный объем хранилища Доступен как из EC2 так и ”снаружи” Цена: 0.15$Гб + $ за количество запросов Недостаток

чтобы избежать потерь данных при ”падении” серверов необходимо часто реплицировать данные на S3

Медлено работает с большим количеством файлов

Page 12: Tupitsyn High Load

   

2:РешениеElastic Block Store (EBS)

Монтируется как блочное устройство Размер от 1Гб до 1Тб Механизм создания снэпшотов в S3 Снэпшоты инкрементальные Данные реплицируются между несколькими серверами в одном дата­центре (S3­в разных)

Цена: 0.1$/Гб + 0.1$ за 1М операций

Page 13: Tupitsyn High Load

   

:Проблема IP Изменение адресов

ip remap средствами EC2 Ограничение 5 адресов. Можно увеличить Фиксированный ip стоит 0.01$/час ~ 7.2$/месяц

Традиционные методы Развернуть свой DNS сервер Развернуть свой Proxy сервер

Page 14: Tupitsyn High Load

   

:Проблема Расположение

-дата центров США Европа России нет

Это может стать серьезным препятствием для сервисов нацеленных на российский рынок

Page 15: Tupitsyn High Load

   

3Часть

Дополнительные службы

Page 16: Tupitsyn High Load

   

Simple Storage Service (S3)

Простой интерфейс Масштабируемость

Неограниченный объем хранилища и размер отдельных файлов

Высокая скорость доступа

Отказоустойчивость Репликация данных в различных дата­центрах

Page 17: Tupitsyn High Load

   

S3Применение

Хранилище (файлы, фотки ..) Бекапы Images – образы машин Снэпшоты EBS Хранение состояний серверов Эмуляция файловой системы – плохая идея 

(используйте EBS) Медленно работает с большим количеством маленьких файлов

Page 18: Tupitsyn High Load

   

SimpleDB (SDB)

Домен = Таблица

Page 19: Tupitsyn High Load

   

SDBЗапросы к

Бинарные операторы: =, !=, <, > <=, >=, STARTS­WITH, AND, OR, NOT, INTERSECTION, UNION

Унарный оператор: SORT Примеры:

[ 'Type' = 'db' ] [ 'IP' starts­with '75.101.249.' ] [ 'Status'='running' ] intersection [ 'Type'='db' ]

Page 20: Tupitsyn High Load

   

SDB Преимущества над БД Простота

Нет формата данных  Нет  индексирования

Большие объемы (до 10Гб в домене, до 100 доменов/таблиц)

Не требуется администрировать Масштабируемость Отказоустойчивость

Page 21: Tupitsyn High Load

   

SDBНедостатки

Примитивные запросы Нет связей между таблицами Латентность

Запись распростроняется не мгновенно. При большом объеме задержка до нескольких секунд

Только лексикографический порядок Для текстового поиска придется строить свой индекс

Page 22: Tupitsyn High Load

   

SDBПример использования

Хранение информации о системе в целом Адреса серверов Состояния серверов Измерения производительности серверов

Логи системы Время запуска/останова серверов Обнаруженные ошибки Время поступление и время обработки заданий

Page 23: Tupitsyn High Load

   

Simple Queue Services (SQS)

Неограниченное количество очередей и сообщений

Сообщения текстовые до 8Кб Хранятся 4 дня

Page 24: Tupitsyn High Load

   

SQS?Зачем

Уменьшает связность между серверами поставщиками заданий и обработчиками Ассинхронность Легко масштабировать Аналогия ­ паттерн цепочка ответственности

Сохранность связи При падении сервера сообщение не потеряется Аналоги – Java Message Service, Microsoft Message 

Queuing

Page 25: Tupitsyn High Load

   

Передача тяжелыхсообщений

Максимальная длинна сообщения 8Кб Можно использовать ссылки вместо данных

SimpleDB ( ItemID=3752 ) S3 ( storage/images/img436.jpg ) Сервера и данные на нем (server3, /var/storage/user342)

Page 26: Tupitsyn High Load

   

Выводы по службам

Для гибкого управления серверной инфраструктурой требутся некоторый слой промежуточного ПО

Можно создавать свое промежуточное ПО Придется самостоятельно обеспечивать масштабируемость и отказоустойчивость

Проще воспользоваться службами Amazon (S3, SDB, SQS ...)

Page 27: Tupitsyn High Load

   

4Часть

Языки и библиотеки

Page 28: Tupitsyn High Load

   

Библиотеки

”Родные” библиотеки на aws.amazon.com EC2: Command­Line tools для unix shell AWS: Java, C#, Perl, PHP, VB.NET

Python http://code.google.com/p/boto/

Erlang EC2: http://code.google.com/p/erlawys/ AWS: http://code.google.com/p/erlaws/

Page 29: Tupitsyn High Load

   

Вопросы?

Если возникнут позже,задавайте на [email protected]