Скачать презентацию Поддержка высоконагруженного проекта Евгений Потапов Евгений Потапов Скачать презентацию Поддержка высоконагруженного проекта Евгений Потапов Евгений Потапов

2015 HighLoad Junior - Поддержка высоконагруженного проекта. Мониторинг, резервирование, обслуживание.pptx

  • Количество слайдов: 38

Поддержка высоконагруженного проекта Евгений Потапов Поддержка высоконагруженного проекта Евгений Потапов

Евгений Потапов генеральный директор компании ITSumma Круглоcуточное удаленное администрирование серверов и техническая поддержка сайтов Евгений Потапов генеральный директор компании ITSumma Круглоcуточное удаленное администрирование серверов и техническая поддержка сайтов 100 миллионов уникальных посетителей в сутки Штат – 50 человек Более тысячи серверов на поддержке

На поддержке На поддержке

Содержание • • • Мониторинг и его специфика в высоконагруженном проекте Организация резервирования и Содержание • • • Мониторинг и его специфика в высоконагруженном проекте Организация резервирования и резервного копирования Организация обслуживания и поддержки.

Цели мониторинга • • • Мониторинг как система оповещения Мониторинг как средство анализа Мониторинг Цели мониторинга • • • Мониторинг как система оповещения Мониторинг как средство анализа Мониторинг как система принятия решений

Мониторинг как система оповещения • • • Оповещение о проблемах на сервере Оповещение о Мониторинг как система оповещения • • • Оповещение о проблемах на сервере Оповещение о проблемах, связанных с логикой приложения Оповещение о проблемах, связанных с бизнес-показателями

Мониторинг как система оповещения 1. 2. 3. Требования к системе оповещения: независимость от самого Мониторинг как система оповещения 1. 2. 3. Требования к системе оповещения: независимость от самого проекта (если он упадет система должна продолжать работать) максимально быстрое оповещение о достижении критических показателей надежность оповещений о достижении критических показателей

