Установка и настройка

Важно

Вначале необходимо произвести настройку окружения. Все команды выполняются только от суперпользователя.

Режим суперпользователя:

sudo -i

Установка

  1. Перед началом установки сохраните список установленных ранее пакетов, это позволит безболезненно восстановить систему в случае ее повреждения. Для этого выполните следующие команды:

    mkdir -p /tmp/tionix_rollback/vdi_server
    pip freeze > /tmp/tionix_rollback/vdi_server/pip_before.txt
    

    После чего в каталоге /tmp/tionix_rollback/vdi_server будет находиться файл pip_before.txt с перечнем установленных приложений.

  2. Также сохраните версии миграции:

    openstack tnx db list -n tnx_vdi_sever > /tmp/tionix_rollback/vdi_server/migrations.txt
    

    Где:

    • /tmp/tionix_rollback/vdi_server/ - директория файла;
    • migrations.txt - наименование файла с версиями миграций.
  3. Установите пакет TIONIX.VDIserver:

    • из репозитория Python-пакетов:

      # Ubuntu, CentOS:
      pip install tionix-vdi-server
      
    • из репозитория RPM пакетов:

      # ALT Linux 7:
      apt-get -y install python-module-tionix_vdi_server
      
      # CentOS:
      yum -y install python-tionix_vdi_server
      
  4. Сохраните список установленных пакетов после установки для возможности отката изменений:

    pip freeze > /tmp/tionix_rollback/vdi_server/pip_after.txt
    
  5. Добавьте пользователя tionix:

    useradd -m tionix
    passwd tionix
    

Установка на двух и более контроллерах

При установке TIONIX.VDIserver на двух и более контроллерах, необходимо:

  1. Реплицировать базу данных на каждый из контроллеров;
  2. Реплицировать брокер сообщений на каждый из контроллеров;
  3. Устанавливать модуль с одинаковыми параметрами на каждый из контроллеров.

Примечание

Удаление и диагностика модуля на каждом контроллере происходит таким же образом, как и в случае с одним контроллером.

Настройка

Примечание

Рассматривается настройка запуска API сервиса через WSGI-сервер, поставляемый вместе с библиотекой eventlet. Для настройки запуска сервиса через другой WSGI-сервер (Nginx + Gunicorn, Apache + mod_wsgi и др.) смотрите документацию соответствующего сервера. Путь до WSGI приложения: tionix_vdi_server.api.vdi_server_api.wsgi.

  1. Выполните первичную настройку модуля:

    openstack tnx configure -n tnx_vdi_server tnx_client
    

    При выполнении команды openstack tnx configure -n tnx_vdi_server tnx_client:

    • производится копирование примеров файлов конфигураций в каталог /etc/tionix/;
    • формируются конфигурационные файлы для веб-сервера Apache;
    • выполняется сборка статики для TIONIX.VDIserver.

    Для запуска сбора статики для TIONIX.VDIserver вручную необходимо выполнить команды:

    python /usr/share/openstack-dashboard/manage.py collectstatic --settings=tionix_vdi_server.django_settings
    python /usr/share/openstack-dashboard/manage.py compress --settings=tionix_vdi_server.django_settings
    
  2. Создайте каталог для логов с нужными правами:

    mkdir -p /var/log/tionix/vdi-server
    chown -R tionix:tionix /var/log/tionix/vdi-server
    
  3. Скопируйте образец конфигурационного файла, при использовании нестандартных параметров отредактируйте их:

    cp /etc/tionix/vdi_server.yaml.example /etc/tionix/vdi_server.yaml
    
  4. Создайте базу данных на примере MySQL, настройте права, тип базы и остальные параметры:

    # Зайдите в базу данных, используя пароль пользователя root
    mysql -uroot -p
    # Создайте пользователя tionix c паролем password
    CREATE USER 'tionix'@'localhost' IDENTIFIED BY 'password';
    # Создайте базу данных tionix_vdi_server
    CREATE DATABASE tionix_vdi_server;
    # Дайте пользователю права на чтение, редактирование, выполнение любых действий над всеми таблицами базы данных tionix_vdi_server
    GRANT ALL PRIVILEGES ON tionix_vdi_server.* TO 'tionix'@'localhost';
    # Осуществите выход из базы данных
    
  5. Выполните синхронизацию базы данных:

    openstack tnx db migrate -n tnx_vdi_server
    
  6. Настройте брокер сообщений RabbitMQ Server:

    rabbitmqctl add_user tionix password
    rabbitmqctl add_vhost tionix
    rabbitmqctl set_permissions -p tionix tionix ".*" ".*" ".*"
    rabbitmqctl set_permissions tionix ".*" ".*" ".*"
    
  7. Создайте сервис VDIserver API:

    openstack service create --name tnx-vdi --description "TIONIX VDIserver Service" tnx-vdi
    
  8. Создайте точки входа (endpoint):

    openstack endpoint create --region RegionOne tnx-vdi internal http://controller:9364
    openstack endpoint create --region RegionOne tnx-vdi admin http://controller:9364
    openstack endpoint create --region RegionOne tnx-vdi public http://controller:9364
    
  9. Создайте пользователя в OpenStack для API сервисов:

    openstack user create --domain default --project service --project-domain default --password password --or-show tionix
    
  10. Назначьте пользователю роль service:

    openstack role add --user tionix --user-domain default --project service --project-domain default service
    
  11. Включите и запустите службы systemd:

    systemctl daemon-reload
    systemctl enable tionix-vdi-server-api.service
    systemctl start tionix-vdi-server-api.service
    systemctl enable tionix-vdi-broker-api.service
    systemctl start tionix-vdi-broker-api.service
    systemctl enable tionix-vdi-keystone-listener.service
    systemctl start tionix-vdi-keystone-listener.service
    systemctl enable tionix-vdi-nova-listener.service
    systemctl start tionix-vdi-nova-listener.service
    systemctl enable tionix-vdi-neutron-listener.service
    systemctl start tionix-vdi-neutron-listener.service
    systemctl enable tionix-vdi-project-syncer.service
    systemctl start tionix-vdi-project-syncer.service
    systemctl enable tionix-vdi-worker.service
    systemctl start tionix-vdi-worker.service
    
  12. Настройте службы Nova, на всех контроллерах и вычислительных узлах, для синхронизации виртуальных машин (в файле конфигурации /etc/nova/nova.conf):

    [oslo_messaging_notifications]
    driver = messagingv2
    
  13. Настройте службы Keystone, на всех контроллерах, для синхронизации проектов (в файле конфигурации /etc/keystone/keystone.conf):

    [oslo_messaging_notifications]
    driver = messagingv2
    
  14. Настройте службы Neutron, на всех контроллерах, для синхронизации плавающих IP-адресов (в файле конфигурации /etc/neutron/neutron.conf):

    [DEFAULT]
    notification_driver = messagingv2
    
  15. Создайте симлинк на поставляемый конфигурационный файл Apache и перезапустите веб сервера:

    # Ubuntu:
    ln -s /etc/apache2/conf-available/tionix-vdi-server.conf /etc/apache2/conf-enabled/tionix-vdi-web.conf
    service apache2 restart
    
    # ALT Linux 7:
    ln -s /etc/httpd2/conf/sites-available/tionix-vdi-server.conf /etc/httpd2/conf/sites-enabled/tionix-vdi-web.conf
    systemctl restart httpd2
    

    Примечание

    Необходимо убедиться в корректности конфигурационного файла: проверить пути к установленным модулям, пути к логам, соответствие директив установленной версии Apache.

  16. Перезапустите службы Nova и Neutron, данное действие необходимо для включения уведомлений:

    # Ubuntu:
    service nova-api restart
    service neutron-server restart
    
    # ALT Linux 7:
    systemctl restart openstack-nova-api
    systemctl restart neutron-server
    
    # CentOS:
    systemctl restart openstack-nova-api
    systemctl restart neutron-server
    

