Выполнение перезапуска кластера YDB с помощью ydbops

Примечание

Утилита ydbops находится в активной разработке. В редких случаях обратная совместимость может быть нарушена.

ydbops можно использовать для выполнения перезагрузки кластера: перезапуска всех или некоторых узлов кластера YDB при сохранении доступности кластера. Почему это не тривиально и требует специальной утилиты, объясняется в статье про обслуживание кластера без потери доступности.

Подкоманда, ответственная за эту операцию, — ydbops restart.

Общий алгоритм

Существует ряд опций для ydbops restart, которые действуют как фильтры. Фильтры неявно соединены логическим «и», то есть при указании нескольких фильтров будут выбраны только те узлы, которые удовлетворяют всем из них одновременно. Следовательно, при отсутствии фильтров перезапускаются все узлы.

Существуют два особых фильтра, которые являются исключением из этого правила: --storage и --tenant:

  • Указание только --storage фильтрует только storage-узлы.
  • Указание только --tenant фильтрует только tenant-узлы.
  • Указание обоих фильтров выбирает все узлы, что эквивалентно отсутствию этих двух фильтров.

Алгоритм всегда работает в две фазы:

  • Сначала он определяет, соответствуют ли какие-либо storage-узлы условиям перезапуска, и перезапускает только эти узлы.
  • После того, как все storage-узлы были перезапущены (или ни один из storage-узлов не подошёл под условия фильтрации), процесс повторяется для tenant-узлов.

Примеры

Следующие примеры предполагают, что необходимые параметры подключения указаны (такие как --endpoint или аутентификационные опции).

Перезапуск всех узлов в кластере

Следующая команда перезапустит все узлы в кластере: сначала storage-узлы, а затем tenant-узлы.

ydbops restart 

Перезапуск только storage-узлов или tenant-узлов

Можно перезапустить только storage-узлы:

ydbops restart --storage

Или только tenant-узлы:

ydbops restart --tenant

Можно перезапустить только узлы определенных tenant-ов, указав --tenant-list:

ydbops restart --tenant-list=</domain/database_name_1>,</domain/database_name_2>,...

Перезапуск только определённых узлов

Можно перезапустить узлы только на определённых хостах, указав FQDN с помощью опции --hosts:

ydbops restart --hosts=<node1.some.zone>,<node2.some.zone>

Или указав идентификаторы узлов напрямую:

ydbops restart --hosts=1,2,3

Перезапуск по времени работы узла

Можно перезапустить только узлы, которые имеют определённое время работы, используя опцию --started.

Аргумент опции должен быть заключён в кавычки, иначе shell может интерпретировать > или < как перенаправление ввода/вывода. См. пример:

ydbops restart --started '>2024-03-13T17:00:00Z'

Например, это может быть удобно для перезапуска только тех узлов, которые работают более нескольких минут, так как остальные уже перезапустились.

Перезапуск по версии YDB на узлах

Можно перезапустить только те узлы, версия которых равна (==), не равна (!=), больше (>) или меньше (<) желаемой.

Аргумент опции должен быть заключён в кавычки, иначе shell может интерпретировать > или < как перенаправление ввода/вывода. См. пример:

ydbops restart --version '>24.1.2'
ydbops restart --version '<24.1.2'
ydbops restart --version '!=24.1.2'
ydbops restart --version '==24.1.2'

Хотфикс-версии (например, ydb-stable-24-1-14-hotfix-9) имеют те же основные, минорные и патч-номера, что и соответствующая не-хотфикс версия 24.1.14.

Например, версия ydb-stable-24-1-14-hotfix-9 в операциях сравнения будет идентична версии ydb-stable-24-1-14.

Предыдущая
Следующая