7.4.6 Диагностика вычислительного узла

Одним из способов диагностики вычислительного узла облачной инфраструктуры является создание виртуальной машины (ВМ), используя полный функционал TIONIX Cloud Platform, TIONIX VDI и службы OpenStack Nova (Compute service). При этом будет также задействован функционал гипервизора, подсистем сетевого взаимодействия и служб хранения данных.

Примечание.

Алгоритм создания виртуальной машины приведен в конце раздела (Раздел 7.4.6.4).

Ниже, в рекомендованной последовательности, изложены основные способы «послойной» диагностики ВУ:

Если результат диагностики – отрицательный (обнаружен сбой в работе), то следует сначала детально рассмотреть возможные причины, используя журнал работы агента/службы/гипервизора (лог).

Если причины не удалось установить по журналам, то следует перейти к диагностике на более низком уровне, в направлении подлежащего слоя (спуск от агента к гипервизору).

7.4.6.1 Диагностика агента TIONIX

Статус агента TIONIX, функционирующего на ВУ, проверяется командой:

systemctl status tionix-agent

Журнал работы агента TIONIX может быть просмотрен командой:

tail -n 500 /var/log/tionix/agent.log

Примечание.

Утилита tail выводит из файла журнала не более -n последних записанных строк (в приведенных выше командах указано 500).

7.4.6.2 Диагностика служб OpenStack

Выполните команду:

# openstack compute service list

Пример правильного вывода команды:

+-----+------------------+---------------------+----------+---------+-------+----------------------------+
|  ID | Binary           | Host                | Zone     | Status  | State | Updated At                 |
+-----+------------------+---------------------+----------+---------+-------+----------------------------+
| 101 | nova-consoleauth | control1.tionix.loc | internal | enabled | up    | 2020-1103T09:31:32.000000  |
| 104 | nova-consoleauth | control3.tionix.loc | internal | enabled | up    | 2020-11-03T09:31:37.000000 |
| 107 | nova-consoleauth | control2.tionix.loc | internal | enabled | up    | 2020-11-03T09:31:32.000000 |
| 110 | nova-scheduler   | control1.tionix.loc | internal | enabled | up    | 2020-11-03T09:31:39.000000 |
| 113 | nova-scheduler   | control3.tionix.loc | internal | enabled | up    | 2020-11-03T09:31:34.000000 |
| 116 | nova-scheduler   | control2.tionix.loc | internal | enabled | up    | 2020-11-03T09:31:34.000000 |
| 119 | nova-conductor   | control1.tionix.loc | internal | enabled | up    | 2020-11-03T09:31:37.000000 |
| 140 | nova-compute     | compute5.tionix.loc | nova     | enabled | up    | 2020-11-03T09:31:34.000000 |
| 143 | nova-compute     | compute4.tionix.loc | nova     | enabled | up    | 2020-11-03T09:31:30.000000 |
| 146 | nova-compute     | compute1.tionix.loc | nova     | enabled | up    | 2020-11-03T09:31:40.000000 |
| 149 | nova-compute     | compute2.tionix.loc | nova     | enabled | up    | 2020-11-03T09:31:39.000000 |
| 160 | nova-conductor   | control2.tionix.loc | internal | enabled | up    | 2020-11-03T09:31:33.000000 |
| 191 | nova-conductor   | control3.tionix.loc | internal | enabled | up    | 2020-11-03T09:31:32.000000 |
+-----+------------------+---------------------+----------+---------+-------+----------------------------+

Контроль состояния агентов сетевой службы Neutron выполняется командой:

# openstack network agent list

Пример правильного вывода команды:

