11 февраля 2020

Наталья Царёва

Продакт-менеджер DCImanager

Первое знакомство с DCImanager 6 и сравнение с «пятёркой»

28 января мы закончили тестирование и выпустили стабильную версию DCImanager 6 — новой панели управления серверами и оборудованием дата-центра. Предыдущее поколение работало почти 10 лет, поэтому обновление получилось значительным. В этой статье сравним две версии и расскажем об изменениях.
Причин для обновления продукта было много, но если выделить главную, то это архитектурные ограничения. С обзора изменений в архитектуре и начнём, а дальше расскажем о других важных обновлениях.

Материала получилось много, и если вы не настроены читать, приглашаем посмотреть. Можно запустить демо (нужна почта, на которую отправим доступ) или триальную версию. Всё это — на странице продукта.

Порядок сравнения будет следующий.
I. Концептуальные различия:
II. Различия в решении задач:
III. Планы по развитию DCImanager 6

Архитектура

DCImanager 5 развивалcя постепенно: у клиентов возникали новые задачи, они писали нам с просьбой их автоматизировать — мы автоматизировали. За 10 лет панель получила множество возможностей.
Из-за активных и значительных доработок архитектура панели превратилась в монолит. Изменения в одном месте могли затронуть всю функциональность, а реализация решения некоторых задач была сложной и требовала дополнительных условий.
Чтобы в будущем избежать подобных проблем, в DCImanager 6 мы решили перейти на микросервисную архитектуру. Вынесли статистику, управление коммутаторами, IPMIproxy и многое другое в самостоятельные сервисы — всего около 20. Они написаны на C++ или Python и упакованы в докер-контейнеры.
С переходом на новую архитектуру добавлять в продукт новые возможности стало проще. Каждый сервис изолирован, значит — его можно разрабатывать, развертывать и масштабировать независимо от других.
Изолированность позволила использовать новые технологии и языки программирования. Некоторые из уже работающих сервисов написаны на Python и Go (с golang помогают соседние команды, за что им спасибо).

Поменялась не только общая архитектура, но и отдельные решения. Например, механизм выполнения долгих задач.

 

В DCImanager 5 (как и в других продуктах ISPsystem пятого поколения) этот механизм был, но использовался не всегда. Как правило, задачи выполнялись просто по очереди, а пользователю приходилось ждать их завершения. Например, клиент выделял серверу IP-адрес и некоторое время ничего не мог сделать — только смотрел на прелоадер.

 

В DCImanager 6 мы «прокачали» этот механизм: переписали архитектуру, добавили механизмы лочек, зависимости и многое другое. Теперь долгая задача выполняется в отдельных процессах и не блокирует работу панели.

Интерфейс

Архитектурные различия значительны, но их не видно извне. Другое дело интерфейс — здесь разница заметна сразу.
Интерфейс DCImanager 5 устарел визуально и технически. Выглядит несовременно, сценарии пользователей не проработаны. Кроме того, в разработке не было деления на бэкенд и фронтенд. Интерфейс описывался в XML-файлах и обрабатывался фреймворком COREmanager посредством XSLT-преобразований.
Главная страница DCImanager 5
Интерфейс DCImanager 6 другой. Мы учли пожелания пользователей пятой версии: проанализировали задачи администраторов ДЦ и постарались сделать их решение простым и быстрым. С технической точки зрения появилось четкое деление на бэкенд и фронтенд. Пользовательские сценарии продумывают UX-дизайнеры, а реализуют фронтенд-разработчики. Вместо устаревших технологий используется современный фреймворк Angular.
Главная страница DCImanager 6

Работа с несколькими дата-центрами

Не всегда серверы расположены в одном месте. Нередко инфраструктура географически распределена: часть серверов в России, часть в США. А бывает и так, что часть в одном здании, а другая в соседнем. Как бы то ни было, управлять оборудованием в разных местах (локациях) удобно из одной панели.
В DCImanager 5 работать с несколькими дата-центрами можно было двумя способами: покупать на каждый отдельную панель или использовать механизм локаций. Первый способ не очень удобен — приходилось оплачивать все панели, а при работе переключаться между ними. Второй способ лучше: клиент покупал одну панель и внутри неё выделял управляющий сервер для каждой локации. Работать можно было из одного интерфейса, но настроить этот механизм получалось не всегда. Все серверы локации должны были иметь доступ не только до управляющего сервера, но и до сервера с DCImanager 5, а сервер с DCImanager — иметь доступ к оборудованию на локации.
Управление локациями в DCImanager 5
В DCImanager 6 логика работы механизма локаций изменилась. Теперь всему оборудованию необязательно иметь доступ до сервера с панелью, действия происходят только через управляющий сервер. Кроме того, теперь работать с локациями можно прямо на главной странице панели: загружать на управляющий сервер шаблоны ОС, диагностики и восстановления, добавлять оборудование, отслеживать количество свободных стоек и юнитов.
Настройка локации в DCImanager 6

