Администрирование нод

В данном разделе собрано описание некоторых возможностей администрирования кластерных нод.

Pending restart

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

$ yt add-maintenance --component="cluster_node" --type="pending_restart" --address="my-node.yandex.net"  --comment="my comment"

Убедиться что нода стала restart pending можно следующей командой

$ yt get //sys/cluster_nodes/my-node.yandex.net/@pending_restart
> true

Описание работы

Когда объект-нода стала restart pending, таймаут ее lease-транзакции будет значительно увеличен. Это означает, что нода в течение длительного промежутка времени будет считаться online даже после того, как фактически прекратит периодическими запросами к мастер-серверу подтверждать свою доступность. Время такого промежутка настраивается в динамическом конфиге мастера по пути //sys/@config/node_tracker/pending_restart_lease_timeout (по умолчанию - 10 минут).

Заявленная оптимизация работы репликатора чанков на мастере достигается особенной обработкой реплик, находящихся на нодах с подобным флагом, далее именуемых temporarily unavailable репликами. Реплики, находящиеся на обычных нодах, будем называть available репликами.

Так, чанк обычного формата считается underreplicated, если выполняется одно из условий:

  • совокупное число реплик available + temporarily unavailable меньше replication factor;
  • active реплик меньше, чем 1 + max replicas per rack;
  • temporaily unavailable реплик больше одной;

В свою очередь, erasure чанки считаются parity missing или data missing, если

  • какая-то из реплик недоступна и не является temporarily unavailable;
  • разница между минимальным необходимым числом реплик, когда чанк еще возможно восстановить, и числом temporarily unavailable реплик меньше, чем max erasure replicas per rack;

В типичном случае конфигурации кластера с replication factor = 3 и max replicas per rack = 1, практическое использование pending restart предполагает одновременную работу с нодами только внутри одной стойки.

Завершение работы

Флаг pending restart снимется при перезапуске ноды, а именно в момент ее перерегистрации на мастере. Также флаг можно снять явно

$ yt remove-maintenance --component="cluster_node" --address="my-node.yandex.net" --id="<maintenance-id>"

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