SelfHeal подсистем распространения метаданных
SelfHeal подсистем распространения метаданных — механизм автоматического управления конфигурациями реплик State Storage, Board и SchemeBoard.
В конфигурации параметры механизма используют историческое имя state_storage_self_heal_config, которое относится ко всем трём подсистемам.
Важно
Инструкция относится только к кластерам YDB с конфигурацией V2 и распределённой конфигурацией. На кластерах с конфигурацией V1 эти шаги и команды (в том числе получение конфигурации через ydb admin cluster config fetch) недоступны или не дадут ожидаемого результата. Альтернатив для V1 здесь не приводится — см. Миграция на конфигурацию V2.
Механизм обнаруживает неисправности узлов и, если их нельзя быстро восстановить, переносит затронутые реплики на другие узлы. При росте кластера он также может автоматически увеличивать число реплик с учётом конфигурации и доступных узлов.
Механизм запускается Sentinel — компонентом системы управления кластером CMS.
Включение и выключение SelfHeal подсистем распространения метаданных
Вы можете включать и выключать SelfHeal подсистем распространения метаданных с помощью изменения конфигурации:
-
Получите текущую конфигурацию кластера с помощью команды ydb admin cluster config fetch:
ydb [global options...] admin cluster config fetch > config.yaml -
Измените конфигурационный файл
config.yaml. Для этого поменяйте значение параметраstate_storage_self_heal_config.enableнаtrueили наfalse:config: self_management_config: enabled: true # Включение распределённой конфигурации cms_config: sentinel_config: enable: true # Включение Sentinel state_storage_self_heal_config: enable: true # Включение SelfHeal подсистем распространения метаданныхПримечание
Для работы механизма требуется активация как CMS Sentinel, так и распределённой конфигурации. Убедитесь, что они включены.
См. подробнее: Миграция на конфигурацию V2 и включение распределённой конфигурации.
При значении
trueу параметраstate_storage_self_heal_config.enableвключается механизм сохранения работоспособности и отказоустойчивости State Storage, Board, SchemeBoard. -
Обновите конфигурацию кластера с учетом выполненных изменений с помощью ydb admin cluster config replace:
ydb [global options...] admin cluster config replace -f config.yaml
Управление автоматическим изменением конфигурации
Помимо общего включения/выключения SelfHeal подсистем распространения метаданных (параметр state_storage_self_heal_config.enable), в секции self_management_config конфигурационного файла config.yaml вы можете по отдельности управлять автоматическим изменением конфигурации каждой из подсистем распространения метаданных, а также ограничивать множество узлов, на которые SelfHeal может переносить реплики.
config:
self_management_config:
enabled: true
automatic_state_storage_management: true
automatic_state_storage_board_management: true
automatic_scheme_board_management: true
state_storage_self_heal_allowed_nodes: [1, 2, 3, 4, 5, 6, 7, 8]
state_storage_board_self_heal_allowed_nodes: [1, 2, 3, 4, 5, 6, 7, 8]
scheme_board_self_heal_allowed_nodes: [1, 2, 3, 4, 5, 6, 7, 8]
| Параметр | Значение по умолчанию | Описание |
|---|---|---|
automatic_state_storage_management |
true |
Разрешает SelfHeal автоматически изменять конфигурацию State Storage. При значении false SelfHeal не изменяет текущую конфигурацию State Storage. |
automatic_state_storage_board_management |
true |
То же самое для Board: разрешает или запрещает SelfHeal автоматически изменять его конфигурацию. |
automatic_scheme_board_management |
true |
То же самое для SchemeBoard: разрешает или запрещает SelfHeal автоматически изменять его конфигурацию. |
state_storage_self_heal_allowed_nodes |
[] (без ограничений) |
Список идентификаторов узлов, на которые SelfHeal может переносить или на которых может добавлять реплики State Storage. Пустой список означает, что ограничений нет и могут быть использованы любые узлы кластера. |
state_storage_board_self_heal_allowed_nodes |
[] (без ограничений) |
То же самое для реплик Board. |
scheme_board_self_heal_allowed_nodes |
[] (без ограничений) |
То же самое для реплик SchemeBoard. |
Дополнительные параметры SelfHeal подсистем распространения метаданных
В секции cms_config.sentinel_config.state_storage_self_heal_config конфигурационного файла config.yaml вы можете настроить дополнительные параметры работы механизма SelfHeal подсистем распространения метаданных. Они влияют на то, как быстро реагирует механизм на изменения и сколько реплик подсистем распространения метаданных создаётся. В примере ниже все параметры показаны со значениями по умолчанию:
config:
cms_config:
sentinel_config:
enable: true
state_storage_self_heal_config:
enable: true
wait_for_config_step: 60000000
relax_time: 600000000
pileup_replicas: false
override_replicas_in_ring_count: 0
override_rings_count: 0
replicas_specific_volume: 200
| Параметр | Значение по умолчанию | Описание |
|---|---|---|
wait_for_config_step |
60000000 (микросекунды, 60 секунд) |
Время ожидания между промежуточными шагами применения новой конфигурации подсистем распространения метаданных (добавление/удаление групп колец, снятие флага WriteOnly, см. Конфигурирование State Storage). Значение задаётся в микросекундах. |
relax_time |
600000000 (микросекунды, 600 секунд) |
Минимальный интервал между двумя последовательными срабатываниями SelfHeal подсистем распространения метаданных. Пока не прошло указанное время с момента предыдущего срабатывания, повторное изменение конфигурации не запускается, даже если обнаружены неисправные узлы. Значение задаётся в микросекундах. |
pileup_replicas |
false |
Разрешает размещать реплики разных подсистем (State Storage, Board, SchemeBoard) на одном и том же наборе узлов. При значении false SelfHeal старается использовать разные узлы для реплик разных подсистем там, где это возможно; при значении true узлы, уже занятые под одну подсистему, могут повторно использоваться для остальных. |
override_replicas_in_ring_count |
0 (рассчитывается автоматически) |
Принудительно задаёт количество реплик в одном кольце. Если значение 0, количество реплик в кольце вычисляется автоматически на основе replicas_specific_volume и числа доступных узлов. |
override_rings_count |
0 (рассчитывается автоматически) |
Принудительно задаёт количество колец в конфигурации. Если значение 0, количество колец вычисляется автоматически на основе числа доступных узлов и топологии кластера. |
replicas_specific_volume |
200 |
Определяет, сколько узлов кластера должно приходиться на одну дополнительную реплику в кольце: одна дополнительная реплика добавляется на каждые replicas_specific_volume узлов в кластере. Используется при автоматическом расчёте количества реплик, если override_replicas_in_ring_count не задан (равен 0). |
Проверка результата
Проверить, что изменения применились, можно в разделе CMS в YDB UI кластера (доступен на порту 8765): перейдите на вкладку Sentinel для просмотра статуса Sentinel и SelfHeal подсистем распространения метаданных.