Self Heal State Storage
Важно
Инструкция относится только к кластерам YDB с конфигурацией V2 и распределённой конфигурацией. На кластерах с конфигурацией V1 эти шаги и команды (в том числе получение конфигурации через ydb admin cluster config fetch) недоступны или не дадут ожидаемого результата. Альтернатив для V1 здесь не приводится — см. Миграция на конфигурацию V2.
В процессе работы кластеров узлы, на которых работает YDB могут выходить из строя целиком.
Self Heal State Storage обеспечивает сохранение работоспособности подсистем распространения метаданных, Board, SchemeBoard кластера, если невозможно быстро восстановить вышедшие из строя узлы, и автоматически увеличивать количество реплик этих подсистем при добавлении новых узлов в кластер.
Self Heal State Storage обеспечивает:
- обнаружение неисправных узлов кластера YDB;
- перенос реплик StateStorage, Board, SchemeBoard на другие узлы или добавление новых реплик.
Компонент Self Heal State Storage, является частью системы управления кластером CMS Sentinel.
Включение и выключение Self Heal State Storage
Вы можете включать и выключать Self Heal State Storage с помощью изменения конфигурации.
Для работы механизма требуется активация как CMS Sentinel, так и распределённой конфигурации.
-
Получить текущую конфигурацию кластера с помощью команды 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 # Включение self heal state storageДля работы механизма требуется активация как CMS Sentinel, так и распределённой конфигурации. Убедитесь, что они включены.
Подробнее о миграции на конфигурацию V2 и включении распределённой конфигурации.
При значенииtrueу параметраstate_storage_self_heal_config.enableвключается механизм сохранения работоспособности и отказоустойчивости StateStorage, Board, SchemeBoard. -
Обновить конфигурацию кластера с учетом выполненных изменений с помощью ydb admin cluster config replace:
ydb [global options...] admin cluster config replace -f config.yaml
Управление автоматическим изменением конфигурации
Помимо общего включения/выключения Self Heal State Storage (параметр state_storage_self_heal_config.enable, см. выше), в секции self_management_config конфигурационного файла config.yaml можно по отдельности управлять автоматическим изменением конфигурации каждой из подсистем распространения метаданных, а также ограничивать множество узлов, на которые Self Heal может переносить реплики.
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 |
Разрешает Self Heal автоматически изменять конфигурацию State Storage. При значении false Self Heal не изменяет текущую конфигурацию State Storage. |
automatic_state_storage_board_management |
true |
То же самое для Board: разрешает или запрещает Self Heal автоматически изменять его конфигурацию. |
automatic_scheme_board_management |
true |
То же самое для SchemeBoard: разрешает или запрещает Self Heal автоматически изменять его конфигурацию. |
state_storage_self_heal_allowed_nodes |
[] (без ограничений) |
Список идентификаторов узлов, на которые Self Heal может переносить или на которых может добавлять реплики State Storage. Пустой список означает, что ограничений нет и могут быть использованы любые узлы кластера. |
state_storage_board_self_heal_allowed_nodes |
[] (без ограничений) |
То же самое для реплик Board. |
scheme_board_self_heal_allowed_nodes |
[] (без ограничений) |
То же самое для реплик SchemeBoard. |
Дополнительные параметры Self Heal State Storage
В секции cms_config.sentinel_config.state_storage_self_heal_config конфигурационного файла config.yaml можно настроить дополнительные параметры работы механизма Self Heal State Storage, влияющие на то, как быстро реагирует механизм на изменения и сколько реплик подсистем распространения метаданных создаётся. В примере ниже все параметры показаны со значениями по умолчанию:
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 секунд) |
Минимальный интервал между двумя последовательными срабатываниями Self Heal State Storage. Пока не прошло указанное время с момента предыдущего срабатывания, повторное изменение конфигурации не запускается, даже если обнаружены неисправные узлы. Значение задаётся в микросекундах. |
pileup_replicas |
false |
Разрешает размещать реплики разных подсистем (State Storage, Board, SchemeBoard) на одном и том же наборе узлов. При значении false Self Heal старается использовать разные узлы для реплик разных подсистем там, где это возможно; при значении 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 в Embedded UI кластера (доступен на порту 8765): перейдите на вкладку Sentinel для просмотра статуса Sentinel и Self Heal State Storage.