Просто из любопытства я протестировал несколько вещей, чтобы нарушить работу кластера — или, по крайней мере, ресурса высокой доступности (HA). Это довольно длинный пост, читайте его для развлечения или пропустите. В конце концов, я могу воспроизвести проблемную ситуацию в моей тестовой конфигурации... У меня есть: чистый виртуальный Test-Cluster из шести узлов (pna,...pnf), поддерживаемый двумя медленными узлами proof-of-concept HC-Ceph (pnd/pne). Я создал группу высокой доступности "HATEST" с одной VM (antix), которая работает на узле pnd и запускает "ping" в терминале — для визуального мониторинга. Изначально в этой группе HA было три узла. Но настоящая проверка — это выключить все узлы, которые важны. С тремя из них я бы потерял как PVE-Quorum, так и Ceph (настроенный для size=4/min_size=2) был бы очень недоволен. Поэтому я сократил количество узлов до двух для HA. Теперь я могу тестировать:
1) Ручная миграция между этими узлами HA работает, как и ожидалось, без каких-либо заминок.
2) Выключение узла (pnd) с работающей тестовой VM — гостевая VM выключилась (так как Policy=Conditional) и затем перезапустилась на другом узле (pne).
Это, конечно, не то, что я хотел. Только сейчас я изменил Policy с Conditional на Policy Migrate.
3) Из чистого любопытства: ручная миграция с pnd на pnf — миграция с узла вне определенной группы HA работает! Но затем VM мигрирует обратно с этого не-HA-узла на pnd через несколько секунд.
4) Выключение узла (pnd) с работающей тестовой VM — это инициирует миграцию (pnd-->pne), гостевая VM остается "включенной"; никаких заминок. При повторном включении этого тестового узла VM мигрирует обратно на свой исходный узел (pnd).
Все вышеперечисленные тесты проводились в нормальных рабочих параметрах и работали так, как и ожидалось. Я сделал их, чтобы подтвердить это для моей тестовой конфигурации.
А теперь перейдем к более интересным тестам. Базовая конфигурация: все шесть узлов включены и работают, тестовая VM находится на pnd, включена и работает, с видимым "ping".
5) Выключение всех узлов в группе HA одновременно — запуск через GUI с трехсекундной задержкой для щелчков; узел, на котором находится тестовая VM (pnd), первое удивление: VM мигрировала из определенной группы на узел pna. Заминок нет, но неожиданно. Это задокументированное поведение..., теперь я устанавливаю флаг "restricted" в моей группе HATEST. VM автоматически мигрировала обратно к источнику, как ожидалось. Все узлы снова включены; VM на pnd.
6) Выключение всех узлов в группе HA одновременно — запуск через GUI с трехсекундной задержкой; узел, на котором находится тестовая VM (pnd), миграция не началась. Выключение вторичного узла (pne) завершилось, гостевая система продолжает работу на исходном узле! Выключение pnd, очевидно, отменилось. Я подождал пять минут.
Эта ситуация не чистая: VM все еще работает на pnd, узел pnd «засерен» (pvestatd?), но я могу щелкнуть «Выключить» из WebGUI другого узла — никакой реакции. SSH работает, "qm list" подтверждает, что VM находится здесь.
Устранение неполадок:
Код:
root@pnd:~# shutdown -h now
Failed to set wall message, ignoring: Transport endpoint is not connected
Call to PowerOff failed: Transport endpoint is not connected
root@pnd:~# systemctl start pvestatd
Failed to start pvestatd.service: Transaction for pvestatd.service/start is destructive (systemd-binfmt.service has 'stop' job queued, but 'start' is included in transaction).
See system logs and 'systemctl status pvestatd.service' for details.
root@pnd:~# systemctl start pvescheduler.service
Failed to start pvescheduler.service: Transaction for pvescheduler.service/start is destructive (dev-dm\x2d2.swap has 'stop' job queued, but 'start' is included in transaction).
See system logs and 'systemctl status pvescheduler.service' for details.
Пока я знаю, как принудительно выключить эту систему... какой был бы хороший способ продолжить???
Код:
root@pnd:~# qm shutdown 29101
Requesting HA stop for VM 29101 # ДЕЙСТВУЕТ
И теперь узел выключается тоже! Выключение обоих узлов этой двухузловой группы HA прошло не очень хорошо. Включите оба узла. Запрос состояния HA сейчас "stopped", что кажется неправильным. Вероятно, из-за моего ручного "qm shutdown".
Вернемся к нормальному состоянию: все шесть узлов включены; тестовая VM видна с "ping" на pnd.
7) То же самое, что и 5+6, но в обратном порядке: сначала выключите неиспользуемый HA-узел pne, затем pnd с работающей тестовой VM; снова с ~трехсекундной задержкой между ними. pne выключается быстро, как и в 6): "qm shutdown" работает, и узел выключается тоже.
Теперь я, возможно, нашел виновника: нет агента в тестовой VM! ACPI, кажется, недостаточно для моей цели? Установите qemu-guest-agent!
Вернемся к нормальному состоянию: все шесть узлов включены; тестовая VM видна с "ping" на pnd.
Теперь С гостевым агентом...
8) То же самое, что и 7 = выключить pne + pnd --> кажется, что гостевой агент ничего не меняет, вторичный HA-узел pne выключается, узел с VM остается включенным, и VM продолжает работать в WebGui оба узла показаны выключенными через несколько минут; оба не поддаются управлению, как и раньше; VM все еще работает! Снова: ssh --> "qm shutdown" требуется, чтобы выключить VM, а затем узел следует автоматически.
Вернемся к нормальному состоянию: все шесть узлов включены; тестовая VM видна с "ping" на pnd.
9) Замедлим: просто выключите в настоящее время неиспользуемый pne. Затем выключите единственный оставшийся узел в группе HATEST, на котором работает тестовая VM. Выключение pne работает - конечно! Выключение pnd НЕ работает, оно просто игнорируется!? Через (ровно) пять минут он снова достиг этого странного "засеренного" (не: красный крест), "не подлежит управлению, но VM продолжает работать" состояния. Без ssh я ничего не мог сделать, VM все еще работает... в течение 30(!) минут. Затем он выключается! После этого длительного тайм-аута: отсутствующие службы перезапускаются; WebGUI снова активен; VM перезагрузилась.
У меня нет хорошего объяснения 30-минутного нокаута. Это кажется удивительным, и поведение не то, что я хочу. Для аварийного выключения (ИБП) это, вероятно, плохо.
Воспроизводимый результат этой последовательности тестов на данный момент: при вызове "выключение" на последний стоящий узел группы HA с одной работающей VM я сталкиваюсь с проблемным состоянием: через пять минут этот узел больше не поддается управлению в WebGui, но VM продолжает работать на этом самом узле. Через 30 минут система снова поддается управлению. Является ли это ожидаемым поведением? Я не уверен...
PS: все узлы имеют два виртуальных OSD для Ceph. Я проигнорировал это намеренно, так как size=4/min_size=2 должно убирать серьезные проблемы подальше.