58
Partly cloudy Построение отказоустойчивых систем в AWS минимальными средствами

Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

  • Upload
    itsumma

  • View
    125

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Partly cloudy

Построение отказоустойчивых систем в AWS минимальными

средствами

Page 2: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Евгений Потапов

10 лет опыта веб-разработки

3 года опыта использования облачных технологий

генеральный директор компании «Сумма АйТи»

Page 3: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Поддержка высоконагруженных веб-сайтов

90 миллионов уникальных посетителей в сутки

113 инстансов на поддержке в Amazon AWS

Использовали AWS, Softlayer Cloudlayer, Rackspace Cloud, Scalaxy

Page 4: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Amazon Web Services с точки зрения эксплуатации

Переход работающих проектов

Использование особенностей облака минимальными средствами

Построение отказоустойчивых систем в AWS минимальными средствами

Page 5: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами
Page 6: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Реальную сущность облаков

Не думаем о стоимости внедрения

Верим в чудо

Мы забываем

Page 7: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Владельцы хотят

Высокой надежности

Простой масштабируемости

Платить за используемые ресурсы

Page 8: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

новостей за сутки

13

Показывают яндекс.новости по запросу «Облачные вычисления»

Page 9: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Ложные причины перехода в AWS

Искажение реальности

Потеря доверия к текущей хостинг-площадке

Page 10: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Полный переход в AWS

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

Page 11: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Процессор: Quad Core Xeon 3450 2.66GHz w/HTОперативная память: 8GB DDR3 Registered 1333Дисковая подсистема: 4x500GB SATA HDD, RAID 10 Траффик: 5000 гигабайтПропускная способность: 1 гигабит

Page 12: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Процессор: High-CPU Extra Large Instance (8 virtual cores)Оперативная память: 7 GB of memoryДисковая подсистема: EBS 1000GBТраффик: 1000 гигабайтПропускная способность: не контролируется

Page 13: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

$399

$5011yr upfront: $2000, Instance: $0.16 per hour($2000 / 12) + ($0.16*24*30) = $166.6+$115.2EBS: 1000GB = 1000 * $0.01 = $100Траффик – 1000GB = $0.12*1000 = $120$166+$115+$100+$120 = $501

Page 14: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Но может быть AWS надёжнее?

Page 15: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Даунтайм: 53 часа (21 апреля 2011 года)

Причина: нарушение маршрутизацииЗона: US EastНачало аварии: 12:47 29.04.2011Конец аварии: 18:15 23.04.2011

Page 16: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

21 апреля 2011 года

Мы понимаем то значение, которое оказало это событие на наших клиентов, Мы хотим извиниться, и хотим сказать что мы сделаем выводы из этого происшествия.

http://aws.amazon.com/message/65648/

Page 17: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Даунтайм: 36 часов (7 августа 2011 года)

Причина: отказ подстанцииЗона: EU WestНачало аварии: 10:41 07.08.2011Конец аварии: 20:25 08.08.2011

Page 18: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

7 августа 2011 года

Мы понимаем то значение, которое оказало это событие на наших клиентов, Мы хотим извиниться, и хотим сказать что мы сделаем выводы из этого происшествия.

http://aws.amazon.com/message/2329B7/

Page 19: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Даунтайм: 7 часов (29 июня 2012 года)

Причина: отказ подстанцииЗона: US EastНачало аварии: 19:24 29.06.2012Конец аварии: 02:45 30.06.2012

Page 20: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

29 июня 2012 года

Мы извиняемся за те неудобства, которое оказало это событие на наших клиентов… Мы проведем много часов делая выводы из этого происшествия.

http://aws.amazon.com/message/2329B7/

Page 21: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Uptime 100%

Page 22: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Во всех случаях авария затронула несколько Availability зон в пределах одной географической

локации

Page 23: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Специфика виртуализации

EBS тормозит

Page 24: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Специфика виртуализации

Производительность EBS нестабильнаhttp://blog.scalyr.com/2012/10/16/a-systematic-look-at-ec2-io/

Page 25: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Специфика виртуализации

Пропускная способность непропорциональна типу инстанса

Page 26: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Но, хорошие решения существуют

Page 27: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

1 Гибридный бэкап

Текущий хостинг в основном устраивает

Допустим «откат» в данных на период последнего бэкапа

Бюджет минимален

(показания к применению)

Page 28: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

1 Гибридный бэкап

Сайт находится на физическом хостинге все время, кроме аварийных ситуаций

В AWS находятся только образы подсистем проекта и регулярные бэкапы, которые поднимаются только в случае аварии

(особенности решения)

Page 29: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

1 Гибрный бэкап(нормальный режим)

Page 30: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

1 Гибридное облако(авария на физической площадке)

Page 31: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

1 Гибридный бэкап

Время простоя – время между реакцией на падение физического хостинга и окончательным запуском всех сервисов в AWS

Данные актуальны на дату последнего бэкапа

Необходимо поддерживать две разные площадки

(минусы решения)

Page 32: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

1 Гибридный бэкап

Необходимо поддерживать актуальное состоние AMI и EBS Snapshot-ов

Код проекта должен быть абстрагирован от текущего хостинга

Стоит запланировать регулярные процедуры перехода в «резервное» облако

(рекоммендации)

Page 33: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

2 Бюджетное облако

Текущий хостинг в основном устраивает

