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

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

Внимание

Описанные в данном разделе механизмы связности и ограждения — это проприетарная реализация SpaceVM. Механизмы связности и ограждения работают всегда и не требуют дополнительного включения.

Данные механизмы не связаны:

  • С механизмами ограждения GFS (corosync и dlm).
  • С механизмами высокой доступности (при этом высокая доступность напрямую связана с их работой).

Общая информация

Настройки связности и ограждения — определение механизмов контроля доступности серверов кластера и управления их питанием.

Раздел Cвязность и ограждение позволяет централизованно назначить настройки связности и ограждения всех узлов кластера.

Индивидуальная настройка связности и ограждения узлов кластера производится в настройках каждого узла отдельно.

Централизованные настройки для узла идентичны настройкам для кластера.

Для обеспечения целостности данных ВМ может работать только на одном узле или любой другой службе кластера в одно и то же время. Применение в конфигурации оборудования выключателей электропитания дает возможность выполнять цикл выключения-включения питания другого узла до перезапуска служб высокой доступности этого узла во время процесса отказов. Это предотвращает одновременный доступ 2 узлов к одним и тем же данным и их разрушение. Ограждающие (fence) устройства используются для обеспечения гарантии целостности данных при сбоях в любых условиях.

В окне Кластеры<Имя кластера>Связность и ограждение можно получить информацию о текущих настройках:

  • Тип ограждения.

  • Тип связности.

  • Пулы данных.

Также существует возможность изменения настроек. При нажатии на кнопку Изменить настройки в открывшемся окне необходимо выбрать из раскрывающегося списка тип ограждения и тип связности, после чего подтвердить операцию, нажав кнопку ОК.

Дополнительно возможно изменять настройки каждого сервера отдельно во вкладке Серверы – <Имя сервера> – Связность и ограждение.


Ограждение

Ограждение — это процесс получения подтверждения того, что аварийный сервер перешел в состояние, не допускающее повреждения ВМ (по умолчанию - выключен).

Тип ограждения может принимать несколько значений и, в соответствии с этим определяется, каким образом система управления будет пытаться оградить сервер при обнаружении аварии. Сервис ограждения циклически пытается оградить узлы, находящиеся в статусе HERMIT (Нет соединения), в соответствии с настройками.

Тип ограждения по умолчанию: VIRTUAL.


Типы ограждений

  • IPMI.

    Использует управляющие команды ВМС для форсированного выключения узла. Контроллер делает попытки подключиться к IPMI узла и послать команду форсированного выключения узла. Контроллер должен иметь доступ к данному интерфейсу: контроллер и IPMI узла должны либо быть в одной сети, либо должна быть настроена маршрутизация между данными сетями.

    При данном типе ограждение узла будет признано успешным только в случае, если IPMI-интерфейс был доступен и подтвердил, что сервер действительно выключен.

    Таким образом, контроллер не признает огражденным узел, если у узла было выключено питание.

    Примечание

    При включении данного типа ограждения необходимо убедиться, что у всех узлов кластера настроен IP-адрес IPMI. Также необходимо убедиться, что контроллер имеет доступ к данному интерфейсу: контроллер и IPMI узла должны либо быть в одной сети, либо должна быть настроена маршрутизация между данными сетями.

    Внимание

    При определении типа ограждения IPMI необходимо учитывать, что невозможно выбрать данный вариант в случае использования кластерного транспорта GFS2.

  • VIRTUAL.

    Считает сервер выключенным через 5 секунд после наступления аварии (по умолчанию).

    При данном типе ограждения не гарантируется изоляция или отключение узла. Соответственно, если на неогражденном сервере останется ВМ, имеющая доступ к разделяемой системе хранения данных, а контроллер выполнит восстановление ВМ на одном из других серверов, может возникнуть ситуация Split Brain: два экземпляра одной ВМ будут работать параллельно, используя один диск на общем хранилище. Таким образом данные ВМ могут быть повреждены.

    Внимание

    Рекомендуется использовать только в тестовых средах, в том числе на виртуальных машинах, либо на объектах, где не требуется использование функционала высокой доступности ВМ.

  • SSH.

    Использует подключение SSH для передачи команды выключения.

    Контроллер делает попытки подключиться к узлу и выполнить команду форсированного выключения узла. При недоступности основного (управляющего) адреса узла контроллер последовательно пробует подключиться через IP-адреса сетей хранилищ данных данного узла.

    Предупреждение

    Данный тип ограждения не сработает в случае, если узел полностью недоступен по сети (недоступны ни управляющий адрес, ни адреса сетей хранилищ данных).
    Рекомендуется использовать данный тип ограждения при использовании высокой доступности ВМ для того, чтобы защититься от сбоев или отказов программных модулей SpaceVM.

  • NODE.

    Использует вызов управляющих команд через систему управления кластером.

    В момент настройки данного типа ограждения контроллер передает на узел признак самоограждения. В случае, если узел теряет связь с контроллером, он пытается, при наличии возможности, выполнить действия:

    • Корректное выключение всех ВМ максимум за 40 секунд.
    • Отмонтирование всех LUN GFS2.
    • Выключение узла.

    Данный тип ограждения позволяет защититься при использовании высокой доступности ВМ от выключения питания серверов. Но при этом контроллер также не может гарантировать, что узел огражден.

  • AUTO.

    Использует варианты последовательно: IPMI, SSH, NODE.

    Данный тип ограждения позволяет защититься при использовании высокой доступности ВМ от выключения питания серверов (NODE), от отказа или сбоя программных модулей (SSH, IPMI), от потери сетевой связности (IPMI).


Настройки ограждения

В окне НастройкиКонтроллер - Информация можно отредактировать некоторые параметры ограждения:

  • Тайм-аут стартового ожидания переподключения к недоступным узлам.

    По умолчанию: 300 секунд.

  • Начальный тайм-аут между попытками ограждения узлов.

    По умолчанию: 15 секунд.

  • Максимальный тайм-аут между попытками ограждения узлов.

    По умолчанию: 600 секунд.

  • Перевод узла в статус Failed при достижении максимального тайм-аута.

    По умолчанию: выкл.

    Влияет только на типы ограждения IPMI и SSH.

  • Множитель увеличения тайм-аута между попытками.

    По умолчанию: 2.

Внимание

После изменения настроек ограждения необходимо перезагрузить сервисы контроллера (controller-engine, controller-web-api).

Пример ограждения

Конфигурация:

  • Тип ограждения узла: 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).

    Если контроллер признал узел недоступным, то начинается процедура ограждения.


Оптимальный выбор типов связности и ограждения

При использовании кластерного транспорта GFS2 или пулов данных GFS2 с включённой высокой доступностью рекомендуется использование типов:

  • Ограждение: SSH.

  • Связность: KERNEL.

В остальных случаях оптимальным считается использование типов:

  • Ограждение: IPMI.

    Позволяет получить однозначное подтверждение о том, что сервер был огражден, а контроль модулей управления сервером реагирует также на проблемы в работе гипервизора.

  • Связность: KERNEL.