Связность и ограждение
Внимание
Описанные в данном разделе механизмы связности и ограждения — это проприетарная реализация SpaceVM. Механизмы связности и ограждения работают всегда и не требуют дополнительного включения.
Данные механизмы не связаны:
- С механизмами ограждения GFS (corosync и dlm).
- С механизмами высокой доступности (при этом высокая доступность напрямую связана с их работой).
Общая информация
Настройки связности и ограждения — определение механизмов контроля доступности серверов кластера и управления их питанием.
Раздел Cвязность и ограждение позволяет централизованно назначить настройки связности и ограждения всех узлов кластера.
Индивидуальная настройка связности и ограждения узлов кластера производится в настройках каждого узла отдельно.
Централизованные настройки для узла идентичны настройкам для кластера.
Для обеспечения целостности данных ВМ может работать только на одном узле или любой другой службе кластера в одно и то же время. Применение в конфигурации оборудования выключателей электропитания дает возможность выполнять цикл выключения-включения питания другого узла до перезапуска служб высокой доступности этого узла во время процесса отказов. Это предотвращает одновременный доступ 2 узлов к одним и тем же данным и их разрушение. Ограждающие (fence) устройства используются для обеспечения гарантии целостности данных при сбоях в любых условиях.
В окне Кластеры – <Имя кластера> – Связность и ограждение можно получить информацию о текущих настройках:
- 
Тип ограждения. 
- 
Тип связности. 
- 
Пулы данных. 
Также существует возможность изменения настроек. При нажатии на кнопку Изменить настройки в открывшемся окне необходимо выбрать из раскрывающегося списка тип ограждения и тип связности, после чего подтвердить операцию, нажав кнопку ОК.
Дополнительно возможно изменять настройки каждого сервера отдельно во вкладке Серверы – <Имя сервера> – Связность и ограждение.
Ограждение
Ограждение — это процесс получения подтверждения того, что аварийный сервер перешел в состояние, не допускающее повреждения ВМ (по умолчанию - выключен).
Тип ограждения может принимать несколько значений и, в соответствии с этим определяется, каким образом система управления будет пытаться оградить сервер при обнаружении аварии. Сервис ограждения циклически пытается оградить узлы, находящиеся в статусе HERMIT (Нет соединения), в соответствии с настройками.
Тип ограждения по умолчанию: VIRTUAL.
Типы ограждений
- 
IPMI. Использует управляющие команды ВМС для форсированного выключения узла. Контроллер делает попытки подключиться к IPMI узла и послать команду форсированного выключения узла. Контроллер должен иметь доступ к данному интерфейсу: контроллер и IPMI узла должны либо быть в одной сети, либо должна быть настроена маршрутизация между данными сетями. При данном типе ограждение узла будет признано успешным только в случае, если IPMI-интерфейс был доступен и подтвердил, что сервер действительно выключен. Таким образом, контроллер не признает огражденным узел, если у узла было выключено питание. Примечание При включении данного типа ограждения необходимо убедиться, что у всех узлов кластера настроен IP-адрес IPMI. Также необходимо убедиться, что контроллер имеет доступ к данному интерфейсу: контроллер и IPMI узла должны либо быть в одной сети, либо должна быть настроена маршрутизация между данными сетями. Внимание При определении типа ограждения IPMI необходимо учитывать, что невозможно выбрать данный вариант в случае использования кластерного транспорта GFS2. 
- 
VIRTUAL. Считает сервер выключенным через 5 секунд после наступления аварии (по умолчанию). При данном типе ограждения не гарантируется изоляция или отключение узла. Соответственно, если на неогражденном сервере останется ВМ, имеющая доступ к разделяемой системе хранения данных, а контроллер выполнит восстановление ВМ на одном из других серверов, может возникнуть ситуация Split Brain: два экземпляра одной ВМ будут работать параллельно, используя один диск на общем хранилище. Таким образом данные ВМ могут быть повреждены. Внимание Рекомендуется использовать только в тестовых средах, в том числе на виртуальных машинах, либо на объектах, где не требуется использование функционала высокой доступности ВМ. 
- 
SSH. Использует подключение SSH для передачи команды выключения. Контроллер делает попытки подключиться к узлу и выполнить команду форсированного выключения узла. Предупреждение Данный тип ограждения не сработает в случае, если была потеряна сетевая связность в управляющей сети (KERNEL). 
 Рекомендуется использовать данный тип ограждения при использовании высокой доступности ВМ для того, чтобы защититься от сбоев или отказов программных модулей 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. 
Порядок действий:
- 
Сразу после перехода узла в статус 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.