Обновление SberLinux OS Server 8 на версию 9 с предустановленной СУБД Pangolin
Актуально для СУБД Pangolin версии 6.3.x.
Внимание!
Обновление ОС подразумевает полную недоступность кластера СУБД Pangolin.
Поскольку инструкция является универсальной для кластерной и standalone-конфигураций, каждый пункт необходимо выполнить на всех узлах. Обновление необходимо производить только тех компонентов, которые есть на исходном стенде. Иначе пропустить выполнение шага. Для удобства такие шаги помечены тегом - опционально
.
Перед началом выполнения инструкции необходимо убедиться, что yum/dnf
-репозитории настроены корректно.
Обновление СУБД осуществляется пользователем с правами суперпользователя, пользователя postgres
и пользователя kmadmin_pg
. Необходимо учесть это на старте выполнения инструкции.
Внимание!
Перед началом обновления сохраните дистрибутив СУБД Pangolin SberLinux OS Server 9 на каждый узел. В инструкции каталог будет размещен в
~/pangolin_sbel9
.
Шаг 1. Подготовка ВМ к процедуре обновления ОС
-
(Опционально для конфигурации с Pangolin Manager) Введите Pangolin Manager в режим паузы:
sudo -iu postgres
pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml edit-config --set 'pause=true' --force
exit -
Остановите все компоненты СУБД Pangolin. В случае кластерной конфигурации действия по остановке произведите сначала на реплике затем на основном узле.
- Без функциональности «Отказ от root»:
# (опционально) Для конфигурации с pangolin-manager
sudo systemctl stop pangolin-manager
# (опционально) Для конфигурации с 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- С функциональностью «Отказ от root»:
# (опционально) Для конфигурации с 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 -
Проверьте, что все компоненты корректно остановлены:
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. Создайте резервную копию рабочих файлов 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. Обновление ОС
-
Установите утилиту:
dnf -y install leapp-upgrade
-
Создайте файл с репозиториями для использования утилиты:
touch /etc/leapp/files/leapp_upgrade_repositories.repo
Имена
id
должны отличаться отid
в репозитории/etc/yum.repos.d/
.leapp_upgrade_repositories.repo
:[SBERLINUX-BASE-9]
name=SBERLINUX-BASE
baseurl=http://<URL>
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-SberTech-System-Tribe
enabled=1
[SBERLINUX-APPSTREAM-9]
name=SBERLINUX-APPSTREAM
baseurl=http://<URL>
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-SberTech-System-Tribe
enabled=1
[SBERLINUX-HighAvailability-9]
name=SBERLINUX-HighAvailability
baseurl=http://<URL>
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-SberTech-System-Tribe
enabled=1
[SBERLINUX-powertools-9]
name=SBERLINUX-powertools
baseurl=http://<URL>
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-SberTech-System-Tribe
enabled=1 -
Замените строки в файле
/etc/leapp/repos.d/system_upgrade/common/libraries/config/version.py
:_SUPPORTED_VERSIONS = {
#'8': {'rhel': ['8.6', '8.8'], 'rhel-saphana': ['8.6', '8.8']},
'8': {'sberlinux': ['8.6', '8.8'], 'rhel-saphana': ['8.6', '8.8']},
} -
Уберите проверку
checkinstalledkernels
:mv /etc/leapp/repos.d/system_upgrade/common/actors/kernel/checkinstalledkernels /var/tmp
-
Обновите с флагом перезагрузки после завершения:
leapp upgrade --no-rhsm --nogpgcheck –-reboot
-
Замените репозитории
yum
на новые в целевом месте (/etc/yum.repos.d/
):[SBERLINUX-BASE]
name=SBERLINUX-BASE
baseurl=http://<URL>
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-SberTech-System-Tribe
enabled=1
[SBERLINUX-APPSTREAM]
name=SBERLINUX-APPSTREAM
baseurl=http://<URL>
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-SberTech-System-Tribe
enabled=1
[SBERLINUX-HighAvailability]
name=SBERLINUX-HighAvailability
baseurl=http://<URL>
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-SberTech-System-Tribe
enabled=1
[SBERLINUX-powertools]
name=SBERLINUX-powertools
baseurl=http://<URL>
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-SberTech-System-Tribe
enabled=1
[SBERLINUX-pangolin]
name=SBERLINUX-pangolin
baseurl=http://<URL>
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-SberLinux
enabled=1
[SBERLINUX-pangolin-dev]
name=SBERLINUX-pangolin-dev
baseurl=http://<URL>
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-SberLinux
enabled=1 -
Убедитесь в том, что версия ОС была корректна изменена:
sudo cat /etc/os-release
Ожидаемый результат:
NAME="SberLinux"
VERSION="9.3 (Shkhara)"
ID="sberlinux"
ID_LIKE="rhel sberlinux fedora"
VERSION_ID="9.3"
PLATFORM_ID="platform:el9"
PRETTY_NAME="SberLinux 9.3 (Shkhara)"
ANSI_COLOR="0;34"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:sberlinux:sberlinux:9::baseos"
HOME_URL="https://sbertech.ru/"
DOCUMENTATION_URL="https://sbertech.ru/"
BUG_REPORT_URL="https://sbertech.ru/"
SBERLINUX_MANTISBT_PROJECT="SberLinux-9"
SBERLINUX_MANTISBT_PROJECT_VERSION="9.3"
REDHAT_SUPPORT_PRODUCT="SberLinux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.3"
Шаг 3. Восстановление работы СУБД Pangolin после обновления ОС
-
Остановите все компоненты СУБД Pangolin. В случае кластерной конфигурации действия по остановке произведите сначала на реплике, затем на основном.
- Без функциональности «Отказ от 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- С функциональностью «Отказ от root»:
# (опционально) Для конфигурации с 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.3.0
export PANGOLIN_MANAGER_VER=2.1.1
export PANGOLIN_POOLER_VER=1.3.1
export PANGOLIN_BACKUP_TOOLS_VER=1.2.1
# (опционально) Для конфигурации с pangolin-manager
sudo dnf install -y ~/pangolin_sbel9/pangolin-manager-$PANGOLIN_MANAGER_VER-sberlinux9.3.x86_64.rpm
# (опционально) Для любой конфигурации
sudo dnf install -y ~/pangolin_sbel9/pangolin-dbms-6.3-$PANGOLIN_VER-sberlinux9.3.x86_64.rpm
sudo dnf install -y ~/pangolin_sbel9/pangolin-dbms-6.3-client-$PANGOLIN_VER-sberlinux9.3.x86_64.rpm
sudo dnf install -y ~/pangolin_sbel9/pangolin-pooler-$PANGOLIN_POOLER_VER-sberlinux9.3.x86_64.rpm
sudo dnf install -y ~/pangolin_sbel9/pangolin-backup-tools-$PANGOLIN_BACKUP_TOOLS_VER-sberlinux9.3.x86_64.rpm
sudo dnf install -y ~/pangolin_sbel9/timescaledb/pangolin-timescaledb-6.3-apache-2.14.2-sberlinux9.3-x86_64.rpm
sudo dnf install -y ~/pangolin_sbel9/utilities/pangolin-auth-reencrypt-$PANGOLIN_VER-sberlinux9.3.x86_64.rpm
sudo dnf install -y ~/pangolin_sbel9/utilities/pangolin-certs-rotate-$PANGOLIN_VER-sberlinux9.3.x86_64.rpm
sudo dnf install -y ~/pangolin_sbel9/utilities/pangolin-diagnostic-tool-$PANGOLIN_VER-sberlinux9.3.x86_64.rpm
sudo dnf install -y ~/pangolin_sbel9/utilities/pangolin-security-utilities-$PANGOLIN_VER-sberlinux9.3.x86_64.rpm -
(Опционально) Восстановите etcd:
sudo rm -rf /var/lib/etcd /etc/etcd
sudo cp -ra ~/pangolin_sbel9/etcd_backup_lib/etcd /var/lib/
sudo cp -ra ~/pangolin_sbel9/etcd_backup_conf/etcd /etc/ -
Запустите компоненты СУБД Pangolin.
- Без функциональности «Отказ от root»:
# (опционально) Для конфигурации с pangolin-manager
sudo systemctl restart pangolin-manager
# (опционально) Для конфигурации без 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- С функциональностью «Отказ от root»:
sudo -iu postgres
# (опционально) Для конфигурации с pangolin-manager
systemctl --user restart pangolin-manager
# (опционально) Для конфигурации без 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). Выведите Pangolin Manager из режима паузы:
sudo -iu postgres
pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml edit-config --set 'pause=false' --force
exit -
Перестройте все объекты баз данных, которые используют параметры сортировки по умолчанию:
sudo -iu postgres
psql
DO $$
DECLARE
db_name TEXT;
BEGIN
FOR db_name IN (SELECT datname FROM pg_database WHERE datname NOT IN ('template0','template1')) LOOP
EXECUTE format('ALTER DATABASE %I REFRESH COLLATION VERSION', db_name);
END LOOP;
END $$;
\q
exit -
Проверьте корректность запуска компонентов.
- Без функциональности «Отказ от 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- С функциональностью «Отказ от root»:
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 signature
Consult 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 met
Consult the pre-upgrade report for details and possible remediation.
Summary: Memory detected: 962 MiB, required: 1536 MiBУвеличьте значение
mem
.