+--------------------------------------+--------------------+---------------------+-------------------+-------+-------+---------------------------+
| ID                                   | Agent Type         | Host                | Availability Zone | Alive | State | Binary                    |
+--------------------------------------+--------------------+---------------------+-------------------+-------+-------+---------------------------+
| 0062c74b-8c74-426f-b1c5-03024ec61652 | Linux bridge agent | compute3.tionix.loc | None              | :-)   | UP    | neutron-linuxbridge-agent |
| 051a184b-4ea3-4b39-8a7f-dcdfc56bdbf2 | L3 agent           | control3.tionix.loc | nova              | :-)   | UP    | neutron-l3-agent          |
| 075e6b5f-97ab-4e3c-a7cd-1be875513c43 | L3 agent           | control2.tionix.loc | nova              | :-)   | UP    | neutron-l3-agent          |
| 0a817ca3-f5a2-4a40-b04d-003309dc5682 | Metadata agent     | control1.tionix.loc | None              | :-)   | UP    | neutron-metadata-agent    |
| 0b0a14ad-9718-4ca1-9f14-625aad331afd | Open vSwitch agent | compute4.tionix.loc | None              | XXX   | UP    | neutron-openvswitch-agent |
| 0b84f60a-fcb4-4c28-948d-a4fafb0b0de2 | Linux bridge agent | control2.tionix.loc | None              | :-)   | UP    | neutron-linuxbridge-agent |
| 135f413c-b234-4c71-a8b0-cf8663405644 | L3 agent           | compute5.tionix.loc | nova              | XXX   | UP    | neutron-l3-agent          |
| 14b39eeb-891d-483e-9a5e-051fd7b3ba31 | Linux bridge agent | compute5.tionix.loc | None              | :-)   | UP    | neutron-linuxbridge-agent |
| 15af0459-3626-43b3-8f35-7099183d94fc | Linux bridge agent | compute2.tionix.loc | None              | :-)   | UP    | neutron-linuxbridge-agent |
| 1975417c-ba6e-4a9e-81a4-ef871bc5a1a5 | DHCP agent         | control2.tionix.loc | nova              | :-)   | UP    | neutron-dhcp-agent        |
| 2b104475-76ec-4e99-a381-1e9bef2bc8da | Open vSwitch agent | control2.tionix.loc | None              | XXX   | UP    | neutron-openvswitch-agent |
| 31cf59a5-ee21-4e5d-8409-c92c77efbe0c | Open vSwitch agent | control1.tionix.loc | None              | XXX   | UP    | neutron-openvswitch-agent |
| 446dc067-499f-4ffc-b9eb-8744df2da2cc | DHCP agent         | control1.tionix.loc | nova              | :-)   | UP    | neutron-dhcp-agent        |
| 54940e2d-c1cd-41ca-a549-caafd4b2de9d | Linux bridge agent | compute4.tionix.loc | None              | :-)   | UP    | neutron-linuxbridge-agent |
| 5cb7cae8-092c-47f8-86a8-43ed3a1c7471 | Linux bridge agent | control1.tionix.loc | None              | :-)   | UP    | neutron-linuxbridge-agent |
| 629314a4-2ff6-409c-b4b4-103f46dba3a7 | DHCP agent         | control3.tionix.loc | nova              | :-)   | UP    | neutron-dhcp-agent        |
| 71524702-d4b9-44f6-bbd9-d74f8b8be098 | Open vSwitch agent | control3.tionix.loc | None              | XXX   | UP    | neutron-openvswitch-agent |
| 732dc76e-8088-4465-bb89-adb3283a653d | Metadata agent     | control2.tionix.loc | None              | :-)   | UP    | neutron-metadata-agent    |
| 7b68221d-8797-4284-8bd5-da9d43ce4628 | L3 agent           | compute2.tionix.loc | nova              | XXX   | UP    | neutron-l3-agent          |
| 88bb9bd0-af51-4c3c-ae35-c3e4f312ad78 | L3 agent           | control1.tionix.loc | nova              | :-)   | UP    | neutron-l3-agent          |
| a41e1bf0-d851-487c-ab48-7d5943cda972 | Open vSwitch agent | compute2.tionix.loc | None              | XXX   | UP    | neutron-openvswitch-agent |
| ae9cb8f7-5994-4d11-bfaf-8838ed6be00b | Open vSwitch agent | compute1.tionix.loc | None              | XXX   | UP    | neutron-openvswitch-agent |
| bb19cee1-efec-4367-98f7-d279acd96f13 | Metadata agent     | control3.tionix.loc | None              | :-)   | UP    | neutron-metadata-agent    |
| d174c783-ed87-4b6f-ad9d-7d08f9d32377 | Linux bridge agent | control3.tionix.loc | None              | :-)   | UP    | neutron-linuxbridge-agent |
| d3fa607d-99d2-41d5-ba5e-3ec225dcf706 | Open vSwitch agent | compute5.tionix.loc | None              | XXX   | UP    | neutron-openvswitch-agent |
| d79c7165-66d6-4860-b4e7-42f46b169b9b | Linux bridge agent | compute1.tionix.loc | None              | :-)   | UP    | neutron-linuxbridge-agent |
| e4dc67aa-03f0-4683-af36-0c717df56efb | L3 agent           | compute1.tionix.loc | nova              | XXX   | UP    | neutron-l3-agent          |
+--------------------------------------+--------------------+---------------------+-------------------+-------+-------+---------------------------+

