Администрирование нод
В данном разделе собрано описание некоторых возможностей администрирования кластерных нод.
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
, по истечении которого флаг будет снят автоматически. Дедлайн отсчитывается с момента последнего взведения флага.