На блоге vSphere появилась отличная статья о сервисах семейства vCenter Server Watchdog, которые обеспечивают мониторинг состояния различных компонентов vCenter, а также их восстановление в случае сбоев. Более подробно о них также можно прочитать в VMware vCenter Server 6.0 Availability Guide.
Итак, сервисы Watchdog бывают двух типов:
PID Watchdog - мониторит процессы, запущенные на vCenter Server.
API Watchdog - использует vSphere API для мониторинга функциональности vCenter Server.
Сервисы Watchdog пытаются рестартовать службы vCenter в случае их сбоя, а если это не помогает, то механизм VMware перезагружает виртуальную машину с сервером vCenter на другом хосте ESXi.
PID Watchdog
Эти службы инициализируются во время инициализации самого vCenter. Они мониторят только службы, которые активно работают, и если вы вручную остановили службу vCenter, поднимать он ее не будет. Службы PID Watchdog, контролируют только лишь наличие запущенных процессов, но не гарантируют, что они будут обслуживать запросы (например, vSphere Web Client будет обрабатывать подключения) - этим занимается API Watchdog.
Вот какие сервисы PID Watchdog бывают:
vmware-watchdog - этот watchdog обнаруживает сбои и перезапускает все не-Java службы на сервере vCenter Server Appliance (VCSA).
Java Service Wrapper - этот watchdog обрабатывает сбои всех Java-служб на VCSA и в ОС Windows.
Likewise Service Manager - данный watchdog отвечает за обработку отказов всех не-Java служб сервисов platform services.
Windows Service Control Manager - отвечает за обработку отказов всех не-Java служб на Windows.
vmware-watchdog
Это шелл-скрипт (/usr/bin/watchdog), который располагается на виртуальном модуле VCSA. Давайте посмотрим на его запущенные процессы:
Давайте разберем эти параметры на примере наиболее важной службы VPXD:
-a
-s vpxd
-u 3600
-q 2
Это означает, что:
vpxd (-s vpxd) запущен (started), для него работает мониторинг, и он будет перезапущен максимум дважды в случае сбоя (-q 2). Если это не удастся в третий раз при минимальном аптайме 1 час (-u 3600 - число секунд), виртуальная машина будет перезагружена (-a).
Он основан на Tanuki Java Service Wrapper и нужен, чтобы обнаруживать сбои в Java-службах vCenter (как обычного, так и виртуального модуля vCSA). Вот какие службы мониторятся:
Если Java-приложение или JVM (Java Virtual Machine) падает, то перезапускается JVM и приложение.
Likewise Service Manager
Это сторонние средства Likewise Open stack от компании BeyondTrust, которые мониторят доступность следующих служб, относящихся к Platform Services среды vCenter:
VMware Directory Service (vmdir)
VMware Authentication Framework (vmafd, который содержит хранилище сертификатов VMware Endpoint Certificate Store, VECS)
VMware Certificate Authority (vmca)
Likewise Service Manager следит за этими сервисами и перезапускает их в случае сбоя или если они вываливаются.
mgmt01vc01.sddc.local:~ # /opt/likewise/bin/lwsm list | grep vm vmafd running (standalone: 5505) vmca running (standalone: 5560) vmdir running (standalone: 5600)
Вместо параметра list можно также использовать start и stop, которые помогут в случае, если одна из этих служб начнет подглючивать. Вот полный список параметров Likewise Service Manager:
list List all known services and their status autostart Start all services configured for autostart start-only <service> Start a service start <service> Start a service and all dependencies stop-only <service> Stop a service stop <service> Stop a service and all running dependents restart <service> Restart a service and all running dependents refresh <service> Refresh service's configuration proxy <service> Act as a proxy process for a service info <service> Get information about a service status <service> Get the status of a service gdb <service> Attach gdb to the specified running service
А вот таким образом можно узнать детальную информацию об одном из сервисов:
Помните также, что Likewise Service Manager отслеживает связи служб и гасит/поднимает связанные службы в случае необходимости.
API Watchdog
Этот сервис следит через vSphere API за доступностью самого важного сервиса vCenter - VPXD. В случае сбоя, этот сервис постарается 2 раза перезапустить VPXD, и если это не получится - он вызовет процедуру перезапуска виртуальной машины механизмом VMware HA.
Эти службы инициализируются только после первой загрузки после развертывания или обновления сервисов vCenter. Затем каждые 5 минут через vSphere API происходит аутентификация и опрос свойства rootFolder для корневой папки в окружении vCenter.
Далее работает следующий алгоритм обработки отказов:
Первый отказ = Restart Service
Второй отказ = Restart Service
Третий отказ = Reboot Virtual Machine
Сброс счетчика отказов происходит через 1 час (3600 секунд)
Перед рестартом сервиса VPXD, а также перед перезагрузкой виртуальной машины, служба API Watchdog генерирует лог, который можно исследовать для решения проблем:
storage/core/*.tgz - на виртуальном модуле VCSA
C:\ProgramData\VMware\vCenterServer\data\core\*.tgz - не сервере vCenter
Конфигурация сервиса API Watchdog (который также называется IIAD - Interservice Interrogation and Activation Daemon) хранится в JSON-формате в файле "iiad.json", который можно найти по адресу /etc/vmware/ на VCSA или C:\ProgramData\VMware\vCenterServer\cfg\iiad.json на Windows-сервер vCenter:
requestTimeout – дефолтный таймаут для запросов по умолчанию.
hysteresisCount – позволяет отказам постепенно "устаревать" - каждое такое значение счетчика при отказе, число отсчитываемых отказов будет уменьшено на один.
rebootShellCmd – указанная пользователем команда, которая будет исполнена перед перезапуском ВМ.
restartShellCmd – указанная пользователем команда, которая будет исполнена перед перезапуском сервиса.
maxTotalFailures – необходимое число отказов по всем службам, которое должно случиться, чтобы произошел перезапуск виртуальной машины.
needShellOnWin – определяет, нужно ли запускать сервис с параметром shell=True на Windows.
watchdogDisabled – позволяет отключить API Watchdog.
vpxd.watchdogDisabled – позволяет отключить API Watchdog для VPXD.
createSupportBundle – нужно ли создавать support-бандл перед перезапуском сервиса или рестартом ВМ.
automaticServiceRestart – нужно ли перезапускать сервис при обнаружении сбоя или просто записать это в лог.
automaticSystemReboot – нужно ли перезапускать ВМ при обнаружении сбоя или просто записать в лог эту рекомендацию.