Борис Павлович - Производительность и...

31
© MIRANTIS 2013 PAGE 1 © MIRANTIS 2013 OpenStack Scalability & Performance Boris Pavlović Tech Lead at Mirantis

description

В докладе прозвучали ответы на вопросы о том, что такое OpenStack, зачем он нужен, что подразумевается под его производительностью и масштабируемостью и как тестировать эти качества, если у вас нет своего дата-центра. На примере проекта Rally вы узнали, как полностью автоматизировать тестирование. Было рассказано о проблемах, которые возникли при разработке Rally. Завершился доклад рассказом о том, с какими сложностями, касающимися масштабируемости и производительности OpenStack, ещё предстоит справиться.

Transcript of Борис Павлович - Производительность и...

Page 1: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  1  ©  MIRANTIS  2013  

OpenStack Scalability & Performance

Boris Pavlović

Tech Lead at Mirantis

Page 2: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  2  

Содержание

• Что такое OpenStack и зачем он нужен? • Что такое «производительность» и

«масштабируемость» OpenStack-а? • Как “гонять” OpenStack ручками? • Цель: полностью автоматизировать тестирование.

(описание проекта Rally) • Проблемы с которыми мы столкнулись при разработке Rally • Результаты: Houston we have a problem

Page 3: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  3  

Что такое OpenStack и зачем он нужен?

OpenStack

сделаете из ваших серверов

Page 4: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  4  

Что такое OpenStack облако?

• Позволяет работать с ресурсами, а не железом

• Управляет: •  Виртуальными Машинами •  Блочными устройствами •  Образами •  Сетями •  Физическими серверами

Page 5: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  5  

Компоненты OpenStack

• Nova –Виртуальные машины

• Glance – Образы

• Cinder – Блочные устройства

• Neutron – Сети

• Keystone – Аутентификация/Авторизация

•  Ironic – Физические серверы

• Ceilometer - Мониторинг

Page 6: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  6  

Сферический компонент в вакууме

Page 7: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  7  

Архитектура OpenStack

• Куча взаимодействующий компонентов, которые в основном состоят из трех сервисов: •  API – как точка входа компонента (Nova, Cinder, …)

•  Работает на управляющем сервере •  Выполнить все, что можно без участия ресурсных серверов

•  Вызвать нужный метод Manager-a на нужном сервере

•  Manager – делает всю работу вокруг ресурсов •  DB – полное хранение состояния системы

Page 8: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  8  

OpenStack Deployment

• Как правильно OpenStack деплоить? •  Нет никаких правил! •  Нет никаких советов! •  Нет никаких ограничении!

Page 9: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  9  

OpenStack Deployment: Simple no HA

Page 10: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  10  

OpenStack Deployment: Full HA

Page 11: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  11  

OpenStack Deployment: HA Compact

Page 12: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  12  

OpenStack Deployment: HA в деталях

Page 13: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  13  

OpenStack Deployment: Еще Гибкости!

• DB: MySQL or PostgresSQL?

• AMQP: RabbitMQ or Qpid?

• Network: Nova Network or Neutron?

• Virtualization

• +1 billion configurable parameters

Page 14: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  14  

OpenStack Performance & Scalability

Начнем!

Page 15: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  15  

OpenStack Performance & Scalability

Нас интересует несколько проблемных зон: 1)  Как влияет deployment на производ.? 2)  Влияние конфигурации на производ.? 3)  Влияние количества вычислительных узлов на производительность?

4)  Влияние активных объектов (виртуальных машин, дисков, проектов, пользователей, образов и т.п.) на производительность

Page 16: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  16  

OpenStack Performance & Scalability

А есть ли собственно проблема?

Page 17: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  17  

OpenStack Performance & Scalability

А есть ли собственно проблема?

Короткий ответ: Да есть.

Page 18: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  18  

OpenStack Performance:

Длинный ответ (очевидные узкие места):

• Централизованное хранение состояния системы в реляционной БД

• Постоянное выкачивание целой ДБ

• Постоянный update целой ДБ

• Использование JOIN везде

• Случайным образом выставленные Index-ы

