Оглавление

Дополнительная информация

Общие сведения

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

В ПК СВ служба сервера OneGate используется для обмена служебными данными между виртуальными машинами, логически объединенными в сервис. Таким образом обеспечивается автоматическая перенастройка сервиса в соответствии с заданными правилами (политикой эластичности) – см. Служба OneFlow.

Служба сервера 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)

:host

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

:port

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

:ssl_server

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

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

:auth

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

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

:core_auth

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

  • 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_ENDPOINT производится в конфигурационном файле /etc/one/one.d/base.conf

Пример

ONEGATE_ENDPOINT = "http://192.168.0.5:5030"
CODE

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

sudo systemctl restart opennebula

Использование службы сервера OneGate

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

Настройка шаблона ВМ

В интерфейсе командной строки

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

Пример

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

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

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

В веб-интерфейсе ПК СВ

Чтобы изменить параметры шаблона, в веб-интерфейсе ПК СВ необходимо выполнить действия, описанные ниже.

  1. В меню слева выбрать пункт меню «Шаблоны — ВМ» и на открывшейся странице Шаблоны ВМ выбрать необходимый шаблон.
  2. На открывшейся странице Шаблон ВМ нажать на кнопку [Обновить].
  3. На открывшейся странице Изменить шаблон ВМ во вкладке Контекст установить флаг Добавить токен OneGate и нажать на кнопку [Обновить].

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

При развертывании экземпляра ВМ в секции 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
CODE

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

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

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

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

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

SERVICE 1 
NAME 	: PANACEA service 
STATE 	: RUNNING 

ROLE master 
VM 8 
NAME 	: master_0_(service_1) 

ROLE slave 
VM 9 
NAME 	: slave_0_(service_1)
CODE

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

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
CODE

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

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

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

VROUTER 0 
NAME	: vr 
VMS		: 1
CODE

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

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

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

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

Пример

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

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

VNET 
ID : 0
CODE

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

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

Пример

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

onegate vm update 9 --data ACTIVE=YES

Пример вывода после выполнения команды 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": [ ] 
			} 
		} 
}
CODE

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

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

Пример

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

onegate vm update 9 --erase ACTIVE

Пример вывода после выполнения команды 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": [ ] 
			} 
		} 
}
CODE

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

С помощью клиента 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 можно управлять количеством ВМ в составе сервиса.

Пример

Увеличение количества ВМ с ролью "ведомый" (slave) до 2:

onegate service scale --role slave --cardinality 2

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

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
CODE

Взаимодействие с 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"
...
CODE

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

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

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

Пример

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"
		}
	}
}
CODE

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

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": {
                            // служебная информация о ВМ
                        }

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

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

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

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"
      }
  }
}
CODE

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

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

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"
      }
    }
  }
CODE

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

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

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"
...
CODE

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

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"
...
CODE

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

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}"