Перестроение кластера
Кластер хранилища является самовосстанавливающимся. При отказе узла или диска кластер автоматически попытается восстановить потерянные данные, то есть перестроить себя.
Предварительные требования для перестроения
Для успешной перестройки кластер должен иметь как минимум:
-
столько исправных узлов, сколько требуется для установленного режима избыточности;
В кластере, который работает в режиме избыточного кодирования 5+2 и состоит из семи узлов (то есть минимального количества), каждый фрагмент пользовательских данных распределен по 5+2 узлам для избыточности, то есть задействованы все узлы. При отказе одного или двух узлов данные не будут потеряны, но производительность кластера снизится, а перестройка будет невозможна, пока не будут исправны как минимум семь узлов (то есть пока вы не добавите недостающие узлы). Для сравнения: в кластере, который работает в режиме избыточного кодирования 5+2 и состоит из десяти узлов, каждый фрагмент пользовательских данных распределен по произвольным 5+2 узлам из десяти для равномерной нагрузки на серверы хранения фрагментов (CS-серверы). Даже если откажут сразу три узла, в таком кластере останется достаточно узлов для перестройки.
-
достаточно свободного пространства для размещения данных с любого узла.
В кластере с десятью узлами по 10 ТБ следует оставить свободным как минимум 1 ТБ на каждом узле, чтобы при отказе одного узла 9 ТБ данных можно было восстановить на оставшихся девяти узлах. Однако если в кластере десять узлов по 10 ТБ и один узел на 20 ТБ, на каждом из меньших узлов должно быть свободно не менее 2 ТБ на случай сбоя большого узла (при этом на большом узле достаточно оставить свободным 1 ТБ).
Процесс перестроения
Процесс перестроения включает несколько этапов. Каждый сервер хранения фрагментов отправляет heartbeat-сообщение на один из MDS-серверов (серверов метаданных) каждые пять секунд. Если сообщение не отправлено, сервер хранения фрагментов считается неактивным и MDS-сервер направляет всем компонентам кластера указание прекратить операции с запросами к данным на этом сервере хранения фрагментов. Если heartbeat-сообщения не поступают от сервера хранения фрагментов в течение 15 минут, то MDS-сервер считает его недоступным и начинает перестройку кластера (при соблюдении указанных ниже условий). В процессе перестройки MDS-сервер находит серверы хранения фрагментов, на которых нет фрагментов (реплик) потерянных данных, и восстанавливает эти данные по одному фрагменту (реплике) за раз следующим образом.
- Если используется репликация, существующие реплики потерянного фрагмента блокируются (чтобы обеспечить идентичность всех реплик) и одна из них копируется на новый сервер хранения фрагментов. Если в это время клиенту нужно прочитать данные, которые еще не были восстановлены, он читает эти данные из любой оставшейся реплики.
- Если используется избыточное кодирование, новый сервер хранения фрагментов запрашивает практически все оставшиеся фрагменты данных для восстановления недостающих фрагментов. Если в это время клиенту нужно прочитать данные, которые еще не были восстановлены, эти данные восстанавливаются вне очереди и возвращаются клиенту.
Самовосстановление требует больше сетевого трафика и ресурсов ЦП, если используется репликация. С другой стороны, перестроение с избыточным кодированием выполняется медленнее.
Если узел или диск становится недоступен во время обслуживания, самовосстановление кластера задерживается для экономии ресурсов. По умолчанию задержка составляет 30 минут. Это время можно настроить, задав значение параметра mds.wd.offline_tout_mnt в миллисекундах с помощью команды vstorage -c <cluster_name> set-config.
Рекомендации по перестроению кластера
Две рекомендации, которые помогут уменьшить дополнительный расход ресурсов при перестроении:
- Чтобы упростить перестройку, используйте одинаковое количество дисков одной емкости на всех узлах.
- Перестройка сопровождается дополнительной нагрузкой на сеть и увеличивает задержку операций чтения и записи. Чем больше пропускная способность сети в кластере, тем быстрее будет завершена перестройка и высвобождены ресурсы.