Тестирование аварий. Андрей Губа. highload++ 2015
TRANSCRIPT
Тестирование аварий
Андрей Губа
О себе • В IT 15 лет
• В Одноклассниках с 2008 года
• Системный администратор
– Руководитель отдела
– Deputy CTO
• Системное Администрирование
API, Платформа
Информационная безопасность
Одноклассники в цифрах
0
10
20
30
40
50
2010 2011 2012 2013 2014 2015
Уники, млн/сут
Одноклассники в цифрах
0 1000 2000 3000 4000 5000 6000 7000 8000
2010 2011 2012 2013 2014 2015
Серверов
Одноклассники в цифрах
0
200
400
600
800
1000
1200
2010 2011 2012 2013 2014 2015
Трафик, Гбит/cек
Авария в WEB проекте
Умер web сервер
Отказала «главная база»
Пропало электричество во втором ДЦ
Пропала сеть в основном ДЦ
jabber сервера с нами больше нет
Главный админ вне досягаемости
Пятница, вечер
Авария 04.04.2013 hIp://habrahabr.ru/p/268413/
Инциденты с эффектом для пользователей
2010 2011 2012 2013 2014 2015
Инциденты/месяц Уники/день
45 млн
13 млн
16
84
Оперативный мониторинг
Железо и инфраструктура
Приложения
Активность пользователей
Оперативный мониторинг. Проблемы
Новое оборудование
Новая операционная система
Много информации! Сложно!
Оперативный мониторинг Решение
Семафоры
Smart Monitoring
Обнаруживает аномалии на графиках
Показывает причинно-следственную связь между найденными аномалиями
Создает и оформляет тикеты
Графики использования ресурсов
Всё продакшн оборудование Автоматически Диски, память, трафик … Java heap, GC … 2.7 млн метрик
ПОПП — Проверка операционных показателей и прогнозирование
Резервирование
Диски в райд массиве Резервный интернет канал Реплика базы данных Множество серверов одного типа в кластере.
Резервирование
MS SQL, HP Быстро реагируем –> Не всегда помогает
Резервирование
Надежное железо тоже отказывает 1 сервер = раз в 3 года 200 серверов = раз в неделю 2000 серверов > раз в день
Приложения должны обрабатывать аварийные ситуации: Отказ Замедление Возвращение в работу Старт без связанных сервисов
Резервирование
Управляемая деградация
Отключение сервиса
Горилла и Годзилла Тестирование аварийных сценариев в приложениях, сервисах … ДЦ
Резервирование
Все данные должны иметь копии в разных дата-центрах
Все данные должны иметь копии в разных дата-центрах
Все данные должны иметь копии в разных дата-центрах
Все данные должны иметь копии в разных дата-центрах
Проект должен работать в случае отказа любого дата-центра!
Резервирование. Сложности
Приложения не готовы. Нужно переписать код. Приложений много!
Нет готовых технических решений. Нужно внедрять!
Не хватает людей
Рабочие инструменты
Доступ
Рабочие инструменты
Аварийный доступ
Рабочие инструменты
Системы управления Надежность
Системы мониторинга Надежность Точность
Документация
Описание сервиса Схема Настройка Решение типичных проблем Achtung!
План действий при аварии Чеклист для команды мониторинга: Оповещение дежурного Сообщение в рабочие чаты Создание аварийного чата Способы оповещения Мобилизация нужных команд Оповещение:
руководителей, менеджеров, партнеров
План действий при аварии
Распределение ролей и ответственности: Оценка масштаба Координатор Составление оперативного плана Предоставление доступов Координация работ в отдельном ДЦ Перенятие ролей Разбор аварии
План действий при аварии
Чеклист по восстановлению сервисов: Приоритезированный список Ссылки на инструкции и инструменты Как проверять Что делать, если что-то пошло не так Тестирование
План действий при аварии
Отдельная инструкция для человека, выполняющего роль координатора: Распределять задачи Контролировать Делегировать Обновлять оперативный план Информировать
План действий при аварии
Отдельная инструкция на случай падения дата-центра: Вывод трафика Ввод трафика Контроль
План действий при аварии
Регламент взаимодействия с партнёрами: Список контактов Способы коммуникации Уровни взаимодействия:
Информационный Мобилизационный Рабочая группа
Распределение ролей
Тестирование плана
Раз в квартал Разный координатор Сценарий Коллеги из других команд Фиксирование проблем Задачи на исправление
Сами аварии – это тоже тестирование!
Регистрируем Время (начало, завершение)
Скорость оповещения Эффект Хронология Суть проблемы Обновляем в процессе Результаты разбора Задачи на исправление
Коротко о главном
Мониторинг Резервирование Рабочие инструменты План действий при аварии Тестирование аварий