Служба сервера OneGate

Содержание

Служба сервера OneGate#

Общие сведения о службе сервера OneGate#

Служба сервера OneGate обеспечивает обмен служебной информацией между службой сервера управления и программным обеспечением, функционирующем на виртуальной машине. Это позволяет администраторам и пользователям получать диагностическую информацию, выявлять ошибки функционирования программного обеспечения. Это позволяет обеспечить автоматическую перенастройку сервиса в соответствии с заданными правилами (политикой эластичности).

Служба сервера OneGate обеспечивает соединение с ВМ по протоколу HTTP. Для каждого экземпляра ВМ формируется индивидуальный токен. Приложения, функционирующие на ВМ, используют этот токен для взаимодействия с API службы сервера OneGate.

Примечание

Для обеспечения взаимодействия с API службы сервера OneGate в операционной системе ВМ необходимо установить пакет one-context.

В ПВ служба сервера OneGate реализована в виде инструмента командной строки opennebula-gate, который устанавливается автоматически при установке и инициализации службы сервера управления.

Также можно развернуть службу сервера OneGate на отдельном сервере, для этого необходимо установить пакет opennebula-gate, который размещен в репозитории ПВ.

Настройка службы сервера OneGate#

Значения параметров службы сервера OneGate представлены в конфигурационном файле /etc/one/onegate-server.conf, который имеет формат YAML и по умолчанию размещен на компьютере, функционирующем в качестве сервера управления. Для настройки службы сервера OneGate используются параметры, приведенные в таблице:

Параметр

Описание

Сетевые настройки

:one_xmlrpc

Адрес для подключения к API службы сервера управления ПВ (по протоколу XML-RPC). По умолчанию установлен http://<идентификатор_сервера>:2633/RPC

:host

Сетевое имя или IP-адрес, который необходимо прослушивать (ожидать запрос на соединение с ВМ)

:port

Порт, который необходимо прослушивать (ожидать запрос на соединение с ВМ). По умолчанию используется порт 5030

:ssl_server

Адрес для доступа к службе SSL-прокси (значение устанавливается только при использовании соответствующей службы)

Аутентификация

:auth

Метод аутентификации, используемый при организации соединения с ВМ. Всегда имеет значение:

  • onegate (аутентификация на основе индивидуального токена ВМ)

:core_auth

Метод аутентификации, используемый при подключении к службе сервера управления ПК СВ. Может принимать следующие значения:

  • cipher (при аутентификации с симметричным ключом);

  • x509 (при аутентификации на основе цифровых сертификатов X.509)

Настройки подключения к службе OneFlow

:oneflow_server

Адрес для подключения к службе сервера OneFlow

Управление доступом

:permissions

Перечень функций API, вызов которых можно запретить/разрешить. По умолчанию разрешены вызовы всех функций API.

:restricted_attrs

Перечень параметров, значения которых запрещено менять при корректировке пользовательского шаблона экземпляра ВМ

:restricted_actions

Перечень действий с ВМ, которые запрещено выполнять

:vnet_template_attributes

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

Протоколирование

:debug_level

Уровень протоколирования. Возможные значения:

  • 0 — регистрировать сообщения об ошибках;

  • 1 — регистрировать предупреждения;

  • 2 — регистрировать информационные сообщения;

  • 3 — регистрировать отладочные сообщения

По умолчанию служба сервера OneGate настроена на прослушивание локального адреса (localhost). Для обеспечения доступа ВМ к службе сервера OneGate необходимо в качестве значения параметра :host указать адрес сервера, на котором развернута эта служба, и к которому имеется сетевой доступ у ВМ. Кроме того, для параметра :host можно указать значение 0.0.0.0 (для прослушивания всех IP-адресов, присвоенных серверу).

После внесения изменений в конфигурационный файл необходимо перезагрузить службу сервера OneGate командой:

sudo systemctl restart opennebula-gate

Управление службой сервера OneGate#

Чтобы запустить, перезапустить или остановить службу сервера OneGate, необходимо выполнить соответствующую команду:

sudo systemctl start opennebula-gate
sudo systemctl restart opennebula-gate
sudo systemctl stop opennebula-gate

