От Newton до Ocata: путь платформы OpenStack на примере проекта Watcher (блог Medium)

10.11.2016
Ведущий разработчик компании «Сервионика» Александр Чадин, один из лидеров глобального сообщества OpenStack в области контроля качества кода, на примере работы над проектом Watcher рассказывает о том, как готовится к выпуску новый релиз платформы – Ocata.

ChadinПосле недавнего релиза OpenStack Newton (вышел в начале октября 2016 года) сообщество OpenStack готовится к новому релизу всей платформы – Ocata, выход которого запланирован на апрель 2017 года. За полгода предстоит реализовать целый комплекс изменений и дополнений, направленных на улучшение общей отказоустойчивости и масштабируемости платформы. Тем не менее, у каждого проекта есть свои особенности и стратегия развития, и соответственно – свой круг задач, над которыми работают участники проекта. Как они определяются? Весь спектр крупных задач (blueprints) формируют сами разработчики – участники проекта, также учитываются предложения от новых участников проекта. Рассмотрим на примере Watcher, какие задачи предстоит реализовать разработчикам проекта к выходу нового релиза Ocata.

Внедрение поддержки Monasca для сбора телеметрических данных

Проект Ceilometer отвечает за сбор телеметрических данных и за активацию уведомлений на основе телеметрии, а конкретно в Watcher используется для получения наиболее актуальных статистических данных. Недавно стало известно, что Ceilometer, возможно, разделится на два самостоятельных направления, и это может повлечь за собой изменения в интерфейсе API. Поэтому в ходе работы над проектом Watcher для решения задач сбора телеметрических данных планируется внедрить поддержку Monasca – нового проекта, который основывается на интерфейсе Ceilometer, но имеет встроенную собственную систему сбора данных. Это решение типа monitoring-as-a-Service, спроектированное с расчетом на масштабируемость, высокую производительность и высокую доступность в отношении метрик. Есть возможность использовать интерфейс Ceilometer с помощью проекта Ceilosca.

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

В релиз Ocata войдет такая важная и уникальная функциональность Watcher, как параллельный запуск нескольких действий (actions). На данный момент в Watcher реализован следующий алгоритм: пользователь создает аудит; аудит запускает соответствующую ему стратегию; стратегия формирует план действий. Когда пользователь запускает каждое из этих действий, то они работают по типу связанного списка – одно действие идет за другим. Фактически такой последовательный запуск существенно замедляет работу, так как большинство действий на данный момент являются миграционными и запускаемыми параллельно. Для решения этой проблемы планируется ввести параллелизм, то есть возможность запуска одновременно нескольких действий при условии, что они между собой никак не связаны. Это нововведение существенно ускорит работу Watcher.

Ограничение одновременного выполнения действий

Важным новшеством в проекте Watcher станет возможность ограничения одновременного выполнения действий по разным признакам. Это необходимо, чтобы исключить ситуации, когда с вычислительного узла одновременно мигрируют, к примеру, 50 виртуальных машин, что сильно нагружает и сеть, и вычислительные ресурсы. Поэтому планируется возможность для пользователя самостоятельно устанавливать ограничения в зависимости от мощности вычислительных узлов, которыми он располагает. Под пользователем мы понимаем администратора, который осведомлен о вычислительных возможностях кластера.

Автоматический запуск плана действий

Сейчас наша команда работает над внедрением возможности автоматического запуска плана действий в случае, если пользователь доверяет какой-либо конкретной стратегии (Watcher Strategy). Пока что в Watcher это можно делать только вручную: после того как пользователь запустил аудит, стратегия сработала и предложила некий план действий – и администратор решает, стоит ли их выполнять. Плюсом ручного запуска является достаточно высокая защищенность от необоснованных действий. К недостаткам можно отнести необходимость постоянного отслеживания того, что предлагает аудит (особенно если это он запускается с определенным интервалом). По нашей задумке, предстоит сделать  Watcher станет полностью автоматизированным с точки зрения управления ресурсами в кластере. Здесь стоит, однако, отметить важность решения вопросов безопасности: мы должны быть полностью уверены, что используемые стратегии отвечают нашим требованиями и не вносят какой-либо неопределенности. Для этого контроль за работой стратегии должен быть ужесточен.

Использование фильтров сервиса Nova Scheduler

Когда мы запускаем какую-то стратегию и она предлагает нам действия по миграции, то выполняется команда «живой» миграции: виртуальные машины переносятся с одного узла на другой. Но проблема заключается в том, что кластер в OpenStack может делиться по определенным признакам, например – по типу хранилищ данных. Например, на одном узле может быть твердотельный накопитель, на другом – накопитель на основе жесткого диска. Перемещать ВМ с одного узла на другой по требованиям SLA невозможно: если пользователь указал необходимость работы ВМ на твердотельном накопителе, то при миграции его ВМ на узел с жестким диском скорость обработки данных упадет и SLA будет нарушен. Чтобы таких ситуаций не возникало, необходимо учитывать фильтры, которые использует такой сервис, как Nova Scheduler. Он запускается при создании новой ВМ и «указывает» ей, на каком из вычислительных узлов расположиться. Команда «живой» миграции (Live Migration), которую мы сейчас используем в Watcher, полностью игнорирует эти фильтры. Поэтому в настоящий момент команды проектов Watcher и Congress ведут переговоры с командой Nova, чтобы получить доступ к фильтрам сервиса Nova Scheduler и мигрировать ВМ более безопасно, не нарушая условия SLA.

Задачи и результаты команды «Сервионики»

Команда разработчиков OpenStack компании «Сервионика» уже взяла на себя задачу с параллельным запуском нескольких действий, в дальнейшем планирует работать над ограничением количества одновременно запускаемых действий. Для релиза Ocata инженеры «Сервионики» уже реализовали два блюпринта. Один из них связан с контролем сервиса Watcher – теперь мы можем получать информацию о состоянии сервисов Watcher (активны - неактивны, на каком узле находятся). Второй вклад – реализация для Watcher Audit Scope. Если раньше в ходе аудита в качестве входных данных принимался целый кластер, то сейчас мы можем ограничить зону действия стратегии по зонам доступности либо по агрегатам постов. Иными словами, теперь стратегия может работать только с теми ресурсами, которые мы ей задаем. Соответственно, здесь можно говорить о некоторых исключениях: разрешая или ограничивая работу агрегатных постов или зон доступности, для удобства пользования мы можем исключить оттуда ВМ или вычислительные узлы.

На данный момент силами «Сервионики» реализованы две функции для Ocata. Завершена работа над функциональным тестированием для клиента Watcher. На сегодняшний день мы уже внедрили более 3200 строк в коде Ocata и обосновали необходимость внесения 5 важных изменений (Commits). Согласно сервису Stackalytics, «Сервионика» сейчас находится на первом месте по количеству строк кода Watcher, создаваемых «с прицелом» на новый релиз платформы – Ocata. 

Задать вопрос автору, прокомментировать публикацию или предложить свое мнение о развитии платформы OpenStack и облачных технологий в целом можно вблоге "Сервионики" на Medium

Назад к разделу "Публикации"