Связность и ограждение
Внимание
Описанные в данном разделе механизмы ограждения и связности — это проприетарная реализация SpaceVM. Данные механизмы не связаны с механизмами ограждения GFS (corosync и dlm).
Механизмы связности ограждения работают всегда, их дополнительное включение не требуется. Они не связаны с механизмами высокой доступности, хотя высокая доступность напрямую связана с их работой.
Общая информация
Настройки связности и ограждения — определение механизмов контроля доступности серверов кластера и управления их питанием.
Раздел Cвязность и ограждения позволяет централизованно назначить настройки связности и ограждения всех узлов кластера.
Индивидуальная настройка связности и ограждения узлов кластера производится в настройках каждого узла отдельно.
Централизованные настройки для узла идентичны настройкам для кластера.
Для обеспечения целостности данных ВМ может работать только на одном узле или любой другой службе кластера в одно и то же время. Применение в конфигурации оборудования выключателей электропитания дает возможность выполнять цикл выключения-включения питания другого узла до перезапуска служб высокой доступности этого узла во время процесса отказов. Это предотвращает одновременный доступ 2 узлов к одним и тем же данным и их разрушение. Ограждающие (fence) устройства используются для обеспечения гарантии целостности данных при сбоях в любых условиях.
В окне Кластеры – <Имя кластера> – Связность и ограждение можно получить информацию о текущих настройках:
-
Тип ограждения
-
Тип связности
-
Пулы данных.
Также существует возможность изменения настроек. При нажатии на кнопку Изменить настройки в открывшемся окне необходимо выбрать из раскрывающегося списка тип ограждения и тип связности, после чего подтвердить операцию, нажав кнопку ОК.
Дополнительно возможно изменять настройки каждого сервера отдельно во вкладке Серверы – <Имя сервера> – Связность и ограждение.
Ограждение
Ограждение — это процесс получения подтверждения того, что аварийный сервер перешел в состояние, не допускающее повреждения ВМ (по умолчанию - выключен).
Тип ограждения может принимать несколько значений и, в соответствии с этим определяется, каким образом система управления будет пытаться оградить сервер при обнаружении аварии. Сервис ограждения циклически пытается оградить узлы, находящиеся в статусе HERMIT (Нет соединения), в соответствии с настройками.
Тип ограждения по умолчанию: VIRTUAL.
Типы ограждений
-
IPMI.
Использует управляющие команды ВМС для форсированного выключения узла. Контроллер делает попытки подключиться к IPMI узла и послать команду форсированного выключения узла. Контроллер должен иметь доступ к данному интерфейсу: контроллер и IPMI узла должны либо быть в одной сети, либо должна быть настроена маршрутизация между данными сетями.
При данном типе ограждение узла будет признано успешным только в случае, если IPMI-интерфейс был доступен и подтвердил, что сервер действительно выключен.
Таким образом, контроллер не признает огражденным узел, если у узла было выключено питание.
Примечание
При включении данного типа ограждения необходимо убедиться, что у всех узлов кластера настроен IP-адрес IPMI. Также необходимо убедиться, что контроллер имеет доступ к данному интерфейсу: контроллер и IPMI узла должны либо быть в одной сети, либо должна быть настроена маршрутизация между данными сетями.
Внимание
При определении типа ограждения IPMI необходимо учитывать, что невозможно выбрать данный вариант в случае использования кластерного транспорта GFS2.
-
VIRTUAL.
Признает сервер выключенным через 30 секунд после наступления аварии (по умолчанию).
При данном типе ограждения не гарантируется изоляция или отключение узла. Соответственно, если на неогражденном сервере останется ВМ, имеющая доступ к разделяемой системе хранения данных, а контроллер выполнит восстановление ВМ на одном из других серверов, может возникнуть ситуация Split Brain: два экземпляра одной ВМ будут работать параллельно, используя один диск на общем хранилище. Таким образом данные ВМ могут быть повреждены.
Внимание
Рекомендуется использовать только в тестовых средах, в том числе на виртуальных машинах, либо на объектах, где не требуется использование функционала высокой доступности ВМ.
-
SSH.
Использует подключение SSH для передачи команды выключения.
Контроллер делает попытки подключиться к узлу и выполнить команду форсированного выключения узла.
Предупреждение
Данный тип ограждения не сработает в случае, если была потеряна сетевая связность в управляющей сети (KERNEL).
Рекомендуется использовать данный тип ограждения при использовании высокой доступности ВМ для того, чтобы защититься от сбоев или отказов программных модулей SpaceVM. -
NODE.
Использует вызов управляющих команд через систему управления кластером.
В момент настройки данного типа ограждения контроллер передает на узел флаг самоограждения. В случае, если узел теряет связь с контроллером, он пытается, при наличии возможности, выполнить действия:
- Выключение контейнера сетевых служб.
- Корректное выключение всех ВМ максимум за 40 секунд.
- Отмонтирование всех LUN GFS2.
- Выключение узла.
Данный тип ограждения позволяет защититься при использовании высокой доступности ВМ от выключения питания серверов. Но при этом контроллер также не может гарантировать, что узел огражден.
-
AUTO.
Использует варианты последовательно: IPMI, SSH, NODE.
Данный тип ограждения позволяет защититься при использовании высокой доступности ВМ от выключения питания серверов (NODE), от отказа или сбоя программных модулей (SSH, IPMI), от потери сетевой связности (IPMI).
Настройки ограждения
В окне Настройки – Контроллер - Информация можно отредактировать некоторые параметры ограждения:
-
Начальный тайм-аут между попытками ограждения узлов.
По умолчанию: 15 секунд.
-
Максимальный тайм-аут между попытками ограждения узлов.
По умолчанию: 600 секунд.
-
Перевод узла в статус Failed при достижении максимального тайм-аута.
По умолчанию: выкл.
Влияет только на типы ограждения IPMI и SSH.
-
Множитель увеличения тайм-аута между попытками.
По умолчанию: 2.
Пример ограждения
Конфигурация:
-
Тип ограждения узла: IPMI.
-
Начальный тайм-аут между попытками ограждения узлов: 15 секунд.
-
Максимальный тайм-аут между попытками ограждения узлов: 600 секунд.
-
Перевод узла в статус Failed при достижении максимального тайм-аута: выкл.
-
Множитель увеличения тайм-аута между попытками: 2.
Порядок действий:
-
Сразу после перехода узла в статус HERMIT (Нет соединения) производится первая попытка ограждения узла с контроллера.
-
В случае удачного выключения узла он переходит в статус FAILED (Ошибка).
-
Если первая попытка не удалась, то через 15 секунд (начальный тайм-аут между попытками ограждения узлов) попытка повторяется.
-
Если вторая попытка не удалась, то через 30 секунд (15 * 2) (2 - множитель увеличения тайм-аута между попытками) попытка повторяется.
-
Если третья попытка не удалась, то через 60 секунд (30 * 2) (2 - множитель увеличения тайм-аута между попытками) попытка повторяется.
...
Тайм-аут будет увеличиваться до 600 секунд (максимальный тайм-аут между попытками ограждения узлов) и продолжаться, пока ограждение не закончится успешно.
Связность
Тип связности узла отвечает за метод принятия решения о том, что на сервере произошла авария.
Типы связностей
-
KERNEL.
Контролирует исполнение модулей системы управления на сервере.
Контроллер открывает поток данных (grpc stream) до каждого узла по его UUID (hostname) и отправляет узлу свой IPv4-адрес. Узел при открытом потоке данных сравнивает присланный ему адрес контроллера с адресом из его конфигурации и при совпадении раз в 1 секунду посылает через поток данных heartbeat. Контроллер при каждом получении heartbeat обновляет 2 метки с временем жизни 30 секунд (error label) и 60 секунд (hermit label) о доступности узла.
Если контроллер признал узел недоступным, то начинается процедура ограждения.
-
KERNEL_STORAGE.
Дополнительно к проверкам KERNEL раз в 5 секунд проверяются метаданные пула данных сервера на общем с контроллером файловом сетевом хранилище.
При использовании данного типа связности через кластер необходимо проверить, чтобы все узлы этого кластера имели общий пул данных.
Происходит проверка и KERNEL, и STORAGE. Если одна из проверок не пройдена, контроллер начинает процедуру ограждения.
Внимание
При использовании типа связности KERNEL_STORAGE возможны ошибки, возникающие при потере связи с удаленным хранилищем данных из-за сетевых проблем. В таких случаях узел может быть отмечен как недоступный.
-
AUTO.
Выполняет все доступные проверки связности по порядку.
Оптимальный выбор типов связности и ограждения
При использовании кластерного транспорта GFS2 оптимальным считается использование типов:
-
Ограждение: VIRTUAL.
-
Связность: KERNEL.
В остальных случаях оптимальным считается использование типов:
-
Ограждение: IPMI.
Позволяет получить однозначное подтверждение о том, что сервер был огражден, а контроль модулей управления сервером реагирует также на проблемы в работе гипервизора.
-
Связность: AUTO.