Чтобы разрешить или запретить автоматический запуск службы сервера OneGate при запуске ОС СН, необходимо выполнить соответствующую команду:

sudo systemctl enable opennebula-gate
sudo systemctl disable opennebula-gate

Информация о работе службы сервера OneGate регистрируется в следующих файлах:

  • /var/log/one/onegate.log;

  • /var/log/one/onegate.error.

Кроме того, информация о работе службы сервера OneGate регистрируется в системном журнале. Для просмотра этой информации необходимо выполнить команду:

sudo journalctl -u opennebula-gate.service

Настройка ПВ для использования службы сервера OneGate#

При настройке доступа ВМ к службе сервера OneGate используется параметр ONEGATE_ENDPOINT, значение которого содержит сетевое имя (IP-адрес) и порт для доступа к службе сервера OneGate. Для настройки доступа к службе сервера OneGate необходимо на компьютере, функционирующем в качестве сервера управления, в конфигурационном файле /etc/one/one.d/base.conf раскомментировать и изменить значение параметра ONEGATE_ENDPOINT.

ONEGATE_ENDPOINT = "http://192.168.0.5:5030"

После внесения изменений необходимо перезапустить службу управления ПВ:

sudo systemctl restart opennebula

Настройка шаблона ВМ для использования службы сервера OneGate#

Настройка шаблона ВМ в интерфейсе командной строки#

В шаблоне ВМ в блоке параметров CONTEXT для параметра TOKEN необходимо установить значение YES:

CPU = "0.5"
MEMORY = "1024"
DISK = [
    IMAGE_ID = "0" ]
NIC = [
    NETWORK_ID = "0" ]
CONTEXT = [
    TOKEN = "YES" ]

Для изменения параметров шаблона необходимо использовать команду:

onetemplate update <идентификатор_шаблона> [<файл_параметров>]

где <файл_параметров> — файл в котором перечислены параметры ВМ, заменяющие значения, которые были ранее определены в шаблоне. Если файл параметров не указан, то после ввода команды откроется текстовый редактор для редактирования шаблона ВМ.

Настройка шаблона ВМ в веб-интерфейсе ПВ#

Чтобы изменить параметры шаблона, в веб-интерфейсе ПВ необходимо выполнить следующие действия:

  1. В меню слева выбрать пункт меню Шаблоны — ВМ и на открывшейся странице Шаблоны ВМ выбрать необходимый шаблон.

  2. На открывшейся странице Шаблон ВМ нажать кнопку Обновить.

  3. На открывшейся странице Изменить шаблон ВМ во вкладке Контекст

  • в секции Конфигурация установить флаг Добавить токен OneGate;

  • нажать кнопку Обновить.

../../../../_images/onegate-vm_template.png

Настройка ВМ для доступа к службе сервера OneGate#

Примечание

Для обеспечения взаимодействия с API службы сервера OneGate в операционной системе ВМ необходимо установить пакет one-context.

При развертывании экземпляра ВМ в секции CONTEXT шаблона этой ВМ будет автоматически добавлен параметр ONEGATE_ENDPOINT.

Кроме того, на виртуальном CD-ROM с наименованием CONTEXT, подключенном к этой ВМ, будет автоматически размещен файл token.txt, содержащий токен. Файл token.txt доступен только в ОС виртуальной машины.

Дополнительных настроек не требуется.

Использование клиента OneGate в ОС виртуальной машины#

Особенности использования клиента OneGate#

Клиент OneGate реализован в виде инструмента командной строки onegate, который автоматически устанавливается при установке пакета one-context.

Для того чтобы получить подробное описание использования инструмента командной строки onegate, необходимо выполнить команду:

onegate -h

Получение служебной информации о ВМ#

Чтобы получить служебную информацию о ВМ, в ОС этой ВМ необходимо выполнить команду:

onegate vm show

Пример вывода после выполнения команды:

VM 8
NAME        : master_0_(service_1)
STATE       : RUNNING
IP  : 192.168.122.23

Чтобы получить служебную информацию о другой ВМ, необходимо в качестве дополнительного аргумента команды указать идентификатор ВМ.

