Включил высокую доступность, а машина всё равно встала: что HA обещает на самом деле
HA обещает не работу без перерыва, а автоматический перезапуск. Разница в несколько минут, и ожидание, построенное без знания этих минут, кончается разочарованием.
AtlasPVE ·
Эта статья отвечает на
- что такое proxmox ha
- proxmox высокая доступность настройка
- proxmox ha не работает
- что такое fencing в proxmox
- proxmox узел упал vm не переехала
Вы включили высокую доступность. Узел упал, и ваша машина действительно поднялась на другом узле. Но в промежутке она несколько минут ничего не обслуживала, а вы думали, что перерыва не будет.
Здесь и кроется недоразумение: высокая доступность обещает не работу без перерыва, а автоматический перезапуск.
Две разные вещи
Перенос на ходу, это плановая работа. Вы её запускаете, машина вместе с памятью переходит на другой узел и почти не останавливается. Это инструмент ночей обслуживания.
Высокая доступность существует ради внепланового отказа. Когда узел рушится, всё, что было в его памяти, ушло вместе с ним; копировать нечего. Единственное, что можно сделать, это запустить машину с нуля на другом узле. То есть она поднимается так же, как ваш сервер поднимается после отключения электричества.
Поэтому мерой HA должно быть не «был ли перерыв», а «сколько перерыв длился».
Три вещи задают длительность
Обнаружение. Кластер не решает сразу, что узел действительно умер. Принять колебание сети за смерть и перенести машины хуже, чем не заметить смерть. Поэтому есть ожидание.
Усмирение старого узла. Этот шаг понимают неверно чаще всего, и он сердцевина этой статьи: прежде чем машина поднимется на новом узле, нужно убедиться, что старый действительно остановился. Если убедиться нельзя, кластер принудительно перезапускает этот узел.
Звучит жёстко, но другой исход, катастрофа: если старый узел на деле на ногах и оборвалась лишь сеть, одна и та же машина работает в двух местах и пишет в один диск с двух сторон. Данные портятся безвозвратно. Поэтому кластер предпочитает выключить узел, в котором не уверен.
Загрузка. Машина загружается на новом узле с самого начала. Поднимается операционная система, стартуют службы, база данных, если она есть, приходит в себя. Это время, обычное время загрузки вашей машины; сократить его кластер не может.
Сумма в большинстве установок измеряется минутами. Это не ноль и не будет нулём.
Три условия, без которых HA не работает
Большинство. HA держится на том, что кластер способен принимать решения. Без большинства не переносится ничего. Включить HA в кластере из двух узлов, значит построить страховочную сетку, которая рвётся ровно тогда, когда она нужнее всего.
Видимость диска со второго узла. Если машина должна подняться на новом узле, ей нужно дотянуться до своего диска. Машина, лежащая только на местном хранилище, никуда не уедет.
Запас. Оставшиеся узлы должны выдержать и нагрузку упавшего. Если оба узла заполнены на восемьдесят процентов, HA вас не спасёт, она уронит и второй узел.
Не включайте HA для каждой машины
Каждая машина с включённой HA становится тем, за чем кластер следит постоянно и что по собственному решению запускает или останавливает, когда сочтёт нужным. Это не всегда то, чего вы хотите.
Проверка простая: если эта машина сама поднимется на другом узле в три часа ночи, утром узнать об этом меня успокоит или встревожит? Успокаивает, включайте HA. Тревожит, не включайте; решения по этой машине принимайте сами.
Что делает Atlas
Atlas отмечает отдельно машины, оставленные управлению высокой доступности. Больше всего это помогает при обслуживании: когда перед обновлением перечисляются машины узла, отдельно видно, какие зависят от вашего решения, а какие от решения кластера. Перенести вручную и оставить управлению, это разные вещи, и путаница обходится дорого.
Небольшое, но значимое поведение: если на установке высокая доступность никогда не настраивалась, Atlas видит, что соответствующих файлов настроек нет, и вовсе не задаёт этот вопрос, возвращая пустой ответ. То есть в установке без HA продукт не занимает ни вас, ни систему поисками того, чего нет.
И одну границу стоит назвать прямо: Atlas не принимает и не меняет решение кластера по HA. Оставлять ли машину под HA, дело ваше и Proxmox; Atlas делает это видимым, а не решает за вас.
Источники
Собственная документация Proxmox. На английском, и последнее слово в этом вопросе за ней.