Связанность и ограждение
Общая информация
Настройки связности и ограждения -- определение механизмов контроля доступности сервера и управления его питанием.
Для обеспечения целостности данных ВМ может работать только на одном узле или любой другой службе кластера в одно и то же время. Применение в конфигурации оборудования выключателей электропитания дает возможность выполнять цикл выключения-включения питания другого узла до перезапуска служб высокой доступности этого узла во время процесса отказов. Это предотвращает от одновременного доступа 2 узлов к одним и тем же данным и к их разрушению. Ограждающие (fence) устройства используются для обеспечения гарантии целостности данных при сбоях в любых условиях.
В окне Серверы – <имя сервера> – Настройки связности можно получить информацию о текущих настройках:
-
тип ограждения;
-
тип связности;
-
пулы данных.
Также существует возможность изменения настроек. При нажатии на кнопку Изменить настройки в открывшемся окне выбрать из раскрывающегося списка тип ограждения и тип связности, после чего подтвердить операцию, нажав кнопку Отправить.
Дополнительно можно и рекомендуется изменять настройки целиком на весь кластер во вкладке Кластеры – <имя кластера> – Настройки связности.
Связность
Тип связности узла отвечает за метод принятия решения о том, что на сервере произошла авария.
Может быть следующих типов:
-
KERNEL – контролирует исполнение модулей системы управления на сервере. Контроллер открывает поток данных (grpc stream) до каждого узла по его UUID (hostname) и отправляет узлу свой IPv4-адрес. Узел при открытом потоке данных сверяет присланный ему адрес контроллера с адресом из его конфигурации и при совпадении раз в 1 секунду посылает через поток данных heartbeat. Контроллер при каждом получении heartbeat обновляет 2 метки с временем жизни 30 секунд (error label) и 60 секунд (hermit label) о доступности узла;
-
KERNEL_IPMI – дополнительно раз в 5 секунд проверяется доступность IPMI интерфейса сервера с контроллера;
-
KERNEL_STORAGE – дополнительно раз в 5 секунд проверяется метаданные пула данных сервера на общем с контроллером файловом сетевом хранилище;
-
AUTO – кроме проверки KERNEL связи при наличии настроек IPMI проверяется его доступность, при наличии общего пула данных проверяется и последний.
Ограждение
Ограждение - процесс получения подтверждения того, что аварийный сервер перешел в состояние, не допускающее повреждения ВМ (по умолчанию - выключен). Тип ограждения может принимать несколько значений и, в соответствии с этим, определяется каким образом система управления будет пытаться оградить сервер при обнаружении аварии. Сервис ограждения циклически пытается оградить узлы, находящиеся в статусе HERMIT (Ограждается) в соответствии с настройками.
Тип ограждения узла может быть следующим:
-
IPMI: использует управляющие команды ВМС для выключения;
-
VIRTUAL: признает сервер выключенным через 30 с после наступления аварии (по умолчанию);
-
SSH: использует подключение SSH для передачи команды выключения;
-
NODE: использует вызов управляющих команд через систему управления кластером;
-
AUTO: использует все возможные варианты последовательно.
В окне Настройки – Контроллер в Настройках ограждения есть редактируемые поля:
-
начальный тайм-аут между попытками ограждения узлов (по умолчанию - 15 секунд);
-
максимальный тайм-аут между попытками ограждения узлов (по умолчанию - 600 секунд);
-
множитель увеличения тайм-аута между попытками (по умолчанию - 2).
-
перевод узла в статус Failed при достижении максимального таймаута (по умолчанию - выкл).
Пример ограждения. Тип ограждения узла IPMI. Настройки ограждения контроллера по умолчанию.
Сразу после перехода узла в статус HERMIT (Ограждается) производится первая попытка ограждения узла с контроллера. В случае удачного выключения узла он переходит в статус FAILED (Ошибка). Если первая попытка не удалась, то через 15 секунд (начальный тайм-аут между попытками ограждения узлов) попытка повторяется. Если вторая попытка не удалась, то через 15 секунд * 2 (2 - множитель увеличения тайм-аута между попытками) попытка повторяется. Если третья попытка не удалась, то через 15 секунд * 4 попытка повторяется. Тайм-аут будет увеличиваться до 600 секунд (максимальный тайм-аут между попытками ограждения узлов) и продолжаться до бесконечности, пока оператор либо не оградит узел вручную, либо ограждение закончится успешно.
Оптимальный выбор типов связности и ограждения
Оптимальным считается использование типа ограждения IPMI и типа связности AUTO. Тип ограждения IPMI позволяет получить однозначное подтверждение о том, что сервер был огражден, а контроль модулей управления сервером реагирует также на проблемы в работе гипервизора.
Статусы узла и переходы между ними
Статусы узла:
-
CREATING (Создается) - узел находится в процессе инсталляции;
-
ACTIVE (Исправно) - узел активен и работает;
-
FAILED (Ошибка) - узел был недоступен и его оградили (fence), виртуальные машины могут быть перезапущены на других узлах;
-
ERROR (Ошибка) - узел недоступен;
-
HERMIT (Ограждается) - узел недоступен продолжительное время и его необходимо оградить для перезапуска виртуальных машин на других узлах;
-
DELETING (Удаляется) - узел находится в процессе удаления из кластера;
-
SERVICE (Сервисный режим) - узел находится на техобслуживании.
При установке узел сначала находится в статусе CREATING (Создается) и после успешного добавления переходит в статус ACTIVE (Исправно). В случае неуспешного добавления переходит в статус FAILED (Ошибка). В этом случае рекомендуется посмотреть в журнале задач ошибку задачи добавления, разобраться с ошибкой, форсированно удалить узел и добавить его снова.
При потере связи контроллера с узлом последний переходит из статуса ACTIVE (Исправно) сначала в статус ERROR (Ошибка), далее по истечению дополнительного времени и отсутствии связи в статус FAILED (Ошибка), если узел на контроллере, или в статус HERMIT (Ограждается) для всех остальных узлов. Подробности ограждения описаны выше. При переходе узла в статус ERROR (Ошибка) контроллер пытается подключиться по SSH к узлу и перезапустить супервизор контроллера.
Контроллер постоянно циклически пытается опросить все известные ему узлы. Если узел НЕ ACTIVE и НЕ SERVICE и связь с ним появляется, то он переходит автоматически в статус ACTIVE (Исправно).
Пользователь для перевода узла на техобслуживание должен перевести узел в статус SERVICE (Сервисный режим). При этом все принадлежащие узлам сущности и связи узла переходят в статус FAILED (Ошибка). ВМ узла перед переводом должны быть выключены.
При запуске задачи удаления узел сначала переходит в статус DELETING (Удаляется), далее после успешного последовательного выполнения всех внутренних операций очистки узла от привязок к контроллеру он удаляется из базы системы управления. После неуспешного удаления переходит в статус FAILED (Ошибка). В этом случае рекомендуется посмотреть в журнале задач ошибку задачи удаления, разобраться с ошибкой на будущее и форсированно удалить узел. В случае, если узел не находится в статусе ACTIVE (Исправно), его можно удалить форсированно, то есть исключительно из базы системы управления.