Доступна служебная информация только тех ВМ, которые логически объединены в один сервис или подключены к одному виртуальному маршрутизатору.

Получение служебной информации сервиса#

Чтобы получить служебную информацию о ВМ, в ОС этой ВМ необходимо выполнить команду:

onegate vm show

Пример вывода после выполнения команды:

VM 8
NAME : master_0_(service_1)

Чтобы получить служебную информацию о ВМ, необходимо в качестве дополнительного аргумента команды указать --extended:

onegate vm show --extended

Пример вывода после выполнения команды:

VM 8
NAME : master_0_(service_1)
STATE : RUNNING
IP  : 192.168.122.23

Получение служебной информации о виртуальном маршрутизаторе#

Чтобы получить служебную информацию о виртуальном маршрутизаторе, к которому подключена ВМ, в ОС этой ВМ необходимо выполнить команду:

onegate vrouter show

Пример вывода после выполнения команды:

VROUTER 0
NAME        : vr
VMS : 1

Получение служебной информации о виртуальной сети#

Чтобы получить служебную информацию о виртуальной сети в ОС ВМ необходимо выполнить команду:

onegate vnet show <идентификатор_сети>

Доступна служебная информация только о виртуальных сетях, подключенных к тому виртуальному маршрутизатору, к которому имеется доступ ВМ.

Примечание

Пример

Получение служебной информации о виртуальной сети с идентификатором 0:

onegate vnet show 0

Пример вывода после выполнения команды:

VNET
ID : 0

Изменение пользовательского шаблона экземпляра ВМ#

С помощью клиента OneGate можно изменить значения параметров, размещенных в пользовательском шаблоне любой ВМ сервиса.

Примечание

Пример

  1. Изменить значение параметра ACTIVE для ВМ с идентификатором 9:

onegate vm update 9 --data ACTIVE=YES
  1. Просмотреть служебную информацию о ВМ. Для этого можно воспользоваться командой:

onegate vm show 9 --json

Пример вывода после выполнения команды:

{
    "VM": {
        "NAME": "slave_0_(service_1)",
        "ID": "9",
        "STATE": "3",
        "LCM_STATE": "3",
        "USER_TEMPLATE": {
            "ACTIVE": "YES",
            "FROM_APP": "4fc76a938fb81d3517000003",
            "FROM_APP_NAME": "ttylinux - kvm",
            "LOGO": "images/logos/linux.png",
            "ROLE_NAME": "slave",
            "SERVICE_ID": "1"
        },
        "TEMPLATE": {
            "NIC": [ ]
            }
        }
}

Удаление параметра из пользовательского шаблона экземпляра ВМ#

С помощью клиента OneGate можно удалить параметр, размещенный в пользовательском шаблоне любой ВМ сервиса.

Примечание

Пример

  1. Удалить параметр ACTIVE для ВМ с идентификатором 9:

onegate vm update 9 --erase ACTIVE
  1. Просмотреть служебную информацию о ВМ. Для этого можно воспользоваться командой:

onegate vm show 9 --json

Пример вывода после выполнения команды:

{
    "VM": {
        "NAME": "slave_0_(service_1)",
        "ID": "9",
        "STATE": "3",
        "LCM_STATE": "3",
        "USER_TEMPLATE": {
            "FROM_APP": "4fc76a938fb81d3517000003",
            "FROM_APP_NAME": "ttylinux - kvm",
            "LOGO": "images/logos/linux.png",
            "ROLE_NAME": "slave",
            "SERVICE_ID": "1"
        },
        "TEMPLATE": {
            "NIC": [ ]
            }
        }
}

Управление состоянием ВМ#

С помощью клиента OneGate можно управлять состоянием ВМ, тем самым изменять конфигурацию сервиса. Для управления состоянием ВМ доступны следующие команды:

onegate vm resume
onegate vm stop
onegate vm suspend
onegate vm terminate
onegate vm reboot
onegate vm poweroff
onegate vm resched
onegate vm unresched
onegate vm hold
onegate vm release

Управление количеством ВМ в составе сервиса#

