Обновление SberLinux OS Server 8 на версию 9 с предустановленной СУБД Pangolin
Актуально для СУБД Pangolin версии 6.5.x.
Обновление ОС подразумевает полную недоступность кластера СУБД Pangolin.
Поскольку инструкция является универсальной для кластерной и standalone-конфигураций, каждый пункт необходимо выполнить на всех узлах. Обновление необходимо производить только тех компонентов, которые есть на исходном стенде. Иначе пропустить выполнение шага. Для удобства такие шаги помечены тегом - опционально.
Перед началом выполнения инструкции необходимо убедиться, что yum/dnf-репозитории настроены корректно.
Обновление СУБД осуществляется пользователем с правами суперпользователя, пользователя postgres и пользователя kmadmin_pg. Необходимо учесть это на старте выполнения инструкции.
Перед началом обновления сохраните дистрибутив СУБД Pangolin SberLinux OS Server 9 на каждый узел. В инструкции каталог будет размещен в ~/pangolin_sbel9, расширения и дополнительные компоненты будут размещены в каталоге ~/party_distrib.
Шаг 1. Подготовка виртуальной машины к процедуре обновления ОС
-
Введите компонент Pangolin Manager в режим паузы (опционально):
sudo -iu postgrespangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml edit-config --set 'pause=true' --forceexit -
Остановите все компоненты СУБД Pangolin. В случае кластерной конфигурации действия по остановке произведите сначала на реплике затем на основном узле:
- Без функциональности «Отказ от root»
- С функциональностью «Отказ от root»
# (опционально) Для конфигурации с pangolin-manager
sudo systemctl stop pangolin-manager
sudo -iu postgres
pg_ctl stop
exit
# (опционально) Для конфигурации с etcd
sudo systemctl stop etcd
# (опционально) Для конфигурации без pangolin-manager
sudo systemctl stop postgresql
# Для любой конфигурации
sudo systemctl stop pangolin-pooler
sudo systemctl stop pangolin-certs-rotate
sudo systemctl stop pangolin-auth-reencrypt@postgres
sudo systemctl stop pangolin-auth-reencrypt@kmadmin_pg
# (опционально) Для конфигурации с etcd
sudo systemctl stop etcd
sudo -iu postgres
# (опционально) Для конфигурации с pangolin-manager
systemctl --user stop pangolin-manager
pg_ctl stop
# (опционально) Для конфигурации без pangolin-manager
systemctl --user stop postgresql
# Для любой конфигурации
systemctl --user stop pangolin-pooler
systemctl --user stop pangolin-certs-rotate
systemctl --user stop pangolin-auth-reencrypt
exit
sudo -iu kmadmin_pg
export XDG_RUNTIME_DIR=/run/user/$(id -u)
export DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"
systemctl --user stop pangolin-auth-reencrypt
exit
-
Проверьте, что все компоненты корректно остановлены:
sudo ps aux | grep -E "pangolin-pooler|pangolin-manager|postgresql|pangolin-certs-rotate|pangolin-auth-reencrypt@postgres|pangolin-auth-reencrypt@kmadmin_pg|etcd" | grep -v grep -
Если на предыдущем шаге была выведена информация, то выполните:
sudo kill -9 <pid>sudo ps aux | grep -E "pangolin-pooler|pangolin-manager|postgresql|pangolin-certs-rotate|pangolin-auth-reencrypt@postgres|pangolin-auth-reencrypt@kmadmin_pg|etcd" | grep -v grep -
Создайте резервную копию рабочих файлов etcd (опционально):
sudo mkdir -p ~/pangolin_sbel9/{etcd_backup_lib,etcd_backup_conf}sudo cp -ra /var/lib/etcd ~/pangolin_sbel9/etcd_backup_lib/sudo cp -ra /etc/etcd ~/pangolin_sbel9/etcd_backup_conf/
Шаг 2. Обновление ОС
Обновление SberLinux рекомендуется производить по предоставляемой технической документации ОС. Далее в данном шаге представлены примеры действий по указанному сценарию.
-
Установите утилиту:
sudo dnf -y install leapp-upgrade -
Создайте файл с репозиториями для использования утилиты:
sudo touch /etc/leapp/files/leapp_upgrade_repositories.repoИмена
idдолжны отличаться отidв репозитории/etc/yum.repos.d/.leapp_upgrade_repositories.repo:[SBERLINUX-BASE-9]name=SBERLINUX-BASEbaseurl=http://<IP-Address>gpgcheck=1gpgkey=file://<IP-Address>enabled=1[SBERLINUX-APPSTREAM-9]name=SBERLINUX-APPSTREAMbaseurl=http://<IP-Address>gpgcheck=1gpgkey=file://<IP-Address>enabled=1[SBERLINUX-HighAvailability-9]name=SBERLINUX-HighAvailabilitybaseurl=http://<IP-Address>gpgcheck=1gpgkey=file://<IP-Address>enabled=1[SBERLINUX-powertools-9]name=SBERLINUX-powertoolsbaseurl=http://<IP-Address>gpgcheck=1gpgkey=file://<IP-Address>enabled=1 -
Замените строки в файле
/etc/leapp/repos.d/system_upgrade/common/libraries/config/version.py:_SUPPORTED_VERSIONS = {#' ': {'rhel': [' ', ' '], 'rhel-saphana': [' ', ' ']},' ': {'sberlinux': [' ', ' '], 'rhel-saphana': [' ', ' ']},} -
Уберите проверку
checkinstalledkernels:sudo mv /etc/leapp/repos.d/system_upgrade/common/actors/kernel/checkinstalledkernels /var/tmp -
Обновите с флагом перезагрузки после завершения:
sudo leapp upgrade --no-rhsm --nogpgcheck –-reboot -
Замените репозитории
yumна новые в целевом месте (/etc/yum.repos.d/):[SBERLINUX-BASE]name=SBERLINUX-BASEbaseurl=http://<IP-Address>gpgcheck=1gpgkey=file://<IP-Address>enabled=1[SBERLINUX-APPSTREAM]name=SBERLINUX-APPSTREAMbaseurl=http://<IP-Address>gpgcheck=1gpgkey=file://<IP-Address>enabled=1[SBERLINUX-HighAvailability]name=SBERLINUX-HighAvailabilitybaseurl=http://<IP-Address>gpgcheck=1gpgkey=file://<IP-Address>enabled=1[SBERLINUX-powertools]name=SBERLINUX-powertoolsbaseurl=http://<IP-Address>gpgcheck=1gpgkey=file://<IP-Address>enabled=1[SBERLINUX-pangolin]name=SBERLINUX-pangolinbaseurl=http://<IP-Address>gpgcheck=1gpgkey=file://<IP-Address>enabled=1[SBERLINUX-pangolin-dev]name=SBERLINUX-pangolin-devbaseurl=http://<IP-Address>gpgcheck=1gpgkey=file://<IP-Address>enabled=1 -
Убедитесь в том, что версия ОС была корректна изменена:
sudo cat /etc/os-release -
Обновите пакеты:
sudo dnf update -y
Шаг 3. Восстановление конфигурационных файлов компонентов
После обновления версии ОС и удаления rpm-пакетов Pangolin, установленных для предыдущей версии ОС, файлы конфигурации автоматически переименовываются с добавлением постфикса .rpmsave. Перед установкой пакетов Pangolin для новой версии ОС необходимо вернуть исходные имена конфигурационных файлов.
Восстановите конфигурационные файлы компонентов после обновления, если они используются в СУБД:
Для компонента pangolin-backup-tools:
cd /etc/pangolin-backup-tools/
rm backup-tools-env
mv backup-tools-env.rpmsave backup-tools-env
-
Для компонента
pangolin-manager:cd /etc/pangolin-manager/rm postgres.ymlmv postgres.yml.rpmsave postgres.yml
Шаг 4. Восстановление работы СУБД Pangolin после обновления ОС
- Остановите все компоненты СУБД Pangolin. В случае кластерной конфигурации действия по остановке произведите сначала на реплике, затем на основном:
- Без функциональности «Отказ от root»
- С функциональностью «Отказ от root»
# (опционально) Для конфигурации с etcd
sudo systemctl stop etcd
# (опционально) Для конфигурации с pangolin-manager
sudo systemctl stop pangolin-manager
# (опционально) Для конфигурации без pangolin-manager
sudo systemctl stop postgresql
# Для любой конфигурации
sudo systemctl stop pangolin-pooler
sudo systemctl stop pangolin-certs-rotate
sudo systemctl stop pangolin-auth-reencrypt@postgres
sudo systemctl stop pangolin-auth-reencrypt@kmadmin_pg
# (опционально) Для конфигурации с etcd
sudo systemctl stop etcd
sudo -iu postgres
# (опционально) Для конфигурации с pangolin-manager
systemctl --user stop pangolin-manager
# (опционально) Для конфигурации без pangolin-manager
systemctl --user stop postgresql
# Для любой конфигурации
systemctl --user stop pangolin-pooler
systemctl --user stop pangolin-certs-rotate
systemctl --user stop pangolin-auth-reencrypt
exit
sudo -iu kmadmin_pg
export XDG_RUNTIME_DIR=/run/user/$(id -u)
export DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"
systemctl --user stop pangolin-auth-reencrypt
exit
-
Обновите rpm-пакеты компонентов:
export PANGOLIN_VER=6.5.2export PANGOLIN_MANAGER_VER=2.1.8export PANGOLIN_POOLER_VER=1.5.2export PANGOLIN_BACKUP_TOOLS_VER=1.2.5# (опционально) Для конфигурации с pangolin-managersudo dnf install -y ~/pangolin_sbel9/pangolin-manager-$PANGOLIN_MANAGER_VER-sberlinux9.x86_64.rpm# venv для pangolin-managersudo dnf install -y ~/party_distrib/pangolin-manager-venv/pangolin-manager-venv-1.1.0-sberlinux9.5.x86_64.rpm# (опционально) Для любой конфигурацииsudo dnf install -y ~/pangolin_sbel9/utilities/pangolin-security-utilities-$PANGOLIN_VER-sberlinux9.x86_64.rpmsudo dnf install -y ~/pangolin_sbel9/pangolin-dbms-6.5-$PANGOLIN_VER-sberlinux9.x86_64.rpmsudo dnf install -y ~/pangolin_sbel9/pangolin-dbms-6.5-client-$PANGOLIN_VER-sberlinux9.x86_64.rpmsudo dnf install -y ~/pangolin_sbel9/pangolin-pooler-$PANGOLIN_POOLER_VER-sberlinux9.x86_64.rpmsudo dnf install -y ~/pangolin_sbel9/pangolin-backup-tools-$PANGOLIN_BACKUP_TOOLS_VER-sberlinux9.x86_64.rpm# venv для pangolin-backup-toolssudo dnf install -y ~/party_distrib/pangolin-backup-tools-venv/pangolin-backup-tools-venv-1.1.0-sberlinux9.x86_64.rpmsudo dnf install -y ~/pangolin_sbel9/timescaledb/pangolin-timescaledb-6.5-apache-2.14.2-sberlinux9.x86_64.rpmsudo dnf install -y ~/pangolin_sbel9/utilities/pangolin-auth-reencrypt-$PANGOLIN_VER-sberlinux9.x86_64.rpmsudo dnf install -y ~/pangolin_sbel9/utilities/pangolin-certs-rotate-$PANGOLIN_VER-sberlinux9.x86_64.rpmsudo dnf install -y ~/pangolin_sbel9/utilities/pangolin-diagnostic-tool-$PANGOLIN_VER-sberlinux9.x86_64.rpm -
Восстановите etcd (опционально):
sudo rm -rf /var/lib/etcd /etc/etcdsudo cp -ra ~/pangolin_sbel9/etcd_backup_lib/etcd /var/lib/sudo cp -ra ~/pangolin_sbel9/etcd_backup_conf/etcd /etc/ -
Запустите компоненты СУБД Pangolin.
- Без функциональности «Отказ от root»
- С функциональностью «Отказ от root»
# (опционально) Для конфигурации с pangolin-manager
sudo systemctl restart pangolin-manager
sudo -iu postgres
pg_ctl start
exit
# (опционально) Для конфигурации без pangolin-manager
sudo systemctl restart postgresql
# (опционально) Для конфигурации с etcd
sudo systemctl restart etcd
# (опционально) Для конфигурации с dsc. !!! Только для узла arbiter.
sudo chmod -R 0440 /opt/pangolin-manager/lib/plugins/ /opt/pangolin-manager/lib/libfe_elog.so
sudo chmod 0770 /opt/pangolin-manager /opt/pangolin-manager/bin /opt/pangolin-manager/lib /opt/pangolin-manager/lib/plugins
sudo chown postgres:pangolin_users /opt/pangolin-manager /opt/pangolin-manager/bin /opt/pangolin-manager/lib /opt/pangolin-manager/lib/plugins /opt/pangolin-manager/lib/libfe_elog.so
# (опционально) Для любой конфигурации
sudo systemctl restart pangolin-pooler
sudo systemctl restart pangolin-certs-rotate
sudo systemctl restart pangolin-auth-reencrypt@postgres
sudo systemctl restart pangolin-auth-reencrypt@kmadmin_pg
sudo -iu postgres
# (опционально) Для конфигурации с pangolin-manager
systemctl --user restart pangolin-manager
pg_ctl restart
# (опционально) Для конфигурации без pangolin-manager
systemctl --user restart postgresql
# (опционально) Для конфигурации с etcd
exit
systemctl restart etcd
# Для любой конфигурации
sudo -iu postgres
systemctl --user restart pangolin-pooler
systemctl --user restart pangolin-certs-rotate
systemctl --user restart pangolin-auth-reencrypt
exit
# (опционально) Для конфигурации с dsc. !!! Только для узла arbiter.
sudo chmod -R 0440 /opt/pangolin-manager/lib/plugins/ /opt/pangolin-manager/lib/libfe_elog.so
sudo chmod 0770 /opt/pangolin-manager /opt/pangolin-manager/bin /opt/pangolin-manager/lib /opt/pangolin-manager/lib/plugins
sudo chown postgres:pangolin_users /opt/pangolin-manager /opt/pangolin-manager/bin /opt/pangolin-manager/lib /opt/pangolin-manager/lib/plugins /opt/pangolin-manager/lib/libfe_elog.so
# Для любой конфигурации
sudo -iu kmadmin_pg
export XDG_RUNTIME_DIR=/run/user/$(id -u)
export DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"
systemctl --user restart pangolin-auth-reencrypt
exit
-
Выведите компонент Pangolin Manager из режима паузы (опционально):
sudo -iu postgrespangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml edit-config --set 'pause=false' --forceexit -
Перестройте все объекты баз данных, которые используют параметры сортировки по умолчанию:
sudo -iu postgrespsqlDO $$DECLAREdb_name TEXT;BEGINFOR db_name IN (SELECT datname FROM pg_database WHERE datname NOT IN ('template0','template1')) LOOPEXECUTE format('ALTER DATABASE %I REFRESH COLLATION VERSION', db_name);END LOOP;END $$;\qexit -
Проверьте корректность запуска компонентов.
- Без функциональности «Отказ от root»
- С функциональностью «Отказ от root»
# (опционально) Для конфигурации с pangolin-manager
sudo systemctl status pangolin-manager
# (опционально) Для конфигурации без pangolin-manager
sudo systemctl status postgresql
# (опционально) Для конфигурации с etcd
sudo systemctl status etcd
# (опционально) Для любой конфигурации
sudo systemctl status pangolin-pooler
sudo systemctl status pangolin-certs-rotate
sudo systemctl status pangolin-auth-reencrypt@postgres
sudo systemctl status pangolin-auth-reencrypt@kmadmin_pg
sudo -iu postgres
# (опционально) Для конфигурации с pangolin-manager
systemctl --user status pangolin-manager
# (опционально) Для конфигурации без pangolin-manager
systemctl --user status postgresql
# (опционально) Для конфигурации с etcd
exit
sudo systemctl status etcd
# (опционально) Для любой конфигурации
sudo -iu postgres
systemctl --user status pangolin-pooler
systemctl --user status pangolin-certs-rotate
systemctl --user status pangolin-auth-reencrypt
exit
sudo -iu kmadmin_pg
export XDG_RUNTIME_DIR=/run/user/$(id -u)
export DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"
systemctl --user status pangolin-auth-reencrypt
exit
Возможные проблемы при миграции
-
Если при миграции ОС возникла следующая ошибка на этапе проверки (
leapp preupgrade --no-rhsm --nogpgcheck):Upgrade has been inhibited due to the following problems:1. Inhibitor: Detected RPMs with RSA/SHA1 signatureConsult the pre-upgrade report for details and possible remediation.Выполните:
# Сохраните текущее значениеupdate-crypto-policies --show > crypt# Выставите временное значениеupdate-crypto-policies --set LEGACYПовторно запустите проверку
leapp preupgrade --no-rhsm --nogpgcheck. После полной миграции верните исходное значение:# Верните исходное значениеupdate-crypto-policies --set $(cat crypt) -
Для миграции есть минимальные требования к характеристикам КТС. Если КТС не соответствует каким-то из параметров, то может быть получена ошибка:
Upgrade has been inhibited due to the following problems:1. Inhibitor: Minimum memory requirements for RHEL 9 are not metConsult the pre-upgrade report for details and possible remediation.Summary: Memory detected: 962 MiB, required: 1536 MiBУвеличьте значение
mem.