Skip to content
Oleg Ginzburg edited this page Jul 5, 2020 · 17 revisions

Архитектура run-bhyve core

Компоненты

  • База данных - СУБД на базе MySQL/PostgresQL, основная база run-bhyve core, хранящая информацию о виртуальных машинах, их конфигурации, их пользователях, контактная (биллинг) информация

  • Controller - высокоуровневый сервис, выполняющий и контроллирующий весь процессинг в run-bhyve core: прием запросов от API endpoint, генерация задач в Hypervisor, их постановка, обработка результата. Обработка метрик загруженности нод, балансировка нагрузки (DRS) путем анализа perfomance метрик и предсказаний на основе одной из выбранных политик (аналог watcher OpenStack: https://github.com/openstack/watcher/tree/master/watcher/decision_engine/strategy/strategies - кастомный набор политик по выбору подходящего сервера )

  • Broker bus - основная шина данных общения Controller и Hypervisor

  • Hypervisor - физическая нода под управлением FreeBSD OS. Количество нод неограничено. Каждый гипервизор имеет как минимум 1 ZPOOL. Каждый пул обслуживается процессом cbsd_mq, подписывающимся за персональной pool-очередью обработки инструкций CBSD

  • API - сервис (public), предоставляющий RestAPI, json-rpc для взаимоимодействия конечных пользвателей ( curl/UI frontend ) с виртуальными окружениями и облаком. Endpoints:

curl http://127.0.0.1:8081/api/v1/imagelist - получить список образов ( источник: /usr/jails/tmp/bhyve-templates.json ) curl -i -X POST http://127.0.0.1:8081/api/v1/start/f111a - запустить f111a VM curl -i -X POST http://127.0.0.1:8081/api/v1/stop/f111a- остановить f111a VM curl -i -X POST http://127.0.0.1:8081/api/v1/remove/f111a - удалить f111a VM curl -X POST -H "Content-Type: application/json" -d @bhyve_create_minimal.json http://127.0.0.1:8081/api/v1/create/f111a - создать VM

  • CBSD - фреймворк на нижнем слое Гипервизора, выполняющий низкоуровневые операции над виртуальными окружениями ( создать вм, удалить, создать снапшот, откатить чекпоинт, выполнить добавление или ресайзин диска и тп )

Clone this wiki locally