С помощью клиента OneGate можно управлять количеством ВМ в составе сервиса.

Примечание

Пример

  1. Увеличить количество ВМ с ролью «ведомый» (slave) до 2:

onegate service scale --role slave --cardinality 2
  1. Просмотреть служебную информацию сервиса. Для этого можно воспользоваться командой:

onegate service show --extended

Пример вывода после выполнения команды:

SERVICE 1

NAME    : PANACEA service
STATE   : RUNNING

ROLE master
VM 8
NAME    : master_0_(service_1)
STATE   : RUNNING
IP      : 192.168.122.23

ROLE slave
VM 9
NAME    : slave_0_(service_1)
STATE   : RUNNING
NAME    : slave_1_(service_1)
STATE   : PENDING

Взаимодействие с API службы сервера OneGate в ОС виртуальной машины#

Параметры доступа к API службы сервера OneGate#

Взаимодействие со службой сервера OneGate осуществляется посредством REST API. При этом заголовок запроса должен содержать следующие данные:

  • X-ONEGATE-TOKEN — токен, присвоенный ВМ;

  • X-ONEGATE-VMID — идентификатор ВМ.

В ОС СН значения указанных выше параметров можно получить из переменной окружения /var/run/one-context/one_env. Для этого можно воспользоваться командой:

sudo cat /var/run/one-context/one_env

Пример вывода после выполнения команды:

export TOKENTXT="N7HAQYUss4/LHPWvPHLe2A=="
export VMID="9"
export ONEGATE_ENDPOINT="http://192.168.0.1:5030"
export CONTEXT="true"
...

Получение служебной информации о ВМ#

Чтобы получить служебную информацию о ВМ, необходимо войти в ОС этой ВМ и отправить запрос вида:

GET <ONEGATE_ENDPOINT>/vm

где <ONEGATE_ENDPOINT> — адрес доступа к службе сервера OneGate.

Примечание

Пример

Получение служебной информации о ВМ:ode

curl -X "GET" "192.168.0.1:5030/vm" --header "X-ONEGATE-TOKEN: N7HAQYUss4/LHPWvPHLe2A==" --header "X-ONEGATE-VMID: 9"

Пример ответа сервера после выполнения запроса:

{
    "VM":{
        "NAME":"slave_0_(service_1)",
        "ID":"9",
        "STATE":"3",
        "LCM_STATE":"3",
        "TEMPLATE":{
            "NIC:[
                {
                    "IP":"192.168.122.33",
                    "MAC":"02:00:ac:10:01:64",
                    "NAME":"NIC0",
                    "NETWORK":"virtnetwork"
                }
            ],
            "NIC_ALIAS":[]
        },
       "USER_TEMPLATE":{
            "AUTOSTARTVM":"0",
            "HOT_RESIZE":{
            "CPU_HOT_ADD_ENABLED":"NO",
            "MEMORY_HOT_ADD_ENABLED":"NO"
            },
            "HYPERVISOR":"kvm",
            "INPUTS_ORDER":"",
            "MEMORY_UNIT_COST":"MB",
            "READY":"YES",
            "SERVICEUSERVM":"1"
        }
    }
}

Чтобы получить служебную информацию о другой ВМ, необходимо отправить запрос вида:

GET <ONEGATE_ENDPOINT>/vms/<идентификатор_ВМ>

где <ONEGATE_ENDPOINT> — адрес доступа к службе сервера OneGate.

Примечание

Доступна служебная информация только тех ВМ, которые логически объединены в один сервис или подключены к одному виртуальному маршрутизатору.

Получение служебной информации сервиса#

Чтобы получить служебную информацию сервиса, в состав которого входит ВМ, необходимо войти в ОС этой ВМ и отправить запрос вида:

GET <ONEGATE_ENDPOINT>/service

где <ONEGATE_ENDPOINT> — адрес доступа к службе сервера OneGate.

Примечание

Пример

Получение служебной информации о сервисе, в состав которого входит ВМ:

curl -X "GET" "192.168.0.1:5030/service" --header "X-ONEGATE-TOKEN: N7HAQYUss4/LHPWvPHLe2A==" --header "X-ONEGATE-VMID: 9"