Настройка и управление серверами

Главная задача панели управления — автоматизировать рутинные операции. Чтобы администратор не ходил от сервера к серверу, а работал удалённо. Чтобы не вводил команды в консоли, а мог быстро выполнить необходимые операции в интерфейсе. Обе версии DCImanager справляются с этим. Различия в интерфейсе.
В DCImanager 5 все серверы отображались в одном списке. Чтобы включить, выключить или совершить другое действие над сервером, надо было выделить строку и нажать кнопку над таблицей. Основная информация по серверу содержалась в строке и отображалась в виде идентичных иконок. Должно быть наглядно, но на деле не очень удобно.
Список серверов в DCImanager 5
В DCImanager 6 список серверов эволюционировал и стал функциональнее. Здесь также можно включать/выключать сервер, устанавливать ОС, запускать диагностику и другие операции. Изменился порядок расположения данных, воспринимать информацию стало удобнее. Кроме того, появилась возможность настроить подключения сервера и следить за состоянием этих подключений.
Список серверов в DCImanager 6. Если кликнуть на сервер в списке, раскроется расширенная информация о нём: адрес, локация, владелец, ОС, подключения
Из списка можно перейти к расширенной информации о сервере (в карточку). Пока в карточке доступны два раздела: «Настройки» и «Статистика». В настройках можно управлять сервером, отредактировать основной IP-адрес и MAC-адрес и совершить другие операции. В статистике отображаются графики объёма трафика и нагрузки на канал. Скоро добавим новые разделы: списки IP-адресов, подключений и другие.
Карточка сервера в DCImanager 6. Слева меню с общими настройками, статистикой и другими разделами

Управление серверами через IPMI в серых сетях

Для управления сервером по IPMI обычно используются IP-адреса из серой сети: из-за нехватки внешних IPv4-адресов и для защиты доступа к IPMI со старыми прошивками. Обе версии DCImanager поддерживают подключение по IPMI через проксирование, только работает это по-разному.
В DCImanager 5 за эту задачу отвечал модуль IPMI Proxy. Он использовал стороннее ПО, поэтому был риск несанкционированного доступа к серверу. Кроме того, ввиду его архитектурных особенностей, проксирование создавало нагрузку на сервер и замедляло работу всей панели. Проблемы решались установкой IPMI proxy на отдельный сервер, но не всем это подходило.
В DCImanager 6 логика работы с IPMI эволюционировала. Теперь за подключение к веб-интерфейсам IPMI отвечает сервис IPMI Proxy v2. Он работает как с внутренними, так и со внешними IP-адресами. Отдельный сервер для его установки не нужен: благодаря использованию микросервисной архитектуры модуль IPMI Proxy v2 изолирован и не влияет на работу всей панели.
Модуль состоит из клиентской и серверной частей. Клиентская часть устанавливается на сервер с панелью, серверная — на управляющий сервер локации, к оборудованию которой надо подключиться по IPMI.
Клиентская часть — скрипты для управления IPMI и взаимодействия с DCImanager 6, noVNC-клиент, ПО для трансляции TCP-трафика VNC-сессий.
Серверная часть — скрипты для управления службами IPMI, TigerVNC-сервер, браузер Chromium для доступа к веб-интерфейсу IPMI.
Настройка параметров подключения к IPMI в DCImanager 6

Управление коммутаторами

Обе панели умеют управлять коммутаторами: менять скорость и режим работы портов, проводить их опрос, подключать к серверу и прочее. Разница в интерфейсе и логике работы с оборудованием.
В DCImanager 5 для работы с коммутаторами использовались обработчики. За время существования панели их накопилось много. Пользователи могли писать их сами, но это было непростой задачей из-за особенностей архитектуры и API, невозможности загрузить обработчик через интерфейс. Клиенты обращались за помощью к нам, мы помогали, но была проблема с тестированием. Для проверки обработчика нужен доступ к оборудованию, а клиенты не всегда могли его предоставить: из соображений безопасности или просто потому, что оборудование использовалось «в бою».
Список портов коммутатора в DCImanager 5
В DCImanager 6 пока доступны два вида обработчиков: для коммутаторов Cisco и универсальный обработчик для работы по протоколу SNMP (он подходит большинству коммутаторов). Скоро добавим обработчик для коммутаторов Juniper, а также модуль для добавления обработчика. Он позволит администраторам писать обработчики на языке Python, а затем загружать и проверять их через интерфейс.
Список портов коммутатора в DCImanager 6

