Содержание
Обновление Security Server Ubuntu 20.04 до 22.04 на месте
В этом документе описываются шаги, необходимые для обновления автономного хоста Security Server с версии Ubuntu 20.04 LTS до Ubuntu 22.04 LTS. Пожалуйста, внимательно прочитайте весь документ перед началом процесса обновления. Предполагается, что читатель знаком с дистрибутивом Ubuntu Linux и имеет опыт обновления версии Ubuntu.
С обновлением до Ubuntu 22.04 LTS PostgreSQL обновляется с версии 12 до 14.
Альтернативный метод обновления
Подготовка
- Ознакомьтесь с примечаниями к выпуску Ubuntu и инструкциями по обновлению:
- 20.04 → 22.04 https://wiki.ubuntu.com/JammyJellyfish/ReleaseNotes
- Обновите все пакеты до последних версий:
sudo apt update && apt full-upgrade
- Убедитесь, что версия программного обеспечения X-Road не ниже 7.2.2.
- Рекомендуется: убедитесь, что у вас есть актуальная резервная копия (или моментальный снимок виртуальной машины) сервера и базы данных.
- Используйте пользовательский интерфейс администратора, чтобы сделать резервную копию конфигурации Security Server и загрузить ее в безопасное место.
- Это позволяет восстановить конфигурацию сервера, если обновление по какой-либо причине не удалось.
- Резервная копия базы данных serverconf:
sudo -iu postgres pg_dump -d serverconf -F c -f /var/lib/xroad/backup/serverconf_backup_$(date +%Y%m%d).sql
- Остановите Security Server и запретите его автоматический запуск при загрузке:
sudo systemctl stop "xroad-*" sudo systemctl disable xroad-proxy xroad-signer xroad-confclient xroad-monitor xroad-opmonitor xroad-proxy-ui-api xroad-base sudo systemctl list-unit-files | grep "xroad"
Обновление Ubuntu 20.04 до 22.04
- Установите update-manager-core, если он еще не установлен:
dpkg -l | grep "update-manager-core"
- Убедитесь, что для строки подсказки в файле /etc/update-manager/release-upgrades установлено значение «lts»:
sudo grep "Prompt=lts" /etc/update-manager/release-upgrades
- Запустите средство обновления с помощью команды:
sudo do-release-upgrade
- Следуйте инструкциям на экране.
- Когда обновление будет завершено, перезагрузитесь при появлении запроса.
Обновление программного обеспечения X-Road
Обновите базу данных
- Процесс обновления Ubuntu по умолчанию создает пустой экземпляр базы данных, который следует удалить перед обновлением старой базы данных до версии 14.
- Просмотрите экземпляры базы данных с помощью pg_lsclusters и удалите лишние.
- Не удаляйте версию 12 (основную), работающую через порт 5432.
sudo pg_dropcluster --stop <version, e.g. 14> main
Пример
sudo pg_lsclusters Ver Cluster Port Status Owner Data directory Log file 12 main 5432 online postgres /var/lib/postgresql/12/main /var/log/postgresql/postgresql-12-main.log 14 main 5433 online postgres /var/lib/postgresql/14/main /var/log/postgresql/postgresql-14-main.log sudo pg_dropcluster --stop 14 main
- Обновите старую базу данных до версии 14.
sudo pg_upgradecluster --method=upgrade --link 12 main
Пример
sudo pg_upgradecluster --method=upgrade --link 12 main sudo pg_lsclusters Ver Cluster Port Status Owner Data directory Log file 12 main 5433 down postgres /var/lib/postgresql/12/main /var/log/postgresql/postgresql-12-main.log 14 main 5432 online postgres /var/lib/postgresql/14/main /var/log/postgresql/postgresql-14-main.log
Обновите репозиторий пакетов X-Road, чтобы он указывал на пакеты Ubuntu 22.04, версии 7.2.2
Удалить старые репозитории:
sudo rm -rf /etc/apt/sources.list.d/*
Импортировать GPG ключ репозитория:
wget -qO - https://deb.tunduk.kg/key.pub | sudo tee /etc/apt/keyrings/xroad.asc
Добавить репозиторий в список источников пакетов ОС:
echo "deb [signed-by=/etc/apt/keyrings/xroad.asc] https://deb.tunduk.kg/ubuntu22.04-7.2.2 /" | sudo tee -a /etc/apt/sources.list.d/xroad.list
Произвести обновление системы:
sudo apt update && apt full-upgrade
Включить все службы X-Road в автозагрузку:
sudo systemctl enable xroad-proxy xroad-signer xroad-confclient xroad-monitor xroad-opmonitor xroad-proxy-ui-api
Проверить все ли службы включены:
sudo systemctl list-unit-files | grep "xroad"
Стартовать службы X-Road:
sudo systemctl start "xroad-*"
или
sudo systemctl start xroad-proxy
Установка выполнена успешно, если запущены системные службы и пользовательский интерфейс отвечает. Чтобы убедиться, что сервисы X-Road находятся в запущенном состоянии, задайте команду:
sudo systemctl list-units "xroad*"
Удаление старой базы данных и устаревших пакетов
Убедившись, что обновление базы данных прошло успешно, удалите старую базу данных и удалите устаревшие пакеты PostgreSQL:
sudo pg_dropcluster 12 main sudo apt purge postgresql-12 sudo apt autoremove
Поиск неисправностей
- Если восстановление после сбоя обновления невозможно и имеется резервная копия/моментальный снимок, можно восстановить его и начать заново.
- Если ничего не помогло, выполните чистую установку Ubuntu 22.04 и восстановите конфигурацию Security Server из резервной копии.
- Если возникает проблема с locale, в данном случае нужно сделать export всех необходимых локалей. Пример проблемы:
pg_upgradecluster --method=upgrade --link 12 main
Stopping old cluster...
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_ADDRESS = "ru_RU.UTF-8",
LC_NAME = "ru_RU.UTF-8",
LC_MONETARY = "ru_RU.UTF-8",
LC_PAPER = "ru_RU.UTF-8",
LC_IDENTIFICATION = "ru_RU.UTF-8",
LC_TELEPHONE = "ru_RU.UTF-8",
LC_MEASUREMENT = "ru_RU.UTF-8",
LC_TIME = "ru_RU.UTF-8",
LC_NUMERIC = "ru_RU.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_US.UTF-8").
Error: The locale requested by the environment is invalid:
LANG: en_US.UTF-8
LC_ADDRESS: ru_RU.UTF-8
LC_IDENTIFICATION: ru_RU.UTF-8
LC_MEASUREMENT: ru_RU.UTF-8
LC_MONETARY: ru_RU.UTF-8
LC_NAME: ru_RU.UTF-8
LC_NUMERIC: ru_RU.UTF-8
LC_PAPER: ru_RU.UTF-8
LC_TELEPHONE: ru_RU.UTF-8
LC_TIME: ru_RU.UTF-8
Error: Could not create target cluster
Решение:
export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 export LC_ADDRESS=en_US.UTF-8 export LC_IDENTIFICATION=en_US.UTF-8 export LC_MEASUREMENT=en_US.UTF-8 export LC_MONETARY=en_US.UTF-8 export LC_NAME=en_US.UTF-8 export LC_NUMERIC=en_US.UTF-8 export LC_PAPER=en_US.UTF-8 export LC_TELEPHONE=en_US.UTF-8 export LC_TIME=en_US.UTF-8 update-locale
Проверка работы
После обновления рекомендуется проверить:
- Доступность веб-интерфейса Security Server
- Работу всех сервисов X-Road
- Размер и состояние баз данных
- Логи на наличие ошибок
Проверка размера баз данных:
sudo -u postgres psql -c "SELECT pg_database.datname,
pg_size_pretty(pg_database_size(pg_database.datname)) AS size
FROM pg_database
WHERE datname IN ('serverconf', 'messagelog', 'op-monitor');"
Проверка логов:
sudo journalctl -u xroad-proxy -n 100
Автор Даниил Горбенко