Пример ответа сервера после выполнения запроса:

{
    "SERVICE": {
        "id": ...,
        "name": ...,
        "roles": [
            {
                "name": ...,
                "cardinality": ...,
                "state": ...,
                "nodes": [
                    {
                        "deploy_id": ...,
                        "running": true|false,
                        "vm_info": {
                            // служебная информация о ВМ
                        }

                    },
                    // информация о других узлах ...
                ]
            },
            // описание других ролей ...
        ]
    }
}

Получение служебной информации о виртуальном маршрутизаторе#

Чтобы получить служебную информацию о виртуальном маршрутизаторе, к которому подключена ВМ, необходимо войти в ОС этой ВМ и отправить запрос вида:

GET <ONEGATE_ENDPOINT>/vrouter

где <ONEGATE_ENDPOINT> — адрес доступа к службе сервера OneGate.

Примечание

Пример

Получение служебной информации о виртуальном маршрутизаторе, к которому подключена ВМ:

curl -X "GET" "192.168.0.1:5030/vrouter" --header "X-ONEGATE-TOKEN: N7HAQYUss4/LHPWvPHLe2A==" --header "X-ONEGATE-VMID: 9"

Пример ответа сервера после выполнения запроса:

{
  "VROUTER": {
      "NAME": "vr",
      "ID": "0",
      "VMS": {
      "ID": [
          "1"
      ]
      },
      "TEMPLATE": {
      "NIC": [
          {
          "NETWORK": "vnet",
          "NETWORK_ID": "0",
          "NIC_ID": "0"
          }
      ],
      "TEMPLATE_ID": "0"
      }
  }
}

Получение служебной информации о виртуальной сети#

Чтобы получить служебную информацию о виртуальной сети, необходимо войти в ОС этой ВМ и отправить запрос вида:

GET <ONEGATE_ENDPOINT>/vnet/<идентификатор_сети>

где <ONEGATE_ENDPOINT> — адрес доступа к службе сервера OneGate.

Доступна служебная информация только о виртуальных сетях, подключенных к тому виртуальному маршрутизатору, к которому имеется доступ ВМ.

Примечание

Пример

Получение служебной информации о виртуальной сети с идентификатором 0:

curl -X "GET" "192.168.0.1:5030/vnet/0" --header "X-ONEGATE-TOKEN: N7HAQYUss4/LHPWvPHLe2A==" --header "X-ONEGATE-VMID: 9"

Пример ответа сервера после выполнения запроса:

{
  "VNET": {
      "ID": "0",
      "NAME": "vnet",
      "USED_LEASES": "1",
      "VROUTERS": {
      "ID": [
          "0"
      ]
      },
      "PARENT_NETWORK_ID": {
      },
      "AR_POOL": {
      "AR": [
          {
          "AR_ID": "0",
          "IP": "192.168.122.100",
          "MAC": "02:00:c0:a8:7a:64",
          "SIZE": "10",
          "TYPE": "IP4",
          "MAC_END": "02:00:c0:a8:7a:6d",
          "IP_END": "192.168.122.109",
          "USED_LEASES": "1",
          "LEASES": {
              "LEASE": [
              {
                  "IP": "192.168.122.100",
                  "MAC": "02:00:c0:a8:7a:64",
                  "VM": "1"
              }
              ]
          }
          }
      ]
      },
      "TEMPLATE": {
      "NETWORK_ADDRESS": "192.168.122.0",
      "NETWORK_MASK": "255.255.255.0",
      "GATEWAY": "192.168.122.1",
      "DNS": "1.1.1.1"
      }
    }
  }

Изменение пользовательского шаблона экземпляра ВМ#

Для изменения значения параметра, а также добавления параметра в пользовательский шаблон ВМ необходимо войти в ОС этой ВМ и отправить запрос вида:

PUT <ONEGATE_ENDPOINT>/vm

где <ONEGATE_ENDPOINT> — адрес доступа к службе сервера OneGate.

Примечание

Пример

Добавление параметра APP_LOAD который имеет значение «9.7»:

