Плагин Topology Validator#

Введение#

Включение плагина Topology Validator в конфигурацию серверных узлов DataGrid позволяет автоматически блокировать запись во все кеши кластера в случае потери связи с частью узлов.

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

Для настройки плагина TopologyValidator:

  1. Создайте экземпляр класса CacheTopologyValidatorPluginProvider и укажите его в конфигурации всех серверных узлов DataGrid:

    Java#
    new IgniteConfiguration()
        ...
        .setPluginProviders(new CacheTopologyValidatorPluginProvider());
    
  2. Явно задайте узлы, входящие в базовую топологию (baseline topology), либо сконфигурируйте автонастройку базовой топологии с тайм-аутом, значительно превышающим тайм-аут определения сбоя (failure detection timeout).

    Примечание

    В текущей версии реализации плагина TopologyValidator использовать автонастройку базовой топологии с тайм-аутом, равным нулю, запрещено.

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

  3. Сконфигурируйте порог деактивации. На его основе вычисляется число узлов, связь с которыми может быть потеряна без ограничения возможности записи в кеши сегмента.

    Для вычисления используется формула:

    N = B - [B * dth] - 1

    где:

    • N — число узлов, связь с которыми может быть потеряна без ограничения возможности записи в кеши сегмента;

    • B — число узлов в базовой топологии;

    • dth — порог деактивации;

    • [x] — функция округления значения x до ближайшего целого в меньшую сторону.

    Значение порога деактивации по умолчанию равно 0.5. Это значит, что сегмент продолжит обрабатывать запросы на запись только в том случае, если в его составе находится более половины узлов из базовой топологии. При значении порога деактивации 0.5 и выше продолжить обрабатывать запросы на запись может не более, чем один сегмент.

    Для установки значения порога деактивации установите распределенное свойство конфигурации org.apache.ignite.topology.validator.deactivation.threshold при помощи утилиты control.sh. Для этого используйте следующую команду:

    control.sh --property set --name topology.validator.deactivation.threshold --val new_val
    

    где new_val — новое значение порога деактивации.

Блокировка и восстановление обработки запросов на запись в кеши#

Блокировка обработки запросов записи в кеши осуществляется путем автоматического перевода кластера в статус READ-ONLY. Чтобы разблокировать возможность выполнения операций записи, вручную переведите кластер в статус ACTIVE. Это можно сделать при помощи утилиты control.sh или при помощи Java API.