Перейти к основному содержимому

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

Описание

Текущее решение по хранению параметров подключения к БД в засекреченном виде обладает следующим ограничением — при смене параметров сервера теряется возможность декодировать параметры подключения к БД, так как ключ кодирования создается на основании этих параметров. Хранение параметров подключения к БД обусловлено необходимостью автоматического доступа к БД (без ввода пароля со стороны пользователя) со стороны утилит, входящих в состав БД, а кодирование вызвано требованием предотвратить доступ к параметрам подключения, хранящимся в открытом виде. Для решения этой проблемы разработана утилита перекодирования параметров подключения к БД pangolin-auth-reencrypt при смене параметров сервера.

Сценарии использования

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

  1. Убедитесь, что службы pangolin-auth-reencrypt запущены и работают:

    • Для пользователя kmadmin_pg:

      sudo systemctl status pangolin-auth-reencrypt@kmadmin_pg
    • Для пользователя postgres:

      sudo systemctl status pangolin-auth-reencrypt@postgres

    Ожидаемый результат: в поле Active установлено значение active (running).

  2. Остановите службы утилиты перекодирования:

    • Для пользователя kmadmin_pg:

      sudo systemctl stop pangolin-auth-reencrypt@kmadmin_pg
    • Для пользователя postgres:

      sudo systemctl stop pangolin-auth-reencrypt@postgres
  3. Убедитесь, что службы остановлены, используя команды из пункта 1.

    Ожидаемый результат: в поле Active установлено значение inactive (dead).

  4. Убедитесь, что сервис Pangolin Manager работает от имени пользователя postgres:

    systemctl --user status pangolin-manager.service

    Ожидаемый результат: сервис в состоянии active (running), в журнале ошибок нет.

  5. Измените идентификатор системы machine_id, влияющий на ключ засекречивания:

    sudo rm -f /etc/machine-id
    sudo dbus-uuidgen --ensure=/etc/machine-id
    sudo dbus-uuidgen --ensure
  6. Перезапустите сервис Pangolin Manager от имени пользователя postgres:

    systemctl --user restart pangolin-manager.service
  7. Проверьте журнал /pgerrorlogs/<basic_version>/pangolin-manager/pangolin-manager-<current_date> (base_version - это базовая версия СУБД (текущая 8), current_date – текущая дата) любой удобной командой, например:

    tail -f /pgerrorlogs/06/pangolin-manager/pangolin-manager-2025-09-02_055429.log

    Ожидаемый результат: в логах присутствуют строки с ошибками:

    ERROR: RAFT:  RAFT (server side): could not initialize SSL configuration ...

    или

    WARNING: could not load secstore for host:localhost ...
  8. Запустите службы утилиты перекодирования.

    • Для пользователя kmadmin_pg:

      sudo systemctl start pangolin-auth-reencrypt@kmadmin_pg
    • Для пользователя postgres:

      sudo systemctl start pangolin-auth-reencrypt@postgres
  9. Проверьте состояние служб демонов, используя команды из пункта 1.

    Ожидаемый результат: Для всех служб в после Active установлено значение active (running).

  10. Перезапустите сервис Pangolin Manager, используя команду из пункта 6.

  11. С помощью команды из пункта 4, убедитесь, что в работе Pangolin Manager отсутствуют ошибки.

    Ожидаемый результат: В после Active установлено значение active (running), в логе работы Pangolin Manager отсутствуют ошибки.

  12. Повторно измените идентификатор системы machine_id, влияющий на ключ засекречивания, используя команды из пункта 7. Демон утилиты при этом не останавливается.

  13. Перезапустите сервис Pangolin Manager, используя команду из пункта 6.

  14. Убедитесь, что в работе Pangolin Manager отсутствуют ошибки, используя команды из пункта 4.

    Ожидаемый результат: В после Active установлено значение active (running), в логе работы Pangolin Manager отсутствуют ошибки.

При изменении системного идентификатора machine_id перестраивается ключ засекречивания параметров подключения к БД. Это приводит к следующим последствиям:

  • Если службы утилиты pangolin-auth-reencrypt остановлены, ранее сохраненные пароли становятся недействительными. В результате Pangolin Manager теряет доступ к БД и не может управлять кластером.
  • Если службы утилиты активны и работают в фоне, все пароли автоматически перекодируются под новый machine_id. Благодаря этому управляемость кластера сохраняется, и работа Pangolin Manager не нарушается.

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