Мониторинг статуса виртуальных машин
Содержание
Назначение
Подсистема мониторинга статуса виртуальных машин предназначена для передачи информации о виртуальных машинах от узла кластера в панель управления VMmanager KVM/Cloud. Основные цели подсистемы:
- синхронизация данных панели управления о наличии и фактическом состоянии виртуальных машин
- передача событий изменения статуса виртуальных машин с минимальным лагом по времени
- регистрация событий изменения статуса виртуальных машин
Подсистема мониторинга:
- участвует в процессе установки операционной системы на виртуальную машину.
- обеспечивает контроль дубликатов виртуальных машин
Архитектура подсистемы
Подсистема состоит из двух сервисов: vmwatch-master и vmwatch-node. Для взаимодействия между сервисами используется очередь сообщений, реализованная с помощью библиотеки ZeroMQ по схеме PUSH-PULL.
Сервис vmwatch-master
Выполняется на узле, где расположена панель управления.
Сервис принимает сообщения на указанном в конфигурационном файле IP-адресе и порту, обрабатывает их и выполняет вызовы соответствующих функций API панели управления для передачи информации об изменении состояния виртуальных машин.
Для VMmanager Cloud: при включенных облачных функциях в случае смены мастер-сервера сервис останавливается и блокируется на старом мастере, на новом мастере в панели выполняется функция настройки сервисов, которая запускает vmwatch-master и перенастраивает все сервисы vmwatch-node для передачи сообщений на новый мастер.
Сервис vmwatch-node
Выполняется на каждом узле кластера. Сервис отправляет сообщения на указанный в конфигурационном файле IP-адрес и порт. Информацию об изменении состояния виртуальных машин сервис получает от сервиса libvirtd. В случае потери соединения с libvirtd сервис завершает работу.
Конфигурация сервисов
Запуск и автозапуск сервисов контролируется системой System V (System D для CentOS 7). Настройка скриптов выполняется при установке пакетов VMmanager или обновлении до версии 5.86.
Сервис vmwatch-master и его управляющий скрипт находятся в пакете vmmanager-kvm для VMmanager KVM и в пакете vmmanager-cloud для 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 - идентификатор узла кластера, используется в сообщениях для идентификации источника сообщения
Настройка сервисов
Настройка сервисов выполняется панелью в автоматическом режиме по необходимости:
- при выполнении обновления до версии, поддерживающей подсистему мониторинга и при наличии узлов в составе кластера
- при добавлении узла в состав кластера
- при переносе мастера на другой узел (только для VMmanager Cloud при включенных облачных функциях)
Определение IP-адреса, на котором vmwatch-master будет принимать сообщения, выполняется следующим образом:
- проверяется значение параметра VmwatchListenIp конфигурационного файла панели. Только для VMmanager KVM
- если IP-адрес не задан параметром, выполняется поиск узла кластера, на котором расположена панель управления
- если локального узла кластера нет, выполняется сканирование IP-адресов на всех сетевых интерфейсах сервера, на котором располагается панель управления, и выбирается первый из списка IP-адрес, который не является локальным.
Порт, на котором vmwatch-master принимает сообщения, определяется параметром VmwatchListenPort конфигурационного файла панели. Значение по умолчанию - 1515.
Для изменения IP-адреса и/или порта запишите соответствующие параметры в конфигурационный файл панели, перезапустите панель, и вызовите функцию API vmwatch.configure. Эта функция сконфигурирует все сервисы мониторинга в соответствии с указанными параметрами.
Контроль состояния сервисов
Контроль состояния сервиса vmwatch-master выполняется панелью при вызове функции API periodic по расписанию каждые 60 минут.
Если функция контроля обнаружит, что сервис остановлен, она зарегистрирует соответствующее уведомление о проблеме, при решении которой будет выполнено повторное конфигурирование всей подсистемы монитринга.
Контроль состояния сервиса vmwatch-node выполняется панелью при вызове функции API periodic по расписанию каждые 5 минут в процессе проверки состояния панели управления узла кластера (vmmini).
Если сервис остановлен, функция контроля регистрирует соответствующее уведомление о проблеме, при решении которой будет выполнение повторное конфигурирование сервиса на этом узле кластера.
Журналы сервисов
Журнал сервиса vmwatch-master находится в файле /usr/local/mgr5/var/vmwatch-master.log, сервиса vmwatch-node в файле /usr/local/mgr5/var/vmwatch-node.log