Восстановление работоспособности узла кластера при смене параметров сервера
Описание
Текущее решение по хранению параметров подключения к БД в засекреченном виде обладает следующим ограничением — при смене параметров сервера теряется возможность декодировать параметры подключения к БД, так как ключ кодирования создается на основании этих параметров. Хранение параметров подключения к БД обусловлено необходимостью автоматического доступа к БД (без ввода пароля со стороны пользователя) со стороны утилит, входящих в состав БД, а кодирование вызвано требованием предотвратить доступ к параметрам подключения, хранящимся в открытом виде. Для решения этой проблемы разработана утилита перекодирования параметров подключения к БД pangolin-auth-reencrypt при смене параметров сервера.
Сценарии использования
В данном разделе представлены шаги для восстановления работоспособности узла кластера при смене параметров сервера:
-
Убедитесь, что службы
pangolin-auth-reencryptзапущены и работают:-
Для пользователя
kmadmin_pg:sudo systemctl status pangolin-auth-reencrypt@kmadmin_pg -
Для пользователя
postgres:sudo systemctl status pangolin-auth-reencrypt@postgres
Ожидаемый результат: в поле
Activeустановлено значениеactive(running). -
-
Остановите службы утилиты перекодирования:
-
Для пользователя
kmadmin_pg:sudo systemctl stop pangolin-auth-reencrypt@kmadmin_pg -
Для пользователя
postgres:sudo systemctl stop pangolin-auth-reencrypt@postgres
-
-
Убедитесь, что службы остановлены, используя команды из пункта 1.
Ожидаемый результат: в поле
Activeустановлено значениеinactive(dead). -
Убедитесь, что сервис Pangolin Manager работает от имени пользователя
postgres:systemctl --user status pangolin-manager.serviceОжидаемый результат: сервис в состоянии
active(running), в журнале ошибок нет. -
Измените идентификатор системы
machine_id, влияющий на ключ засекречивания:sudo rm -f /etc/machine-id
sudo dbus-uuidgen --ensure=/etc/machine-id
sudo dbus-uuidgen --ensure -
Перезапустите сервис Pangolin Manager от имени пользователя
postgres:systemctl --user restart pangolin-manager.service -
Проверьте журнал
/pgerrorlogs/<basic_version>/pangolin-manager/pangolin-manager-<current_date>(base_version- это базовая версия СУБД (текущая 7),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 ... -
Запустите службы утилиты перекодирования.
-
Для пользователя
kmadmin_pg:sudo systemctl start pangolin-auth-reencrypt@kmadmin_pg -
Для пользователя
postgres:sudo systemctl start pangolin-auth-reencrypt@postgres
-
-
Проверьте состояние служб демонов, используя команды из пункта 1.
Ожидаемый результат: Для всех служб в после
Activeустановлено значениеactive(running). -
Перезапустите сервис Pangolin Manager, используя команду из пункта 6.
-
С помощью команды из пункта 4, убедитесь, что в работе Pangolin Manager отсутствуют ошибки.
Ожидаемый результат: В после
Activeустановлено значениеactive(running), в логе работы Pangolin Manager отсутствуют ошибки. -
Повторно измените идентификатор системы
machine_id, влияющий на ключ засекречивания, используя команды из пункта 7. Демон утилиты при этом не останавливается. -
Перезапустите сервис Pangolin Manager, используя команду из пункта 6.
-
Убедитесь, что в работе Pangolin Manager отсутствуют ошибки, используя команды из пункта 4.
Ожидаемый результат: В после
Activeустановлено значениеactive(running), в логе работы Pangolin Manager отсутствуют ошибки.
При изменении системного идентификатора machine_id перестраивается ключ засекречивания параметров подключения к БД. Это приводит к следующим последствиям:
- Если службы утилиты
pangolin-auth-reencryptостановлены, ранее сохраненные пароли становятся недействительными. В результате Pangolin Manager теряет доступ к БД и не может управлять кластером. - Если службы утилиты активны и работают в фоне, все пароли автоматически перекодируются под новый
machine_id. Благодаря этому управляемость кластера сохраняется, и работа Pangolin Manager не нарушается.
Таким образом, запуск и корректная работа утилиты перекодирования является обязательным условием для обеспечения непрерывного функционирования кластера при изменении параметров сервера.