Ради интереса недавно поискал базовые понятия в интернетах и не нашел достойного описания, поэтому пишу сам, просто, базово, как для себя на заре своего становления в направлении виртуализации, мне бы это помогло быстрее понять основы.
Введение
Виртуализация — это технология, которая позволяет запускать несколько виртуальных машин (ВМ) на одном физическом сервере. Каждая ВМ работает как отдельный компьютер со своей операционной системой. Это позволяет оптимизировать использование ресурсов серверов и снижать затраты на оборудование.
Как пример, можем рассмотреть такие сервисы как хостинг сайтов, создание тестовых сред и тд.
KVM: Базовая технология виртуализации
На сегодняшний день KVM (Kernel-based Virtual Machine) является одним из самых популярных решений для виртуализации на платформе Linux. Его используют как малые компании, так и крупный бизнес, включая облачных провайдеров, благодаря его эффективности и широким возможностям.
Основные моменты:
KVM встроен в ядро Linux и превращает Linux в гипервизор.
Гипервизор — это программа, которая управляет виртуальными машинами (бывает несколько типов гипервизоров, в нашем случае KVM является гипервизором 1-го типа, о других типах можно легко найти информацию в поисковиках).
KVM поддерживает запуск нескольких ОС на одном сервере, эффективно распределяя ресурсы между ВМ.
Резюмируем: KVM встроен в ядро Linux начиная с версии 2.6.20, и благодаря этому его легко установить и настроить на большинстве современных серверов. Он работает как гипервизор — компонент, который позволяет запускать несколько операционных систем на одном сервере одновременно.
OpenStack: Облачная платформа
OpenStack — это платформа с открытым исходным кодом, которая позволяет компаниям создать собственное облако, аналогичное облакам Amazon или Google. Она объединяет в себе разные компоненты для управления серверами, хранением данных и сетями. Самым популярным гипервизором для OpenStack является KVM, благодаря своей высокой производительности и поддержке Linux. С этого момента мы и начинаем понимать суть связки KVM + OpenStack.
Основные моменты:
OpenStack — это набор инструментов для создания и управления облачными инфраструктурами.
Он позволяет автоматизировать создание виртуальных машин, сетей, хранилищ и других ресурсов.
OpenStack поддерживает работу с различными гипервизорами, включая KVM.
Как работает связка KVM и OpenStack
Теперь поймем как эти две технологии KVM и OpenStack работают вместе.
Когда пользователь создаёт виртуальную машину в OpenStack, на уровне гипервизора за это отвечает KVM. OpenStack посылает команды KVM для создания новой ВМ с заданными параметрами — процессором, памятью и местом на диске. После создания OpenStack автоматически добавляет виртуальную машину в сеть и подключает к хранилищу.
Основные моменты:
OpenStack использует KVM как гипервизор для управления виртуальными машинами.
KVM предоставляет интерфейс низкого уровня для работы с ВМ, а OpenStack автоматически управляет их созданием, запуском, остановкой и удалением.
Такая связка позволяет легко масштабировать инфраструктуру и управлять большим количеством серверов и виртуальных машин через веб-интерфейс.
Преимущества использования KVM с OpenStack
Здесь перечислю несколько ключевых преимуществ нашей связки.
Открытый исходный код. Оба решения — OpenStack и KVM — имеют открытый исходный код, что даёт гибкость в настройке и позволяет избежать зависимости от одного вендора.
Высокая производительность. KVM предоставляет производительность близкую к "нативной" работе железа, а OpenStack эффективно управляет большими кластерами серверов.
Широкие возможности для масштабирования. OpenStack позволяет легко добавлять новые серверы в кластер, а KVM гарантирует стабильную работу ВМ даже при высокой нагрузке.
Какие модули есть в OpenStack
OpenStack состоит из множества модулей (сервисов), которые обеспечивают управление различными аспектами облачной инфраструктуры, такими как вычислительные ресурсы, сети, хранилища и безопасность. Перечислю основные модули OpenStack:
1. Compute (Nova)
Nova — сервис для управления виртуальными машинами (инстансами). Это главный компонент для запуска и управления виртуальными серверами.
Поддерживает различные гипервизоры, такие как KVM, QEMU, Xen, Hyper-V, VMware и другие.
2. Networking (Neutron)
Neutron отвечает за создание и управление сетями в OpenStack. Позволяет создавать виртуальные сети, подсети, маршрутизаторы, балансировщики нагрузки, а также управлять сетевыми политиками и безопасностью.
Поддерживает интеграцию с SDN (Software-Defined Networking) и сетевыми плагинами от разных вендоров.
3. Block Storage (Cinder)
Cinder предоставляет блочные хранилища для виртуальных машин, такие как тома, которые можно подключить к инстансам. Позволяет создавать, удалять и управлять блочными устройствами.
Может интегрироваться с различными системами хранения данных, такими как Ceph, NetApp, EMC и другие.
4. Object Storage (Swift)
Swift — объектное хранилище, предназначенное для хранения больших объемов данных. Это распределённое и масштабируемое хранилище для объектов (файлов), которое обеспечивает высокий уровень доступности и репликации данных.
Применяется для хранения резервных копий, архивов, мультимедиа и других объектов, которые могут быть доступны через API.
5. Identity Service (Keystone)
Keystone — это сервис аутентификации и авторизации пользователей и сервисов OpenStack. Keystone управляет пользователями, ролями, проектами (тенантами) и сервисами, предоставляя единую точку входа для всех модулей.
Keystone также управляет API-токенами и доступом на основе ролей (RBAC).
6. Image Service (Glance)
Glance управляет дисковыми образами, которые используются для создания виртуальных машин. Образы могут быть загружены, сохранены и развернуты на инстансах.
Поддерживает различные форматы образов, такие как RAW, QCOW2, VDI и VMDK.
7. Dashboard (Horizon)
Horizon — это веб-интерфейс для управления облаком OpenStack. Через Horizon пользователи могут управлять инстансами, сетями, хранилищем и другими сервисами.
Предоставляет удобный интерфейс для конечных пользователей и администраторов.
8. Orchestration (Heat)
Heat — сервис оркестрации, который позволяет автоматизировать развертывание и управление инфраструктурой, используя шаблоны (темплейты). С его помощью можно описать сложные структуры виртуальных машин, сетей и хранилищ.
Работает по аналогии с AWS CloudFormation.
9. Telemetry (Ceilometer)
Ceilometer — сервис для сбора данных о работе всех компонентов OpenStack, включая использование ресурсов (CPU, диски, сети). Эти данные могут использоваться для биллинга, мониторинга и аналитики.
Позволяет отслеживать использование ресурсов для отчетности и расчета затрат.
10. Database as a Service (Trove)
Trove — сервис, который предоставляет базы данных как услугу (DBaaS). Он упрощает развёртывание и управление базами данных, такими как MySQL, PostgreSQL и другие.
Trove автоматизирует развертывание, управление и масштабирование баз данных.
11. Data Processing (Sahara)
Sahara — сервис для управления большими данными (Big Data). Он упрощает развертывание кластеров Hadoop, Spark и других платформ для обработки данных на базе OpenStack.
Используется для выполнения задач по обработке данных в распределённых кластерах.
12. Bare Metal Provisioning (Ironic)
Ironic — сервис для управления физическими серверами (bare-metal). Он позволяет автоматически развертывать операционные системы на физических серверах, используя их как часть облачной инфраструктуры.
Это удобно для тех случаев, когда нужны реальные серверы, а не виртуальные машины.
13. DNS as a Service (Designate)
Designate — сервис для управления DNS-зонами и записями. Это позволяет организовать работу с доменными именами в облаке, автоматизируя создание DNS-записей для инстансов и других ресурсов.
14. Shared File System (Manila)
Manila — сервис для управления файловыми системами, позволяющий предоставлять общий доступ к файловым системам для нескольких виртуальных машин. Это аналог блочных и объектных хранилищ, но для файлового уровня.
15. Key Management (Barbican)
Barbican — сервис для управления секретами и ключами шифрования. Он обеспечивает безопасное хранение и управление секретными данными, такими как ключи шифрования, сертификаты и пароли.
16. Messaging Service (Zaqar)
Zaqar — это сервис для организации очередей сообщений между сервисами и приложениями в OpenStack. Позволяет организовать масштабируемую и надежную передачу сообщений между компонентами приложений.
17. Container Orchestration (Magnum)
Magnum — сервис для управления контейнерами в OpenStack. Он предоставляет возможность развертывания и управления контейнерными оркестраторами, такими как Kubernetes, Docker Swarm и Mesos, в среде OpenStack.
18. Secret Storage (Castellan)
-
Castellan — библиотека для управления секретами и ключами. Это вспомогательный модуль, который часто используется другими сервисами для безопасного хранения данных.
Ключевые отличия между OpenStack и KVM
Сведем теперь ранее озвученные тезисы в единую таблицу для лучшего усвоения материала.
Параметры |
OpenStack |
KVM |
---|---|---|
Тип |
Full cloud management platform |
Bare-metal гипервизор |
Основное применение |
Управление облачной инфраструктурой |
Виртуализация физических серверов |
Область управления |
Управляет целыми облачными средами |
Управляет виртуализацией отдельных серверов |
Масштабируемость |
Высоко масштабируемый для крупных развертываний |
Масштабируемый, но в первую очередь для отдельных серверов |
Интегрируемость |
Интегрируется с различными облачными платформами и гипервизорами |
Интегрируется напрямую с ядром Linux |
Сложность |
Более сложный, требует оркестровки нескольких услуг |
Более простой, сфокусированный на виртуализации |
Место в инфраструктуре |
Управление верхнего уровня |
Низкий уровень виртуализации |
Заключение
Здесь наверно стоит еще раз сказать что связка KVM и OpenStack — это мощный инструмент для создания частных облаков и виртуализированных инфраструктур, с достаточно большой долей использования на рынке России. Базовые понятия из данной статьи я полагаю должен знать любой начинающий сисадмин, DevOps, MLOps, прочий опс или сетевой инженер. Данная технология является востребованной в современных IT-решениях.
Скорее всего вы захотите поковырятся в ней и попробовать в тестовом режиме, здесь открывается еще один ее плюс, это удобство и достаточная простота ее разворачивания, учитываю что OpenStack модульный, можно для начала ограничится несколькими модулями.
p.s.
не смог удержаться....
Добавлю короткую пошаговую инструкцию по начальной установке OpenStack с KVM, чтобы у вас было представление о процессе настройки.
-
Установка KVM на сервер:
sudo apt install qemu-kvm libvirt-bin virtinst
-
Установка и настройка OpenStack. Для начинающих лучшим вариантом будет использование автоматизированных инструментов, например DevStack или MicroStack:
sudo snap install microstack --devmode --beta microstack init
Запуск первой виртуальной машины через панель управления Horizon (веб-интерфейс OpenStack) или с помощью CLI-команд.
Комментарии (12)
AlexHighTower
09.10.2024 15:26А для личного использования, есть ли простые системы для настройки\запуска\мониторинга ВМ в связке qemu-kvm?
пробовал Kimchi и WebVirtCloud - не зашли, обе старые и на мой взгляд кривые
есть ли что то чтобы работало через веб, давало возможность создавать вм + vnc к ним? и желательно чтобы в докер контейнере запустить и не плодить кучу зависимостей на хосте
kon_ov Автор
09.10.2024 15:26Что касается докера, из известного мне, можно попробовать например: Virt-Manager, Cockpit. Это когда ты хочешь хоть какой-то графический интерфейс, вообще хороший топик для еще одной статьи, более технической! за которую меня не лишат кармы как за эту статью ))
Antonzlo
09.10.2024 15:26Cockpit к сожалению забросили интеграцию докер в пользу podman, вроде замена, а у меня что-то не заработало как надо
outlingo
Опенстек (точнее nova) не работает с KVM. Нова работает с libvirt а уже он запускает ВМ "как настроено". То есть в теории вы например можете запускать ВМ не в KVM а в Xen или (прости господь) в OpenVZ например
kon_ov Автор
Действительно, OpenStack Nova напрямую не взаимодействует с KVM. Nova использует libvirt как промежуточный слой для управления гипервизорами, и через libvirt можно подключить различные гипервизоры, такие как KVM, Xen, QEMU, LXC, OpenVZ и другие. Однако KVM это наиболее часто используемый гипервизор в OpenStack. KVM — это один из гипервизоров, с которым libvirt может работать, и он используется по умолчанию в большинстве развертываний OpenStack
Belen
И все же корректнее будет QEMU-KVM
kon_ov Автор
Соглашусь, дополню KVM предоставляет функции виртуализации на уровне ядра Linux, а QEMU(Quick EMUlator) фактически выступает в роли эмулятора, который запускает виртуальные машины и предоставляет возможность их виртуализации и эмуляции. Но я хотел немного упростить, но сейчас уже понял что публика здесь достаточно иссушенная :) буду думать как это все уложить сюда.