Мониторинг как система оповещения 1. 2. 3. Три уровня оповещений: Проблемы на сервере (проблемы Мониторинг как система оповещения 1. 2. 3. Три уровня оповещений: Проблемы на сервере (проблемы на серверном железе/серверном ПО) Проблемы на уровне приложения (производительность подсистем, число обращений к подсистемам) Проблемы на уровне бизнес-логики (метрики бизнеса)

Оповещения о проблемах на сервере Проблемы на сервере 1. 2. 3. Статистика по нагрузке Оповещения о проблемах на сервере Проблемы на сервере 1. 2. 3. Статистика по нагрузке на CPU (Оповещения на рост Load Average>числа ядер, CPU idle ниже определенного порога) Статистика по нагрузке на дисковую подсистему (увеличение времени avio, рост дисковых операций iops, рост «busy» диска) Использование оперативной памяти/swap (снижение cached+buffers+free ниже порога, рост использования swap (swap in / swap out)

Оповещения о проблемах на сервере 4. 5. Статистика по серверному софту (падение / всплески Оповещения о проблемах на сервере 4. 5. Статистика по серверному софту (падение / всплески числа запросов на веб-сервер, статистика сервера БД, итд) Внешний мониторинг ответа сервисов (время ответа страниц, код ответа страниц, размер ответа страниц, ошибки рендеринга в Casper. JS, время рендеринга)

Оповещения о проблемах на сервере 1. 2. 3. Проблемы на уровне приложения Число ошибок Оповещения о проблемах на сервере 1. 2. 3. Проблемы на уровне приложения Число ошибок уровня приложения (Рост числа ошибок больше заданного, рост/падение числа событий в целом) Число обращений к подсистемам/ «узлам» приложения (Рост/падение таких обращение) Время взаимодействия приложения с внешними сервисами (рост времени запроса к внешним сервисам, корректность ответов внешних сервисов на уровне приложения)

Оповещения о проблемах на сервере 1. 2. Проблемы на уровне бизнес-логики Бизнес данные на Оповещения о проблемах на сервере 1. 2. Проблемы на уровне бизнес-логики Бизнес данные на «последней миле» технологического стека (Bablo per minute, время с последних действий пользователей, падение числа пользователей) Эмуляция пользовательской логики приложения (оповещения не невозможность выполнить пользовательские действия, оповещения на увеличение времени ответа пользовательских действий)

Оповещения о проблемах на сервере 4. 5. Статистика по серверному софту (падение / всплески Оповещения о проблемах на сервере 4. 5. Статистика по серверному софту (падение / всплески числа запросов на веб-сервер, статистика сервера БД, итд) Внешний мониторинг ответа сервисов (время ответа страниц, код ответа страниц, размер ответа страниц, ошибки рендеринга в Casper. JS, время рендеринга)

Оповещения о проблемах на сервере Устанавливать оповещения следует не на фатальные состояния (не осталось Оповещения о проблемах на сервере Устанавливать оповещения следует не на фатальные состояния (не осталось места на диске, CPU загружен на 95%), а на «контрольные точки» проекта. 1. 2. 3. На запуске – проект не загружен. После первоначального «шторма» , рост будет плавный. Ключевая метрика роста/проблем - достижение контрольных точек (исчерпали 25% ресурсов, исчерпали 50% ресурсов итд). В сложных решениях нужно иметь запас времени для действий связанных с оптимизацией или масштабированием.

Мониторинг как система анализа Цель – понять причину происходящих проблем 1. 2. 3. Требования: Мониторинг как система анализа Цель – понять причину происходящих проблем 1. 2. 3. Требования: возможность хранить максимально возможное количество данных в максимально возможной детализации возможность быстро выбрать эти данные за нужный период возможность быстро отобразить выбранные данные и детально их изучить

Мониторинг как система анализа Необходимая функциональность: 1. 2. 3. Сравнение однотипных данных по разным Мониторинг как система анализа Необходимая функциональность: 1. 2. 3. Сравнение однотипных данных по разным серверам (на каком сервере происходят отклонения от нормы) Сравнение текущих данных с историческими данными (день назад, неделя назад, месяц назад) (насколько текущие показатели отклоняются от нормы) Быстрая выборка большого диапазона исторических данных (изменение данных в динамике)

Мониторинг как система анализа Дополнительно: Сложная агрегация метрик (скользящая средняя, перцентиль, группировка по минимуму, Мониторинг как система анализа Дополнительно: Сложная агрегация метрик (скользящая средняя, перцентиль, группировка по минимуму, максимум итд).

Мониторинг как система принятия решений Организационный подход: 1. 2. 3. Данные в мониторинге следует Мониторинг как система принятия решений Организационный подход: 1. 2. 3. Данные в мониторинге следует использовать не только для анализа причин текущих аварий, но и для понимания что делать дальше Регулярный обзор всех ключевых метрик с целью анализа новых «контрольных точек» ( «через 6 месяцев мы съедим половину ресурсов» ) Данные в мониторинге, как средство избежать повторяющихся ошибок

Мониторинг Доступные решения: 1. 2. 3. Новый проект на старте: Saa. S (Serverdensity, New. Мониторинг Доступные решения: 1. 2. 3. Новый проект на старте: Saa. S (Serverdensity, New. Relic, Data. Dog) Сложный сбор данных, развитие семейство Graphite Извращение и много ресурсов: свои системы

Резервное копирование Ключевые проблемы: 1. 2. 3. Процесс снятия резервной копии (нагрузка на сервер) Резервное копирование Ключевые проблемы: 1. 2. 3. Процесс снятия резервной копии (нагрузка на сервер) Регулярность снятия резервной копии (объем данных, время, необходимое на резервирование) Время восстановления из резервной копии

Резервное копирование Процесс снятия резервной копии: 1. 2. 3. 4. Сам по себе процесс Резервное копирование Процесс снятия резервной копии: 1. 2. 3. 4. Сам по себе процесс снятия резервной копии – тяжелая процедура Резервные копии - создавать с резервных машин Понимание того, что нужно резервировать: UGC – база легкая, а статика может весить гигабайты. База без картинок людям не нужна. Бэкап без регулярной процедуры восстановления – не бэкап.

Резервное копирование Резервные копии - БД: 1. 2. 3. Slave-сервер, как резервная копия на Резервное копирование Резервные копии - БД: 1. 2. 3. Slave-сервер, как резервная копия на случай аварии (защита от аварий с железом но не от человеческого фактора) Slave-сервер с искусственной задержкой, как резервная копия на случай человеческого фактора Hot-backup-службы – для регулярного внешнего резервного копирования.

Резервное копирование Резервные копии – БД – хранение: 1. 2. Минимум одна копия – Резервное копирование Резервные копии – БД – хранение: 1. 2. Минимум одна копия – в пределах внутреннего канала площадки (оперативное восстановление при повреждении данных) Минимум одна копия – на внешней площадке (восстановление при глобальной аварии).

Резервное копирование Резервная копия - контент: 1. 2. Снэпшоты/Rsync (при небольшом количестве изменяемых данных Резервное копирование Резервная копия - контент: 1. 2. Снэпшоты/Rsync (при небольшом количестве изменяемых данных в пределах интервала резервного копирования). Дублирование статики на резервный сервер непосредственно сервером.

Резервное копирование Резервная копия - конфигурация: 1. Конфиги надо бэкапить! Резервное копирование Резервная копия - конфигурация: 1. Конфиги надо бэкапить!

Резервное копирование Резервные копии – процедуры Регулярная регламентированная процедура восстановления проекта из резервной копии Резервное копирование Резервные копии – процедуры Регулярная регламентированная процедура восстановления проекта из резервной копии Ключевые показатели: 1. 2. 3. Оценка времени, занятого на восстановление из резервной копии Оценка «отката во времени» на проекте, после восстановление из резервной копии Оценка целостности восстановленной резервной копии

Резервирование Ключевые вопросы: 1. 2. 3. Выбор площадки для резервирования Мощности для резервирования и Резервирование Ключевые вопросы: 1. 2. 3. Выбор площадки для резервирования Мощности для резервирования и бюджеты Процедуры переключения на резерв

Резервирование Выбор площадки для резервирования 1. Резервная площадка не должна быть связана с текущим Резервирование Выбор площадки для резервирования 1. Резервная площадка не должна быть связана с текущим датацентром (часто видим резервные сервера в той же стойке даже на крупных проектах) 2. Существует риск того, что резервная площадка после переключения останется основной надолго – она не должна быть слишком плохой по качеству или слишком дорогой по стоимости.

Резервирование Мощности для резервирования На запуске проекта – простаивающие мощности – лишние затраты. 1. Резервирование Мощности для резервирования На запуске проекта – простаивающие мощности – лишние затраты. 1. Проект можно разделить на два ДЦ, и переходить на один в случае аварии (тогда возможны тормоза) 2. Гибридное облако – резерв находится в минимальной конфигурации в облаках, достаточной только для того чтобы принимать репликацию. В случае аварии – масштабирование и переключение.

Резервирование – процедуры Регулярная регламентированная процедура переключения на резерв (все ненавидят) 1. 2. 3. Резервирование – процедуры Регулярная регламентированная процедура переключения на резерв (все ненавидят) 1. 2. 3. Оценка времени, занятого на переключение Оценка целостности данных после переключения на резерв Очень не любит бизнес – риск простоя (но еще больший риск – если не делать)

Резервирование и резервное копирование 1. 2. 3. 4. 5. 6. 7. 8. Slave – Резервирование и резервное копирование 1. 2. 3. 4. 5. 6. 7. 8. Slave – это не бэкап Бэкап в том же ДЦ – это не бэкап Резерв в том же ДЦ – это не резерв Бэкап, который не восстанавливали – это не бэкап Бэкап без статики – это не бэкап Если не хватает места – это не отмазка Резерв без переключения – это почти не резерв «Я решу про бэкап на днях» – первый (из двух) шагов к потерянным данным.

Поддержка Все это – не работает без команды 1. 2. 3. 4. 5. Понимание Поддержка Все это – не работает без команды 1. 2. 3. 4. 5. Понимание внутренностей продукта, способность локализовать проблему Вовлеченность в команду (ночные алерты - это боль) Стрессоустойчивость (ночные алерты – это боль) Чаще всего – на старте – разработчики с задатками админа. Должны быть экстраверты (по крайней мере – те кто будут объяснять бизнесу что случилось)

Поддержка Все это – не работает без организации 1. 2. 3. 4. Исправленная авария, Поддержка Все это – не работает без организации 1. 2. 3. 4. Исправленная авария, шаги по исправлению которой не документированы - не исправлена Любой инцидент без алертов может случится один раз. Это должен быть единственный раз. Любые повторяющиеся процедуры, повторяющиеся алерты должны быть описаны Минимум бюрократии на этапе борьбы с аварией, формализация – на этапе postmortem-а.

Поддержка Режим работы 1. 2. 3. 4. Старт – SMS-ки ключевым людям, телефонные звонки Поддержка Режим работы 1. 2. 3. 4. Старт – SMS-ки ключевым людям, телефонные звонки Дежурства: двое через двое по 12 часов – отсутствует жизнь. Категорически не должно быть одного человека на sms-ках. Минимум двое (лучше трое) У каждого из людей on-call должно быть минимум 3 телефона критических людей для оповещения

Поддержка Дополнительные метрики 1. 2. 3. 4. Alerts per hour – для общего понимания Поддержка Дополнительные метрики 1. 2. 3. 4. Alerts per hour – для общего понимания увеличения беды. Время проведенное на серверах (рост времени – рост проблем). Запись SSH-сессий как способ просто восстановить сделанные во время аварий операции. У каждого из людей on-call должно быть минимум 3 телефона критических людей для оповещения

Поддержка Еще про работу 1. 2. 3. 4. Bus factor – если несколько ключевых Поддержка Еще про работу 1. 2. 3. 4. Bus factor – если несколько ключевых людей летят на одном рейсе – серверы обязательно упадут On-call с SMS-ками – всегда минимум два способа связи при себе. Идеально: редирект на другого on-call человека при недоступности мобильного телефона. Жизнь on-call людей тяжела – любите и цените их

Вместо выводов 1. 2. 3. 4. Просто сделать и запустить – не работает (человек Вместо выводов 1. 2. 3. 4. Просто сделать и запустить – не работает (человек тоже болеет) Замониторить и больше никогда не упадет – не работает (диспансеризация – тот же мониторинг) Зарезервировать и не проверять – не работает (каждый второй – не проверяет, 9 из 10 не проверяет полноценно) Зарезервировать, замониторить но не организовать службу поддержки – не работает (программисты будут смотреть как «все упало» и не знать что делать)

Евгений Потапов http: //itsumma. ru eapotapov@itsumma. ru http: //facebook. com/eapotapov Евгений Потапов http: //itsumma. ru eapotapov@itsumma. ru http: //facebook. com/eapotapov