Вы находитесь на странице: 1из 31

OpenStack

Scalability & Performance

Boris Pavlović
Tech Lead at Mirantis
©  MIRANTIS  2013   PAGE  1  
Содержание

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


•  Что такое «производительность» и
«масштабируемость» OpenStack-а?
•  Как “гонять” OpenStack ручками?
•  Цель: полностью автоматизировать тестирование.
(описание проекта Rally)
•  Проблемы с которыми мы столкнулись при
разработке Rally
•  Результаты: Houston we have a problem

©  MIRANTIS  2013   PAGE  2  


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

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

©  MIRANTIS  2013   PAGE  3  


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

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


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

©  MIRANTIS  2013   PAGE  4  


Компоненты OpenStack

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


•  Glance – Образы
•  Cinder – Блочные устройства
•  Neutron – Сети
•  Keystone – Аутентификация/Авторизация
•  Ironic – Физические серверы
•  Ceilometer - Мониторинг

©  MIRANTIS  2013   PAGE  5  


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

©  MIRANTIS  2013   PAGE  6  


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

•  Куча взаимодействующий компонентов,


которые в основном состоят из трех сервисов:
•  API – как точка входа компонента (Nova, Cinder, …)
•  Работает на управляющем сервере
•  Выполнить все, что можно без участия ресурсных
серверов
•  Вызвать нужный метод Manager-a на нужном сервере
•  Manager – делает всю работу вокруг ресурсов
•  DB – полное хранение состояния системы

©  MIRANTIS  2013   PAGE  7  


OpenStack Deployment

•  Как правильно OpenStack деплоить?


•  Нет никаких правил!
•  Нет никаких советов!
•  Нет никаких ограничении!

©  MIRANTIS  2013   PAGE  8  


OpenStack Deployment: Simple no HA

©  MIRANTIS  2013   PAGE  9  


OpenStack Deployment: Full HA

©  MIRANTIS  2013   PAGE  10  


OpenStack Deployment: HA Compact

©  MIRANTIS  2013   PAGE  11  


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

©  MIRANTIS  2013   PAGE  12  


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

•  DB: MySQL or PostgresSQL?


•  AMQP: RabbitMQ or Qpid?
•  Network: Nova Network or Neutron?
•  Virtualization
•  +1 billion configurable parameters

©  MIRANTIS  2013   PAGE  13  


OpenStack Performance & Scalability

Начнем!

©  MIRANTIS  2013   PAGE  14  


OpenStack Performance & Scalability

Нас интересует несколько проблемных зон:


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

©  MIRANTIS  2013   PAGE  15  


OpenStack Performance & Scalability

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

©  MIRANTIS  2013   PAGE  16  


OpenStack Performance & Scalability

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

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

©  MIRANTIS  2013   PAGE  17  


OpenStack Performance:

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


•  Централизованное хранение состояния
системы в реляционной БД
•  Постоянное выкачивание целой ДБ
•  Постоянный update целой ДБ
•  Использование JOIN везде
•  Случайным образом выставленные Index-ы

©  MIRANTIS  2013   PAGE  18  


OpenStack Performance: Цифры

•  Алгоритм работы Nova Scheduler:


1.  Выкачать из БД все данные о вычислительных узлах
(services X compute_node X compute_node_stats)
( 1 X 1 X 25 )
2.  Применить фильтры к этим данным
3.  Взвесит все хосты
4.  Найти лучший хост и запустить ВМ

©  MIRANTIS  2013   PAGE  19  


OpenStack Performance: Цифры

Проблемы Scheduler-a (для 10к серверов):


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

©  MIRANTIS  2013   PAGE  20  


OpenStack Performance: Цифры

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


серверов, 100к ВМ):
•  Создание ВМ 20-30 DB updates
•  Информация об ВМ хранится в двух табличках
100к и 1.2kk записей.
•  Каждые 6 секунд выкачиваются полностью эти
две таблички делая 10к запросов к БД (в случае
10к серверов)

©  MIRANTIS  2013   PAGE  21  


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

•  Хорошо, что делать если нам попадается узкое


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

©  MIRANTIS  2013   PAGE  22  


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

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

©  MIRANTIS  2013   PAGE  23  


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

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

©  MIRANTIS  2013   PAGE  24  


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

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


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

©  MIRANTIS  2013   PAGE  25  


Описание Rally

©  MIRANTIS  2013   PAGE  26  


Rally

На самом деле задача сводится к компоновке


уже существующих элементов в одну систему:
1.  Deploy OpenStack with Fuel or DevStack
2.  Verify deployment with Temptest
3.  Profile with Tomograph & Zipkin
4.  Test framework based on pytest

©  MIRANTIS  2013   PAGE  27  


Rally deployment

•  Just returns information about existing cloud


•  Deploy non HA deployment using DevStack.
•  Deploy complex HA deployments using FUEL.

©  MIRANTIS  2013   PAGE  28  


Rally deployment 3 scenarios

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

©  MIRANTIS  2013   PAGE  29  


Спасибо за внимание!
Вопросы?

©  MIRANTIS  2013   PAGE  30  


Boris Pavlovic
bpavlovic@mirantis.com

©  MIRANTIS  2013   PAGE  31  

Вам также может понравиться