Расширение кластера

Вы можете расширить кластер YDB, добавив новые узлы в конфигурацию кластера. Ниже приведены необходимые действия по расширению кластера YDB, установленного вручную на виртуальные машины или физические сервера. Расширение кластера в среде Kubernetes осуществляется путём корректировки настроек контроллера YDB для Kubernetes.

Расширение кластера YDB не требует приостановки доступа пользователей к базам данных. При расширении кластера выполняется перезапуск его компонент для применения изменений в конфигурации, что, в свою очередь, может привести к необходимости повтора выполняемых на кластере транзакций. Повторы транзакций выполняются автоматически за счет использования приложениями возможностей SDK YDB по контролю ошибок и повтору операций.

Подготовка новых серверов

В случае размещения новых статических или динамических узлов кластера на новых серверах, не входивших ранее в состав расширяемого кластера YDB, на каждом новом сервере необходимо выполнить установку программного обеспечения YDB в соответствии с процедурами, описанными в инструкции по развертыванию кластеров. В частности, необходимо:

  1. создать учетную запись и группу в операционной системе для работы сервиса YDB;
  2. установить программное обеспечение YDB;
  3. подготовить и разместить на сервере соответствующий ему ключ и сертификат TLS;
  4. скопировать на сервер актуальный конфигурационный файл кластера YDB.

Используемые на новых серверах сертификаты TLS должны соответствовать требованиям к заполнению полей, и быть подписаны доверенным центром регистрации, используемым на уже существующих серверах расширяемого кластера YDB.

Добавление динамических узлов

Добавление динамических узлов позволяет увеличить доступные вычислительные ресурсы (процессорные ядра и оперативную память) для выполнения пользовательских запросов кластером YDB.

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

После успешного добавления динамического узла в кластер информация о нем будет доступна на странице мониторинга кластера во встроенном UI.

Для вывода динамического узла из кластера достаточно выполнить остановку процесса динамического узла.

Добавление статических узлов

Добавление статических узлов позволяет увеличить пропускную способность при выполнении операций ввода-вывода и увеличить доступную емкость для хранения данных в кластере YDB.

Для добавления статических узлов в кластер необходимо выполнить следующую последовательность действий:

  1. Отформатировать диски, которые будут использоваться для хранения данных YDB, с использованием процедуры, описанной для этапа развертывания кластера.

  2. Скорректировать конфигурационный файл кластера:

    • включить в конфигурацию описание добавляемых узлов (в секции hosts) и используемых на них дисков (в секции host_configs);
    • установить номер изменения конфигурации в виде параметра storage_config_generation: K на верхнем уровне, где K - целое число, номер изменения (при первоначальной установке значение K=0 или не указано, при первом расширении кластера K=1, при втором K=2, и так далее).
  3. Скопировать доработанный конфигурационный файл кластера на все существующие и на все добавляемые сервера кластера, заместив им старую версию конфигурационного файла.

  4. Выполнить последовательный перезапуск всех существующих статических узлов кластера, с ожиданием инициализации и восстановления работы каждого перезапускаемого узла.

  5. Выполнить последовательный перезапуск всех существующих динамических узлов кластера.

  6. Запустить процессы, обслуживающие новые статические узлы кластера, на соответствующих серверах.

  7. Убедиться в том, что новые статические узлы отображаются на странице мониторинга кластера во встроенном UI.

  8. Получить токен аутентификации для выполнения административных команд с помощью YDB CLI, например:

    ydb -e grpcs://<node1.ydb.tech>:2135 -d /Root --ca-file ca.crt \
        --user root auth get-token --force >token-file
    

    В примере команды выше используются следующие параметры:

    • node1.ydb.tech - FQDN любого из серверов, на которых размещены статические узлы кластера;
    • 2135 - номер порта grpcs сервиса статических узлов;
    • ca.crt - имя файла с сертификатом центра регистрации;
    • root - логин пользователя с административными правами;
    • token-file - имя файла, в который сохраняется токен аутентификации для последующего использования.

    При выполнении приведенной выше команды YDB CLI запросит пароль для аутентификации указанного пользователя.

  9. Разрешить кластеру YDB использовать диски на новых статических узлах для хранения данных, выполнив следующую команду на любом из узлов кластера:

    export LD_LIBRARY_PATH=/opt/ydb/lib
    /opt/ydb/bin/ydbd -f ydbd-token-file --ca-file ca.crt -s grpcs://`hostname -f`:2135 \
        admin blobstorage config init --yaml-file  /opt/ydb/cfg/config.yaml
    echo $?
    

    В примере команды выше используются следующие параметры:

    • ydbd-token-file - имя файла ранее полученного токена аутентификации;
    • 2135 - номер порта grpcs сервиса статических узлов;
    • ca.crt - имя файла с сертификатом центра регистрации.

    Если при выполнении приведенной выше команды возвращается ошибка сверки номера конфигурации, это означает, что при корректировке конфигурационного файла кластера было неверно установлено поле storage_config_generation. Текст ошибки содержит ожидаемое значение номера конфигурации, которое можно использовать для корректировки файла настроек кластера. Пример сообщения об ошибке сверки номера конфигурации:

    ErrorDescription: "ItemConfigGeneration mismatch ItemConfigGenerationProvided# 0 ItemConfigGenerationExpected# 1"
    
  10. Добавить дополнительные группы хранения в одну или несколько баз данных, выполнив команды следующего вида на любом из узлов кластера:

    export LD_LIBRARY_PATH=/opt/ydb/lib
    /opt/ydb/bin/ydbd -f ydbd-token-file --ca-file ca.crt -s grpcs://`hostname -f`:2135 \
        admin database /Root/testdb pools add ssd:1
    echo $?
    

    В примере команды выше используются следующие параметры:

    • ydbd-token-file - имя файла ранее полученного токена аутентификации;
    • 2135 - номер порта grpcs сервиса статических узлов;
    • ca.crt - имя файла с сертификатом центра регистрации;
    • /Root/testdb - полный путь к базе данных;
    • ssd:1 - имя пула хранения и количество выделяемых групп хранения.
  11. Убедиться, что добавленные группы хранения отображаются странице мониторинга кластера во встроенном UI.

Вывод статических узлов из кластера YDB производится в соответствии с документированной процедурой декомиссии.

В случае повреждения и невозможности ремонта сервера, на котором работает статический узел кластера, необходимо разместить недоступный статический узел на новом сервере, содержащем аналогичное или большее количество и объем дисков.