Подсистема мониторинга статуса виртуальных машин предназначена для передачи информации о состоянии виртуальных машин от сервиса libvirtd в панель управления VMmanager Cloud. Основные цели подсистемы:
- синхронизация данных панели управления о наличии и фактическом состоянии виртуальных машин;
- передача событий изменения статуса виртуальных машин с минимальной задержкой по времени;
- регистрация событий изменения статуса виртуальных машин.
Подсистема мониторинга:
- участвует в процессе установки операционной системы на виртуальную машину;
- обеспечивает контроль дубликатов виртуальных машин.
Архитектура подсистемы
Подсистема состоит из двух сервисов: vmwatch-master и vmwatch-node. Для взаимодействия между сервисами используется очередь сообщений. Очередь реализована с помощью библиотеки ZeroMQ по схеме PUSH-PULL.
Сервис vmwatch-master
Выполняется на узле, где расположена панель управления. Сервис принимает сообщения на указанном в конфигурационном файле IP-адресе и порту, обрабатывает их и выполняет вызовы соответствующих функций API панели управления для передачи информации об изменении состояния виртуальных машин.
Сервис vmwatch-node
Выполняется на каждом узле кластера. Сервис отправляет сообщения на указанный в конфигурационном файле IP-адрес и порт. Информацию об изменении состояния виртуальных машин сервис получает от сервиса libvirtd. В случае потери соединения с libvirtd сервис завершает работу.
Конфигурация сервисов
Запуск и автозапуск сервисов контролируется системой System V (System D для CentOS 7). Сервис vmwatch-master и его управляющий скрипт находятся в пакете vmmanager-cloud. Сервис vmwatch-node и его управляющий скрипт находятся в пакете vmmanager-pkg-vmnode.
Запуск сервисов выполняется автоматически в процессе загрузки ОС или панелью управления в процессе настройки.
После установки VMmanager сервис vmwatch-master находится в заблокированном состоянии до тех пор, пока не будет добавлен первый узел в состав кластера.
Параметры работы сервисов записываются в конфигурационных файлах vmwatch-master.conf и vmwatch-node.conf соответственно, которые располагаются в каталоге /usr/local/mgr5/etc. Конфигурационные файлы формируются панелью управления автоматически.
Конфигурационные файлы записываются в формате ИМЯ_ПАРАМЕТРА=ЗНАЧЕНИЕ, по одному параметру на строке.
Конфигурационный файл vmwatch-master.conf
Может содержать следующие параметры:
- disabled — наличие параметра со значением yes блокирует выполнение сервиса;
- listen — значение параметра в формате 'протокол://IP:порт' определяет сокет, на котором сервис принимает сообщения;
- secret — произвольная строка символов (A-Z, 0-9), значение параметра используется для аутентификации входящих сообщений.
Конфигурационный файл vmwatch-node.conf
Может содержать следующие параметры:
- connect — значение параметра в формате протокол://IP:порт определяет сокет, на который сервис отправляет сообщения;
- secret — значение параметра используется для аутентификации исходящих сообщений. Должно совпадать со значением параметра secret конфигурационного файла vmwatch-master;
- node_id — идентификатор узла кластера, используется в сообщениях для идентификации источника сообщения.
Настройка сервисов
Настройка сервисов выполняется панелью в автоматическом режиме по необходимости:
- при выполнении обновления до версии, поддерживающей подсистему мониторинга, и при наличии узлов в составе кластера;
- при добавлении узла в состав кластера;
- при переносе мастера на другой узел.
Определение IP-адреса, на котором vmwatch-master будет принимать сообщения, выполняется следующим образом:
- проверяется значение параметра VmwatchListenIp конфигурационного файла панели;
- если IP-адрес не задан параметром, выполняется поиск узла кластера, на котором расположена панель управления;
- если локального узла кластера нет, выполняется сканирование IP-адресов на всех сетевых интерфейсах сервера, на котором располагается панель управления. Выбирается первый из списка IP-адрес, который не является локальным.
Порт, на котором vmwatch-master принимает сообщения, определяется параметром VmwatchListenPort конфигурационного файла панели. Значение по умолчанию — 1515.
Для изменения IP-адреса и/или порта запишите соответствующие параметры в конфигурационный файл панели управления, перезапустите панель и вызовите функцию API vmwatch.configure. Эта функция сконфигурирует все сервисы мониторинга в соответствии с указанными параметрами.
Контроль состояния сервисов
Контроль состояния сервиса vmwatch-master выполняется панелью при вызове функции API periodic по расписанию каждые 60 минут.
Если функция контроля обнаружит, что сервис остановлен, она зарегистрирует соответствующее уведомление о проблеме, при решении которой будет выполнено повторное конфигурирование всей подсистемы мониторинга.
Контроль состояния сервиса vmwatch-node выполняется панелью при вызове функции API periodic по расписанию каждые 5 минут в процессе проверки состояния панели управления узла кластера (vmmini).
Если сервис остановлен, функция контроля регистрирует соответствующее уведомление о проблеме, при решении которой будет выполнение повторное конфигурирование сервиса на этом узле кластера.
Проверка состояния VM
Опции кластера → Политики → опция Проверять активность VM позволяет проверять состояние виртуальных машин. Алгоритм проверки состояния использует статистические данные, передаваемые сервисами мониторинга VM. Проверка состояния заключается в периодическом анализе количества отправленных по сети пакетов и количества запросов на запись в диск виртуальной машины. Сервис vmwatch-node каждые 10 мин собирает статистику со всех доменов и отсылает ее сервису vmwatch-master. Если любое из этих значений равно нулю, в списке VM выводится соответствующее предупреждение.
Журналы сервисов
Журнал сервиса vmwatch-master находится в файле /usr/local/mgr5/var/vmwatch-master.log, сервиса vmwatch-node в файле /usr/local/mgr5/var/vmwatch-node.log.