Настройка сервиса VDI broker API

По умолчанию для запуска сервиса используется WSGI-сервер gunicorn. Для настройки альтернативного сервера используйте следующие параметры:

  • Путь до WSGI-приложения: tionix_vdi_server.api.vdi_broker_api.wsgi:application;
  • WSGI-файл: /usr/bin/tnx-vdi-broker-wsgi.

Файл конфигурации

Примечание

По умолчанию в файле vdi_server.yaml.example строки с уровнем логирования нет, она указывается при необходимости. Уровень логирования по умолчанию выставлен в общем конфигурационном файле. Подробнее ознакомиться с файлами конфигурации можно в соответствующем разделе.

Конфигурационный файл представлен в yaml формате и состоит из следующих секций и параметров:

Параметр Описание Значение по умолчанию
DB

Настройки базы данных:

tionix_vdi_server
DEFAULT_AVAILABILITY_ZONE Зона доступности для запуска VDI машин. nova
DEBUG

Работа в режиме debug. Допустимые значения:

  • True;
  • False.

Значения являются регистронезависимыми.

False
COMPRESS_ENABLED

Включение сжатия статики. Допустимые значения:

  • True;
  • False.

Значения являются регистронезависимыми.

True
REQUEST_MODE

Режим выбора для пользователя VDI машины. Возможные значения:

  • single - режим, адаптированный для условий, когда на пользователя назначается только одна VDI машина. VDI сервер предоставляет первую подходящую VDI машину, назначенную на пользователя или группу, в которой он состоит. Информация по каждой машине пользователя запрашивается из Nova по отдельности;
  • multiple - режим, адаптированный для условий, когда на пользователя назначается несколько VDI машин. VDI сервер запрашивает общий список машин из Nova и предоставляет первую подходящую VDI машину, назначенную на пользователя или группу, в которой он состоит.

Значения являются регистронезависимыми.

single
SECURITY_GROUP

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

  • True;
  • False.

Значения являются регистронезависимыми.

True
USE_VDI_TOKEN