За управление коммутаторами отвечает отдельный сервис — Equipment service. Мы решили вынести его из основного приложения по двум причинам:

  • чтобы снизить нагрузку на основное приложение,
  • чтобы безболезненно дорабатывать существующую или наращивать новую функциональность для работы с оборудованием.

Кроме работы с коммутаторами, в задачи сервиса входит сбор статистики по трафику. Позже туда переедут обработчики для других видов оборудования (например, PDU) и работа с IPMI.

Статистика по трафику

В DCImanager 5 за сбор статистики отвечал сам DCImanager. Раз в пять минут панель опрашивала коммутаторы и сохраняла данные о трафике в файл, раз в час обрабатывала их и сохраняла в базу, а раз в день данные агрегировались и заново записывались в базу. Все эти операции нагружали DCImanager 5. Графики панель тоже отрисовывала сама.
Статистика в DCImanager 5. Если данных не хватало, графики были «некрасивыми»
В DCImanager 6 сбор статистики по трафику изменился изнутри и внешне. За сбор данных отвечает сервис работы с оборудованием. Раз в 5 минут он получает актуальные состояния портов коммутаторов, а также входящий и исходящий трафик по каждому порту. После этого информация отправляется в Graphite, где уже настроена агрегация данных за определённые периоды. Graphite интегрирован с Grafana, которая отрисовывает графики. Эти графики встраиваются напрямую в интерфейс DCImanager.
Красивые графики в новой панели. Спасибо Grafana

Управление адресным пространством

В обоих версиях работа с IP-адресами шла через интеграцию с IPmanager — другим продуктом ISPsystem. Только в пятом поколении его надо было еще купить, установить и настроить, в то время как в шестой версии IPmanager встроен как отдельный сервис.
Что можно делать с IP-адресами:
  1. назначать серверам вручную или автоматически,
  2. управлять группами,
  3. добавлять уже настроенную физическую сеть,
  4. объединять сети в пулы,
  5. смотреть, сколько адресов свободно и занято.

Автоматизация продаж выделенных серверов

Если вы хостинг-провайдер, вам известны проблемы выдачи серверов клиенту: надо найти подходящий сервер, проверить, установить ОС и так далее. Все это отнимает время — как провайдера, так и клиента.
Оба поколения DCImanager автоматизируют подготовку и выдачу оборудования благодаря интеграции с биллингами. Есть поддержка WHMCS и BILLmanager, возможна интеграция с другими биллинговыми системами по API.
В шестом поколении интеграция претерпела небольшие изменения. Теперь прямо в биллинге можно заказать сервер из определённого дата-центра (в предыдущей версии это было невозможно). Пользовательский интерфейс, где клиент управляет своим оборудованием, стал красивее и удобнее. Улучшился API.

Ближайшие планы

Мы описали ключевые различия двух панелей. Работа над новой версией DCImanager продолжается. Коротко о том, что мы добавим в панель в ближайшее время.
Работа с VLAN — это одна из самых ожидаемых «фич» DCImanager 6. Когда она появится, администраторы смогут логически объединять физические порты коммутатора в VLAN.
Кастомные обработчики коммутаторов. Администраторы смогут писать, проверять и добавлять обработчики для разных видов оборудования через интерфейс DCImanager 6. Обработчик можно будет проверить в специальной «песочнице», установив соединение с коммутатором и выполнив некоторые действия над портами устройства.
Мониторинг состояния сервера (CPU, RAM, HDD). Панель будет отображать информацию о загрузке процессора, состоянии RAM, доступном месте на жёстком диске и прочем. И всё это в режиме реального времени.
Уведомления и журнал событий. Журнал событий зафиксирует все действия в панели. Система уведомлений позволит администратору узнавать об изменении состояния сущностей или параметров работы оборудования. Например, настроив уведомления в разделе статистики, администратор хостинг-провайдера сможет получать оповещения, если трафик на сервере клиента превысит ограничения тарифа.
Следите за обновлениями в Changelog продукта. Пожелания по возможностями присылайте на feedback@ispsystem.com. Вопросы ждём в комментариях. Спасибо за внимание!

Наталья Царёва

Продакт-менеджер DCImanager