Перейти к содержанию

Связность и ограждение

Внимание

Описанные в данном разделе механизмы ограждения и связности — это проприетарная реализация 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.

Порядок действий:

  1. Сразу после перехода узла в статус HERMIT (Нет соединения) производится первая попытка ограждения узла с контроллера.

  2. В случае удачного выключения узла он переходит в статус FAILED (Ошибка).

  3. Если первая попытка не удалась, то через 15 секунд (начальный тайм-аут между попытками ограждения узлов) попытка повторяется.

  4. Если вторая попытка не удалась, то через 30 секунд (15 * 2) (2 - множитель увеличения тайм-аута между попытками) попытка повторяется.

  5. Если третья попытка не удалась, то через 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.


Часто задаваемые вопросы по связности и ограждению.