Включение проверки наличия разрешения на подключения пользователя к гостевой операционной системе. Допустимые значения:

  • True;
  • False.

Значения являются регистронезависимыми.

False
SENTRY

Настройки логирования Sentry, где:

  • ENABLED - Флаг, отвечающий за отправку сообщений об ошибках в Sentry. Возможные значения:

    • True;
    • False.

    Значения являются регистронезависимыми.

  • DSN - Адрес сервера Sentry, содержит ключ пользователя и идентификатор проекта;

  • LOG_LEVEL - Уровень логирования в Sentry. Значения являются регистронезависимыми.

  • False;
  • Адрес внутреннего сервера Sentry;
  • CRITICAL.
ALLOW_GETVM_LOG

Включение логирования результатов запросов VDI машин из VDI клиента и веб-интерфейса VDI. Расположение и название файла: /var/log/tionix/vdi-server/tionix_lntmov.log. Допустимые значения:

  • True;
  • False.

Значения являются регистронезависимыми.

True
MEMCACHE_LOCATION Url адрес для доступа к системе кэширования. localhost:11211
VDI_SERVER_API_LISTEN IP-адрес, на котором будет запущена служба VDI Server API. 0.0.0.0
VDI_SERVER_API_LISTEN_PORT Порт, на котором будет запущена служба VDI Server API. 9364
VDI_SERVER_API_LOGFILE Путь до лог файла службы tionix-vdi-server-api. /var/log/tionix/vdi-server/vdi-server-api.log
VDI_BROKER_API_LOGFILE Путь до лог файла службы tionix-vdi-broker-api. /var/log/tionix/vdi-server/vdi-broker-api.log
VDI_KEYSTONE_LISTENER_LOGFILE Путь до лог файла службы tionix-vdi-keystone-listener. /var/log/tionix/vdi-server/keystone-listener.log
VDI_NOVA_LISTENER_LOGFILE Путь до лог файла службы tionix-vdi-nova-listener. /var/log/tionix/vdi-server/nova-listener.log
VDI_NEUTRON_LISTENER_LOGFILE Путь до лог файла службы tionix-vdi-neutron-listener. /var/log/tionix/vdi-server/neutron-listener.log
VDI_WORKER_LOGFILE Путь до лог файла службы tionix-vdi-worker. /var/log/tionix/vdi-server/worker.log
VDI_PROJECT_SYNCER_LOGFILE Путь до лог файла службы tionix-vdi-project-syncer. /var/log/tionix/vdi-server/project-syncer.log
REQUEST_PENDING_TIMEOUT Пороговое время ожидания начала обработки запроса на получение VDI машины в секундах. 60
REQUEST_PROCESSING_TIMEOUT Пороговое время ожидания выполнения запроса на получение VDI машины в секундах. Отсчитывается от времени обновления записи о запросе в базе данных. 360
WEB_GUARD

Включение поддержки WebGuard. Допустимые значения:

  • True;
  • False.

Значения являются регистронезависимыми.

False
INSTANCE_NAME_PATTERN

Наименование префикса имени VDI машины, которое будет по умолчанию присваиваться всем VDI машинам проекта. Имеет обязательные требования:

  • не может начинаться с цифры и символа *;
  • не может быть длиннее 15 символов;
  • может содержать только символы A-Z, a-z, 0-9, * и -;
  • должен иметь хотя бы один символ *.

При помощи символа * помечается индекс - порядковый номер, генерируемый автоматически. Количество символов * соответствует количеству знаков.

Примечание

Значение не чувствительно к регистру.

 
VDI_GETVM_LOGFILE Путь к файлу сбора сообщений запросов VDI машин от VDI клиента и веб-интерфейса VDI. /var/log/tionix/vdi-server/tionix_lntmov.log
AFTER_DELETE_VM_SCRIPT_PATH

Путь к скрипту, который выполняется при удалении виртуальной машины. Скрипт запускается от пользователя tionix.

Важно

Скрипту передаются позиционные аргументы в следующем порядке: имя домена, имя виртуальной машины.

 

Важно

При изменении параметров файла конфигурации для вступления их в силу необходимо произвести процедуру, описанную в разделе «Обновление файла конфигурации».

План восстановления

В случае неудачной установки или обновления модуля TIONIX.VDIserver выполните возврат к исходному состоянию:

  1. Сравните версии миграций в файле /tmp/tionix_rollback/vdi_server/migrations.txt с текущими. При наличии отличий произведите миграцию на предыдущую версию. Пример миграции:

    openstack tnx db list -n tnx_vdi_server
    openstack tnx db migrate -n tnx_vdi_server --migration 14
    
  2. Произведите возврат к предыдущему состоянию пакетов:

    cd /tmp/tionix_rollback/vdi_server
    diff --changed-group-format='%>' --unchanged-group-format='' pip_before.txt pip_after.txt > pip_uninstall.txt
    diff --changed-group-format='%<' --unchanged-group-format='' pip_before.txt pip_after.txt > pip_install.txt
    pip uninstall -r pip_uninstall.txt
    pip install -r pip_install.txt