Журнал службы управления ВУ (Nova) может быть просмотрен с помощью команды:

tail -n 500 /var/log/nova/nova-compute.log

Аналогично может быть просмотрен журнал сетевой службы:

tail -n 500 /var/log/neutron/neutron-openvswitch-agent.log

Проверка статусов вычислительной и сетевой служб OpenStack выполняется с помощью команд:

systemctl status openstack-nova-compute
systemctl status neutron-openvswitch-agent

Дополнительная информация о верификации вычислительной службы приведена в официальной документации OpenStack [1].

7.4.6.3 Диагностика гипервизора

Проверка статуса службы гипервизора (активна/неактивна):

systemctl status libvirtd

Проверка фактического статуса обработки запросов к гипервизору может быть осуществлена выполнением команды:

virsh list

Гипервизор ведет журналы эксплуатации ВМ (*.log), как правило, помещенные в /var/log/libvirt/qemu. Для доступа к этим журналам требуются права суперпользователя.

Внимание.

Диагностику гипервизора следует согласовать со службой Технической Поддержки оператора, осуществляющего сопровождение эксплуатации ОП TIONIX.

7.4.6.4 Алгоритм создания виртуальной машины

При создании ВМ и подключении ее к сети и постоянному хранилищу в Openstack происходит цепочка следующих событий:

  1. Формируется запрос на создание машины.

    Запрос может быть отправлен через Horizon (Dashboard) или же запрос через CLI. Первое что происходит – это авторизация вашего запроса на Keystone – может ли быть создана машина, имеет ли пользователь право использовать данную сеть, хватает ли у проекта квоты и т.д.

  2. Keystone производит аутентификацию запроса.

    Служба аутентификации генерирует в ответном сообщении auth-токен, который будет использован далее. Получив ответ от Keystone, запрос отправляется в сторону Nova (nova api).

  3. Nova-api проверяет валидность запроса.

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

  4. Nova-api создает в nova-database запись о новой ВМ и передает запрос на создание в Nova-scheduler.

  5. Nova-scheduler производит выбор хоста (Compute-ноды) для разворачивания ВМ.

    Разворачивание ВМ производится на основании заданных параметров, весов и зон. Запись об этом и идентификатор ВМ записываются в nova-database.

  6. Nova-scheduler обращается к Nova-compute с запросом на развертывание инстанса.

    Nova-compute обращается в Nova-conductor для получения информации о параметрах машины. Nova-conductor является элементом службы Nova, выполняющим роль прокси сервера (между nova-database и Nova-compute). Он ограничивает количество запросов в сторону nova-database, во избежание проблем с консистентностью базы данных, таким образом сокращая загрузку.

  7. Nova-conductor получает из nova-database запрошенную информацию и передает ее Nova-compute.

  8. Nova-compute обращается к службе образов Glance (для получения ID образа).

    Glance проводит валидацию запроса в Keystone и возвращает запрошенную информацию.

  9. Nova-compute обращается к neutron для получения информации о параметрах сети.

    Аналогично Glance, Neutron проводит валидацию запроса в Keystone, после чего создает запись в database (идентификатор порта и т д), создает запрос на создание порта и возвращает запрошенную информацию в Nova-compute.

  10. Nova-compute обращается к Сinder с запросом выделения тома для ВМ (volume).

    Аналогично Glance, служба Cinder проводит валидацию запроса в Keystone, создает запрос на создание тома (volume) и возвращает запрошенную информацию.

  11. Nova-compute обращается к службе гипервизора (libvirt).

    Служба гипервизора обрабатывает запрос и осуществляет разворачивание виртуальной машины с заданными параметрами в среде гипервизора (на Compute-ноде).

Сноски

[1]https://docs.openstack.org/nova/latest/install/verify.html