Администрирование нод
В данном разделе собрано описание некоторых возможностей администрирования кластерных нод.
Pending restart
Основной сценарий использования флага 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;
- available реплик меньше, чем 1 + max replicas per rack;
- temporarily 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
, по истечении которого флаг будет снят автоматически. Дедлайн отсчитывается с момента последней установки флага.