Инструменты пользователя

Инструменты сайта


upgrade-security-server-new-722
Перед обновлением Ubuntu 20.04 на Ubuntu 22.04 настоятельно рекомендуется снять snapshot сервера и backup конфигурации X-Road!

Обновление 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 22.04 и X-Road 7.2.2, затем восстановить конфигурацию из резервной копии. Этот метод безопаснее и быстрее, так как не затрагивает работающий сервер.

Подготовка

  • Обновите все пакеты до последних версий:
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"
Этот пункт обязателен и не стоит его игнорировать. Перед обновлением ОБЯЗАТЕЛЬНО нужно отключить 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.
Вспомогательный скрипт Ubuntu pg_upgradecluster по умолчанию создает дамп старой базы данных, что может потребовать много времени и свободного места на диске, если база данных большая. Параметр –method=upgrade вместо этого использует pg_upgrade, а параметр –link позволяет избежать копирования файлов данных. (!) Использование –link требует, чтобы новая и старая базы данных находились в одной и той же файловой системе. См. https://www.postgresql.org/docs/14/pgupgrade.html для получения подробной информации и инструкций по восстановлению.
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

Автор Даниил Горбенко

upgrade-security-server-new-722.txt · Последние изменения: 2026/02/09 11:12 — infra