Page 19: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  19  

OpenStack Performance: Цифры

• Алгоритм работы Nova Scheduler: 1.  Выкачать из БД все данные о вычислительных узлах

(services X compute_node X compute_node_stats) ( 1 X 1 X 25 )

2.  Применить фильтры к этим данным 3.  Взвесит все хосты 4.  Найти лучший хост и запустить ВМ

Page 20: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  20  

OpenStack Performance: Цифры

Проблемы Scheduler-a (для 10к серверов): • На каждый запрос к Scheduler-у создать ВМ: •  ДБ возвращает 250к строк! (25мб в несжатом виде) •  Scheduler использует >500 мб оперативной памяти, чтобы обработать этот результат. . •  Запрос к ДБ и обработка результата занимают 15сек!

• Каждые 60 секунд обновляется полностью вся информацию о всех вычислительных узлах: •  Минимум 4к update в секунду!

Page 21: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  21  

OpenStack Performance: Цифры

Создание ВМ-a и синхронизация с ДБ (для 10к серверов, 100к ВМ):

• Создание ВМ 20-30 DB updates

• Информация об ВМ хранится в двух табличках 100к и 1.2kk записей.

• Каждые 6 секунд выкачиваются полностью эти две таблички делая 10к запросов к БД (в случае 10к серверов)

Page 22: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  22  

Ха узкое место!

• Хорошо, что делать если нам попадается узкое место? • Вариант 1: •  Написать фикс и сделать патч •  Сделать синтетические тесты и собрать результаты •  Отправить на ревю •  … •  И вы получите в ответ несколько вопросов:

•  Почему ваши синтетические тесты релевантные? •  Почему вы считаете, что это будет первым узким местом? •  Почему вы считаете, что оно не ухудшит производительность в других use cases?

Page 23: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  23  

Как доказать, что стало лучше?

• Вариант 2: •  Раздеплоить OpenStack на большом кластере •  Сделать соответствующую нагрузку •  Собрать результаты •  Показать комюниты! •  … •  И вы получите в ответ несколько вопросов:

•  Такие результаты наверное связаны с вашим специфичным деплойментом!

•  Вы неправильно настроили БД! •  Ваша синтетическая нагрузка не релевантная! •  …

Page 24: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  24  

Как доказать, что стало лучше?

Вариант 3: • Сделать простую в использовании benchmark систему которая: •  Умеет автоматический продеплоить OpenStack в разных окружения (на железе или виртуальных серверах) •  Имеет удобный фреймворк для написания тестовых сценариев •  Профилирует OpenStack •  Предоставляет результаты пользователю в удобном виде •  Имеет простой интерфейс =)

Page 25: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  25  

Убить двух зайцев одним выстрелом

• Уменьшаем время затрачиваемо на объяснение почему данное изменение исправляет проблему

• Возможность эффективно заниматься бенчмаркингом: •  Поиск узких мест •  Легкий способ проверки, что изменение помогает •  Оптимизация

Page 26: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  26  

Описание Rally

Page 27: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  27  

Rally

На самом деле задача сводится к компоновке уже существующих элементов в одну систему:

1.  Deploy OpenStack with Fuel or DevStack

2.  Verify deployment with Temptest

3.  Profile with Tomograph & Zipkin

4.  Test framework based on pytest

Page 28: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  28  

Rally deployment

•  Just returns information about existing cloud

• Deploy non HA deployment using DevStack.

• Deploy complex HA deployments using FUEL.

Page 29: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  29  

Rally deployment 3 scenarios

• Простой: •  Получить N серверов (возможно виртуальных) •  Используя один из deploy engines раздеплоить

OpenStack на них

• Сложный •  Получить серверы для control node •  Создать ВМ в котором запустим много внутренних контейнеров в которых продеплоим OpenStack •  Создать Snapshot •  Стартовать серверы с данного Snapshot

Page 30: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  30  

Спасибо за внимание!

Вопросы?

Page 31: Борис Павлович - Производительность и масштабируемость OpenStack

©  MIRANTIS  2013   PAGE  31  

Boris Pavlovic

[email protected]