curl -X "PUT" "192.168.0.1:5030/vm" --header "X-ONEGATE-TOKEN: N7HAQYUss4/LHPWvPHLe2A==" --header "X-ONEGATE-VMID: 9" -d "APP_LOAD=9.7"

Для просмотра внесенных изменений можно на сервере управления выполнить команду:

onevm show 9

Пример вывода после выполнения команды:

...
USER TEMPLATE
APP_LOAD="9.7"
AUTOSTARTVM="0"
HOT_RESIZE=[
  CPU_HOT_ADD_ENABLED="NO",
  MEMORY_HOT_ADD_ENABLED="NO" ]
HYPERVISOR="kvm"
INPUTS_ORDER=""
MEMORY_UNIT_COST="MB"
READY="YES" ...

Чтобы добавить параметр в пользовательский шаблон другой ВМ или изменить значение этого параметра, необходимо отправить запрос вида:

PUT <ONEGATE_ENDPOINT>/vms/<идентификатор_ВМ>

где <ONEGATE_ENDPOINT> — адрес доступа к службе сервера OneGate.

Доступно изменение пользовательского шаблона только тех ВМ, которые логически объединены в один сервис.

Удаление параметра из пользовательского шаблона экземпляра ВМ#

Чтобы удалить параметр из пользовательского шаблона ВМ, необходимо войти в ОС этой ВМ и отправить запрос вида:

PUT <ONEGATE_ENDPOINT>/vm?type=2

где <ONEGATE_ENDPOINT> — адрес доступа к службе сервера OneGate.

Примечание

Пример

Удаление параметра APP_LOAD:

curl -X "PUT" "192.168.0.1:5030/vm?type=2" --header "X-ONEGATE-TOKEN: N7HAQYUss4/LHPWvPHLe2A==" --header "X-ONEGATE-VMID: 9" -d "APP_LOAD"

Для просмотра внесенных изменений можно на сервере управления выполнить команду:

onevm show 9

Пример вывода после выполнения команды:

...
USER TEMPLATE
AUTOSTARTVM="0"
HOT_RESIZE=[
  CPU_HOT_ADD_ENABLED="NO",
  MEMORY_HOT_ADD_ENABLED="NO" ]
HYPERVISOR="kvm"
INPUTS_ORDER=""
MEMORY_UNIT_COST="MB"
READY="YES"
...

Чтобы удалить параметр из пользовательского шаблона другой ВМ, необходимо отправить запрос вида:

PUT <ONEGATE_ENDPOINT>/vms/<идентификатор_ВМ>?type=2

где <ONEGATE_ENDPOINT> — адрес доступа к службе сервера OneGate.

Доступно изменение пользовательского шаблона только тех ВМ, которые логически объединены в один сервис.

Управление состоянием ВМ#

Для управления состоянием ВМ используется запрос вида:

POST <ONEGATE_ENDPOINT>/vms/<идентификатор_ВМ>/action

где <ONEGATE_ENDPOINT> — адрес доступа к службе сервера OneGate.

Примечание

Пример

Установить состояние «готова для размещения» для ВМ с идентификатором 18:

curl -X "POST" "192.168.0.1:5030/vms/18/action" --header "X-ONEGATE-TOKEN: N7HAQYUss4/LHPWvPHLe2A==" --header "X-ONEGATE-VMID: 9" -d "{’action’ : {’perform’: ’resched’}}"

Управление количеством ВМ в составе сервиса#

Чтобы изменить количество ВМ в составе сервиса, необходимо отправить запрос вида:

POST <ONEGATE_ENDPOINT>/service/<идентификатор_сервиса>/scale

где <ONEGATE_ENDPOINT> — адрес доступа к службе сервера OneGate.

Примечание

Пример

Увеличение количества ВМ с ролью «обработчик» (worker) до 10:

curl -X "POST" "192.168.0.1:5030/service/0/scale" --header "X-ONEGATE-TOKEN: N7HAQYUss4/LHPWvPHLe2A==" --header "X-ONEGATE-VMID: 9" -d "{’role_name’: ’worker’, ’cardinality’ : 10, ’force’: false}"