Перейти к основному контенту

OpenNebula

Stub.pngStub.png Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.
Внимание! В разработке! Статья не закончена! Инструкции неполные!


OpenNebula

OpenNebula — это платформа облачных вычислений для управления разнородными инфраструктурами распределенных центров обработки данных. Платформа OpenNebula управляет виртуальной инфраструктурой центра обработки данных для создания частных, общедоступных и гибридных реализаций инфраструктуры как службы.

Архитектура

Облачная архитектура определяется 3-мя элементами: хранилищем данных, сетью и системой виртуализации.

OpenNebula состоит из следующих компонентов:

    Сервер управления (Front-end) — на нём выполняются сервисы OpenNebula. Серверы с виртуальными машинами. Хранилище данных — содержит образы виртуальных машин. Физическая сеть — обеспечивает связь между хранилищем данных, серверами с виртуальными машинами, поддерживает VLAN-ы для виртуальных машин, а также управление сервисами OpenNebula.

    Планирование ресурсов

    Минимальные требования к серверу управления
    Ресурс Минимальное значение Оперативная память 2ГБ CPU 1 CPU (2 ядра) Диск 100ГБ Сеть 2 интерфейса

    Максимальное количество серверов, управляемых одним front-end-ом, зависит от инфраструктуры, особенно от производительности хранилища. Обычно рекомендуется не управлять более чем 500-ми серверами из одной точки, хотя существуют примеры с более чем 1000 серверами.

    Сервера виртуализации
      CPU: в обычных условиях каждое ядро, предоставляемое виртуальной машине (ВМ), должно быть реальным ядром физического процессора, например, для обслуживания 40 ВМ с 2-мя процессорами в каждой, облако должно иметь 80 физических ядер. Они могут быть распределены по разным серверам: 10 серверов с 8-ю ядрами или 5 серверов с 16-ю ядрами на каждом. В случае перераспределения недостаточных ресурсов используются атрибуты CPU и VCPU: CPU означает физические ядра, выделенные для ВМ, а VCPU - виртуальные ядра для гостевой ОС. Память: по умолчанию, OpenNebula не предоставляет памяти для гостевых систем больше, чем есть на самом деле. Желательно рассчитывать объём памяти с запасом в 10% на гипервизор. Например, для 45 ВМ с 2ГБ памяти на каждой, необходимо 90ГБ физической памяти. Важно количество физических серверов: каждый сервер должен иметь 10% запас для работы гипервизора, так, 10 серверов с 10ГБ памяти на каждом могут предоставить по 9ГБ для виртуальных машин и смогут обслужить 45 машин из этого примера (10% от 10ГБ = 1ГБ на гипервизор).
      Хранилище данных

      OpenNebula работает с двумя видами данных в хранилище: образцами виртуальных машин и образами (дисками) самих ВМ. Планирование хранилища - очень важная задача, т.к. от него зависит производительность облака. Например, при использовании Ceph для среднего по размеру облака, необходимо взять как минимум 3 сервера в следующей конфигурации: 5x1ТБ дисков, 16ГБ памяти, 2 CPU с 4-мя ядрами на каждом и 2 сетевые карты (минимум).

      Сеть

      Сетевая инфраструктура должна быть спланирована так, чтобы обеспечить высокую надёжность и пропускную способность. Рекомендуется использовать 2 сетевых интерфейса на сервере управления и по 4 на каждом сервере виртуализации (публичный, внутренний, для управления и для связи с хранилищем).

      Установка

      Сервер управления

      Установить сервер управления OpenNebula можно следующей командой:

      # apt-get install opennebula-server opennebula-common gem-opennebula-cli opennebula-flow opennebula-sunstone opennebula-gate gem-http-cookie
      

      После успешной установки необходимо обновить зависимости пакетов, выполнив команду:

      # apt-get update && apt-get dist-upgrade
      
      TODO:
      Установка кластера высокой доступности для снижения простоев основных сервисов OpenNebula


      Установка MySQL (MariaDB) для хранения конфигурации (на сервере управления):

      # apt-get install mariadb
      # systemctl enable --now mariadb.service
      # mysql_secure_installation
      # mysql -u root
      
       
      mysql> mysql>GRANT GRANTALL ALLPRIVILEGES PRIVILEGESON ONopennebula.* opennebula.*TO TO 'oneadmin' IDENTIFIED BY '<thepassword>';
      mysql> SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;COMMITTED;
      

      Перед запуском сервера OpenNebula в первый раз необходимо настроить параметры доступа к базе данных в конфигурационном файле /etc/one/oned.conf:

      DB = [ backend = "mysql",
             server  = "localhost",
             port    = 0,
             user    = "oneadmin",
             passwd  = "<thepassword>",
             db_name = "opennebula" ]
      
      TODO:
      Периодические задания для чистки БД.


      Проверка работы сервера управления

      Для проверки работоспособности сервера управления необходимо выполнить следующую команду (от имени пользователя oneadmin):

      oneadmin$ oneuser show
      USER 0 INFORMATION
      ID              : 0
      NAME            : oneadmin
      GROUP           : oneadmin
      PASSWORD        : 67aedfae4124dd409035f32ea2f25fgeae6
      AUTH_DRIVER     : core
      ENABLED         : Yes
      
      USER TEMPLATE
      TOKEN_PASSWORD="ec21d27e247fedhasabcb08b8e0a4ca3c"
      
      RESOURCE USAGE & QUOTAS
      

      Проксирование запросов к серверу Sunstone

      Для соединения с веб-интерфейсом сервера управления желательно использовать протокол SSL, для чего необходимо установить дополнительный прокси, а сервер управления настроить на прослушивание только локального адреса 127.0.0.1:9869. Пример настройки HTTP сервера Nginx:

      # apt-get install nginx
      

      В файле конфигурации виртуального сервера /etc/nginx/sites-enabled/sampleserver.org:

      #### OpenNebula Sunstone upstream
      upstream sunstone  {
              server 127.0.0.1:9869;
      }
      
      #### sampleserver.org HTTP virtual host
      server {
              listen 80;
              server_name sampleserver.org;
      
              ### Permanent redirect to HTTPS (optional)
              return 301 https://$server_name:8443;
      }
      
      #### sampleserver.org HTTPS virtual host
      server {
              listen 8443;
              server_name sampleserver.org;
      
              ### SSL Parameters
              ssl on;
              ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
              ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
      
              ### Proxy requests to upstream
              location / {
                       proxy_pass http://sunstone;
              }
      }
      

      Изменения в файле конфигурации /etc/one/sunstone-server.conf:

      :host: 127.0.0.1
      :port: 9869
      

      Сервер виртуализации

      Установка серверов виртуализации (для системы виртуализации KVM):

      # apt-get install opennebula-node-kvm
      # systemctl enable --now libvirtd
      

      Ключи для доступа по SSH

      Сеть

      Хранилище данных

      Добавления хоста

      Добавление сетевых файловых систем

        Ceph GlusterFS ...