Мы продолжаем рассказывать о том, как строится фронтент и бэкенд инфраструктура
В предыдущих сериях:
- How-to: Как строится инфраструктура хостинг-провайдера
- Редизайн сайта хостинг-провайдера: ошибки и решения
- Как облегчить клиентам хостинга создание частных сетей и виртуальных серверов: Опыт проекта 1cloud
- How-to: Как API улучшает инфраструктуру хостинг-провайдера
- How-to: Автоматизация бухгалтерских задач хостинг-провайдера
- Высокая производительность и хостинг-инфраструктура: Опыт проекта 1cloud
- Рука на пульсе: как мы создавали систему отслеживания нагрузки на серверы пользователей
Проблема: расширить, но не уменьшить
В предыдущих версиях нашей панели управления существовала возможность расширения дискового пространства прямо во время работы — клиент мог заказать виртуальный сервер с одним диском, а потом увеличить это число (для этого требовалась перезагрузка сервера).
Минусом всей этой конфигурации была невозможность «отката» назад (плюс упомянутая перезагрузка) — когда потребность в дополнительном дисковом пространстве отпадала (например, проведены работы по миграции или завершены работы, которые требовали дополнительного дискового пространства), отказаться от него было невозможно, и за все даже неиспользуемые ресурсы приходилось платить. Эту проблема нужно было решить.
Что делать
С этой целью была разработана возможность в любой момент времени добавить в виртуальный сервер или удалить из него дополнительные диски. Помимо этого, в процессе работы можно увеличивать емкость этих дополнительных дисков.
Разработка новой функциональности заняла не очень много времени (1,5 — 2 человеконедели в терминах управления проектами) и сопровождалась стандартным процессом внесения изменений — сначала были доработаны интерфейсы панели управления и внешнего сайта, затем наступила пора написания методов для работы с vCloud Director (создание, изменение, удаление дисков). Далее нужно было доработать обработчик заданий и тщательно протестировать работу системы (и, в частности, выявлению влияния новой функции на другие возможности системы вроде работы со снапшотами и бэкапами).
Как это работает
Операция добавления, удаления или изменения дополнительного диска не требует перезагрузки сервера, то есть оптимизировать дисковое пространство можно на уже работающей виртуальной машине.
Для этого клиенту нужно зайти в настройки сервера в панели администрирования и в графическом интерфейсе конфигуратора указать желаемые параметры дискового пространства:
Изначально виртуальный сервер можно создать и с SSD-диском.
В процессе работы можно осуществлять миграцию сервера с SAS на SSD и обратно:
Не все так просто
Как это обычно бывает, жизнь вносит свои коррективы в любой проект, столкнулись с определенными сложностями в процессе создания новой функции и мы.
Очевидно, что в большинстве случаев не целесообразно переносить всю виртуальную машину на SSD, а гораздо эффективнее разбить ее на две части:
- Часть, которая не требует большого количества IOPS, как, например операционная система — ее можно разместить на SAS;
- Часть, которая чувствительна к IOPS, разместить в виде дополнительного диска на SSD.
Но, к сожалению, версия vCloud Director 5.5, которую мы сейчас используем, не позволяет задать отдельную StoragePolicy для конкретного диска, а только на уровне всей виртуальной машины. Соответственно, мы приняли решение выпустить релиз панели с возможностью миграции всей «виртуалки» на SSD.
Планы
Функция динамического расширения дискового пространства работает в «продакшне» не так давно, и еще остаются некоторые моменты, которые требуется улучшить.
В частности, для решения описанной выше проблемы невозможности заказа дополнительных SSD-дисков, запланировали работы по обновлению версии управляющего ПО до версии 5.6. Сразу после этого в панели 1cloud появится возможность заказа дополнительных дисков и на SAS, и на SSD.
На сегодня все, спасибо за внимание. Будем рады ответить на вопросы в комментариях. Подписывайтесь на наш блог — в следующих постах мы продолжим рассказывать о различных аспектах построения и оптимизации хостинг-инфраструктуры.
Автор: 1cloud