При failover в резервную платформу данные должны быть актуальны

Бюджет чуть менее минимален

(показания к приминению)

Page 34: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

2 Бюджетное облако

Проект находится на физическом хостинге, но реплицируется на минимально возможную конфигурацию в Amazon

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

Стоимость резервирования равна стоимости минимально выдерживающего процесс репликации инстанса

(особенности решения)

Page 35: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

2(нормальный режим)

Бюджетное облако

Page 36: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

2(авария на физической площадке)

Бюджетное облако

Page 37: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

2 Бюджетное облако

Время простоя – время между реакцией на падение физического хостинга и окончанием масштабирования инстанса

(минусы решения)

Page 38: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

2 Бюджетное облако(рекоммендации)

«Минимальная конфигурация» должна быть способна выдержать входящий поток репликации

За самим процессом репликации следует следить

Page 39: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Переход ради масштабирования

«Взять слабый инстанс и автоматически масштабировать его при росте нагрузок в пиковые часы»

Page 40: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Переход ради масштабирования

Вертикальное масштабирование:Апгрейд инстанса – 4-10 минут

Горизонтальное масштабирование: Создание инстанса – 5-10 минут

Page 41: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

3 Горизонтальное масштабирование v.1

Текущий хостинг всем устраивает, но нагрузка возрастает в сезонные периоды (т.е. праздники, выходные и т.д.)При появлении пиковой нагрузки можно некоторое время «потормозить»

Бюджет сравним с «гибридным бэкапом»

(применение)

Page 42: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

3 Горизонтальное масштабирование v.1

Вариация «Бюджетного клауда».

Проект находится на физическом хостинге, реплика хранится в AWS

При необходимости масштабирования необходимое количество инстансов запускается в AWS и синхронизируется с «минимального» инстанса.

(особенности решения)

Page 43: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

3 Горизонтальное масштабирование v.1

(нормальный режим)

Page 44: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

3 Горизонтальное масштабирование v.1

(рост нагрузки, синхронизация)

Page 45: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

3 Горизонтальное масштабирование v.1

(итоговое состояние)

Page 46: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

3 Горизонтальное масштабирование v.1

До запуска в AWS конфигурации способной выдержать текущую нагрузку скорость актуальность данных будет ограничиваться пингом между площадками

Если до этого горизонтальное масштабирование не использовалось - большие усилия направленные на изменения архитектуры проекта

(минусы решения)

Page 47: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

3 Горизонтальное масштабирование v.1

При использовании решений не поддерживающих multi-master архитектуры необходимо учитывать наличие только одной (двух) мастер-машин (либо использовать циркулярную репликацию)Очень легко масштабировать чтение, очень сложно масштабировать запись (синхронизация данных при удалении инстанса)

(рекомендации)

Page 48: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

4 Горизонтальное масштабирование v.2

Текущий хостинг всем устраивает, но нагрузка возрастает в короткий промежуток времени (часы)При появлении пиковой нагрузки нет времени на синхронизацию данных – данные должны быть актуальны

(применение)

Page 49: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

4 Горизонтальное масштабирование v.2

Проект целиком находится в AWS, классический облачный хостинг Минимальный пинг между отдельными компонентами системы

Для резервной конфигурации расходы остаются небольшими

(плюсы решения)

Page 50: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

4 Горизонтальное масштабирование v.1

(нормальный режим)

Page 51: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

4 Горизонтальное масштабирование v.2

(рост нагрузки)

Page 52: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Специальные сервисы

EC2 Spot Instances

Amazon Route 53

Amazon ELB

Amazon Glacier

Page 53: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Специальные сервисы

Spot Instances: Amazon позиционирует spot instances как инструмент для cloud computing

Действительно, можно взять EC2-инстанс высокой конфигурации за небольшие деньги.

Этот инстанс будет остановлен как только кто-то предложит большую ставку при дефиците инстансов.

Page 54: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Специальные сервисыRoute 53: сервис работает хорошо, но amazon.com использует другие NS

amazon.comamazon.com nameserver = ns4.p31.dynect.net.amazon.com nameserver = pdns1.ultradns.net.amazon.com nameserver = pdns2.ultradns.net.amazon.com nameserver = pdns3.ultradns.org.amazon.com nameserver = pdns4.ultradns.org.amazon.com nameserver = pdns5.ultradns.info.amazon.com nameserver = pdns6.ultradns.co.uk.amazon.com nameserver = ns1.p31.dynect.net.

Page 55: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Специальные сервисы

ELB: последнее падение затронуло ELBПроекты которые полагались только на ELB в пределах одного региона оказались недоступны на весь период времени

Page 56: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Специальные сервисы

Glacier: высокая стоимость восстановления данных

Дешевизна и надежность архивирования компенсируется стоимостью и скоростью выгрузки данных:

«Стоимость выгрузки 3 терабайт данных может дойти до $22082» http://news.ycombinator.com/item?id=4412886

Page 57: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Точка зрения

Реально оценивайте пользу от облаков

Эффективные решения находятся в области комбинирования подходов

Всегда читайте, что написано мелким шрифтом

Page 58: Partly Cloudy. Построение отказоустойчивых систем в AWS минимальными средствами

Евгений Потапов

http://[email protected]://twitter.com/eapotapov

Построение отказоустойчивых систем в AWS минимальными средствами