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

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


upgrade-security-server-new-722

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
upgrade-security-server-new-722 [2026/02/09 11:00]
infra
upgrade-security-server-new-722 [2026/02/09 11:12] (текущий)
infra
Строка 1: Строка 1:
-====== MessageLog X-Road: ​настройка и обслуживание ======+<note warning>​Перед обновлением Ubuntu 20.04 на Ubuntu 22.04 настоятельно рекомендуется снять snapshot сервера и backup конфигурации X-Road!</​note>​
  
-MessageLog ​бд PostgreSQL для хранения логов обмена сообщениями X-Road Security Server.+====== Обновление 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.
  
-Файл: /​etc/​xroad/​conf.d/​local.ini+==== Альтернативный метод обновления ====
  
-=== Рекомендуемые настройки ​===+<note tip>Вместо обновления на месте, ​можно развернуть новую виртуальную машину ​с Ubuntu 22.04 и X-Road 7.2.2, затем восстановить конфигурацию из резервной копии. Этот метод безопаснее и быстрее,​ так как не затрагивает работающий сервер.</​note>​
  
 +==== Подготовка ====
 +
 +  * Ознакомьтесь с примечаниями к выпуску Ubuntu и инструкциями по обновлению:​
 +    * 20.04 → 22.04 https://​wiki.ubuntu.com/​JammyJellyfish/​ReleaseNotes
 +
 +  * Обновите все пакеты до последних версий:​
 <​code>​ <​code>​
-[message-log] +sudo apt update && apt full-upgrade
-keep-records-for=1 +
-archive-interval=0 0/2 * 1/1 * ? * +
-clean-interval=0 0/3 * 1/1 * ? * +
-message-body-logging=false +
-clean-transaction-batch=10000 +
-archive-transaction-batch=10000+
 </​code>​ </​code>​
  
-=== Параметры ===+  * Убедитесь,​ что версия программного обеспечения X-Road не ниже 7.2.2.
  
-^ Параметр ^ Значение ^ Описание +  * Рекомендуется: убедитесь, что у вас есть актуальная резервная копия (или моментальный ​снимок виртуальной ​машины) сервера и базы данных.
-| keep-records-for | 1 | Срок хранения в БД (дни) | +
-| archive-interval | 0 0/2 * 1/1 * ? * | Каждые часа архивировать | +
-| clean-interval | 0 0/3 * 1/1 * ? * | Каждые 3 часа очищать БД | +
-| message-body-logging | false | Не сохранять тела сообщений | +
-| clean-transaction-batch | 10000 | Размер пакета ​очистки +
-| archive-transaction-batch | 10000 | Размер пакета архивирования |+
  
-=== Cron-выражения ​===+  * Используйте пользовательский интерфейс ​администратора,​ чтобы сделать резервную копию конфигурации Security Server и загрузить ее в безопасное место. 
 +    * Это позволяет восстановить конфигурацию сервера,​ если обновление по какой-либо причине не удалось.
  
-Формат: секунды минуты часы день месяц день_недели+  * Резервная копия базы данных serverconf:​ 
 +<​code>​ 
 +sudo -iu postgres pg_dump -d serverconf -F c -f /​var/​lib/​xroad/​backup/​serverconf_backup_$(date +%Y%m%d).sql 
 +</​code>​
  
-**Примеры:** +  ​Остановите Security Server и запретите его ​автоматический запуск при загрузке:​ 
-  * 0 0/2 * 1/1 * ? * — Каждые 2 часа +<​code>​ 
-  * 0 0/3 * 1/1 * ? * — Каждые 3 часа +sudo systemctl stop "​xroad-*
-  * 0 0 */6 * * ? — Каждые 6 часов +sudo systemctl disable xroad-proxy xroad-signer xroad-confclient xroad-monitor xroad-opmonitor xroad-proxy-ui-api xroad-base 
-  * 0 0 2 * * ? — Ежедневно в 2:00+sudo systemctl list-unit-files | grep "​xroad"​ 
 +</code>
  
-<​note ​important>Архивные файлы автоматически сохраняются в директории ​/​var/​lib/​xroad/​</​note>​+<​note ​warning>Этот пункт обязателен ​и не стоит его игнорировать. Перед обновлением ОБЯЗАТЕЛЬНО нужно отключить xroad и убрать ​их из автозапуска.</​note>​
  
-==== Проверка работы ====+==== Обновление Ubuntu 20.04 до 22.04 ====
  
-Размер базы данных:+  * Установите update-manager-core,​ если он еще не установлен:
 <​code>​ <​code>​
-sudo -u postgres psql -c "SELECT pg_size_pretty(pg_database_size('​messagelog'​));​"+dpkg -l | grep "update-manager-core"
 </​code>​ </​code>​
  
-Количество записей:+  * Убедитесь,​ что для строки подсказки в файле /​etc/​update-manager/​release-upgrades установлено значение «lts»:
 <​code>​ <​code>​
-sudo -u postgres psql -d messagelog -c "​SELECT COUNT(*) FROM messagelog;"​+sudo grep "​Prompt=lts"​ /etc/update-manager/​release-upgrades
 </​code>​ </​code>​
  
-Применение настроек:+  * Запустите средство обновления с помощью ​команды:
 <​code>​ <​code>​
-sudo systemctl restart xroad-proxy+sudo do-release-upgrade
 </​code>​ </​code>​
  
-==== Устранение проблем ====+  * Следуйте инструкциям на экране.
  
-При переполнении ​БД:+  * Когда обновление будет завершено,​ перезагрузитесь при появлении запроса. 
 + 
 +==== Обновление программного обеспечения X-Road ==== 
 + 
 +=== Обновите базу данных === 
 + 
 +  * Процесс обновления Ubuntu ​по умолчанию создает пустой экземпляр базы данных,​ который следует удалить ​перед обновлением старой базы данных до версии 14. 
 + 
 +  * Просмотрите экземпляры базы данных с помощью pg_lsclusters и удалите лишние. 
 + 
 +  * //Не удаляйте версию 12 (основную),​ работающую через порт 5432//.
  
 <​code>​ <​code>​
-# Очистка старых записей +sudo pg_dropcluster ​--stop <version, e.g. 14> main 
-sudo -u postgres psql -d messagelog -c "​DELETE FROM messagelog WHERE request_in_ts ​NOW() - INTERVAL '1 day';"​+</​code>​
  
-# VACUUM +=== Пример ===
-sudo -u postgres psql -d messagelog -c "​VACUUM ANALYZE messagelog;"​+
  
-# Перезапуск +<​code>​ 
-sudo systemctl restart xroad-proxy+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
 </​code>​ </​code>​
  
-==== Полный пример конфигурации ​====+  * Обновите старую базу данных до версии 14. 
 + 
 +<note important>​Вспомогательный ​скрипт Ubuntu pg_upgradecluster по умолчанию создает дамп старой базы данных,​ что может потребовать много времени и свободного ​места на диске, если база данных большая. Параметр --method=upgrade вместо этого использует pg_upgrade, а параметр --link позволяет избежать ​копирования файлов данных. 
 +(!) Использование --link требует, чтобы новая и старая базы данных находились в одной и той же файловой системе. См. https://​www.postgresql.org/​docs/​14/​pgupgrade.html для получения подробной информации ​и инструкций по восстановлению.</​note>​
  
 <​code>​ <​code>​
-[proxy-ui]+sudo pg_upgradecluster ​--method=upgrade --link 12 main 
 +</​code>​
  
-[proxy] +=== Пример ===
-allow-get-wsdl-request ​true +
-client-http-port ​80 +
-client-https-port ​443+
  
-[message-log] +<​code>​ 
-keep-records-for=+sudo pg_upgradecluster ​--method=upgrade ​--link 12 main
-archive-interval=0 0/2 * 1/1 * ? * +
-clean-interval=0 0/3 * 1/1 * ? * +
-message-body-logging=false +
-clean-transaction-batch=10000 +
-archive-transaction-batch=10000+
  
-[proxy-ui-api] +sudo pg_lsclusters 
-wsdl-validator-command = /usr/share/xroad/wsdlvalidator/bin/wsdlvalidator_wrapper.sh +Ver Cluster Port Status Owner    Data directory ​              Log file 
-strict-identifier-checks ​false+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 
 +</​code>​ 
 + 
 +=== Обновите репозиторий пакетов X-Road, чтобы он указывал на пакеты Ubuntu 22.04, версии 7.2.2 === 
 + 
 +Удалить старые репозитории:​ 
 +<​code>​ 
 +sudo rm -rf /​etc/​apt/​sources.list.d/​* 
 +</​code>​ 
 + 
 +Импортировать GPG ключ репозитория:​ 
 +<​code>​ 
 +wget -qO - https://​deb.tunduk.kg/​key.pub | sudo tee /​etc/​apt/​keyrings/​xroad.asc 
 +</​code>​ 
 + 
 +Добавить репозиторий в список источников пакетов ОС: 
 +<​code>​ 
 +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 
 +</​code>​ 
 + 
 +Произвести обновление системы:​ 
 +<​code>​ 
 +sudo apt update && apt full-upgrade 
 +</​code>​ 
 + 
 +Включить все службы X-Road в автозагрузку:​ 
 +<​code>​ 
 +sudo systemctl enable xroad-proxy xroad-signer xroad-confclient xroad-monitor xroad-opmonitor xroad-proxy-ui-api 
 +</​code>​ 
 + 
 +Проверить все ли службы включены:​ 
 +<​code>​ 
 +sudo systemctl list-unit-files | grep "​xroad"​ 
 +</code> 
 + 
 +Стартовать службы X-Road: 
 +<​code>​ 
 +sudo systemctl start "​xroad-*"​ 
 +</code> 
 + 
 +или 
 + 
 +<​code>​ 
 +sudo systemctl start xroad-proxy 
 +</code> 
 + 
 +Установка выполнена успешно,​ если запущены системные службы и пользовательский интерфейс отвечает. Чтобы убедиться,​ что сервисы X-Road находятся в запущенном состоянии,​ задайте команду:​ 
 +<​code>​ 
 +sudo systemctl list-units "xroad*" 
 +</code> 
 + 
 +=== Удаление старой базы данных и устаревших пакетов === 
 + 
 +Убедившись,​ что обновление базы данных прошло успешно,​ удалите старую базу данных и удалите устаревшие пакеты PostgreSQL:​ 
 +<​code>​ 
 +sudo pg_dropcluster 12 main 
 +sudo apt purge postgresql-12 
 +sudo apt autoremove 
 +</code> 
 + 
 +==== Поиск неисправностей ==== 
 + 
 +  * Если восстановление после сбоя обновления невозможно и имеется резервная копия/моментальный снимок,​ можно восстановить его и начать заново
 + 
 +  * Если ничего не помогло,​ выполните чистую установку Ubuntu 22.04 и восстановите конфигурацию Security Server из резервной копии. 
 + 
 +  * Если возникает проблема с locale, в данном случае нужно сделать export всех необходимых локалей. Пример проблемы:​ 
 + 
 +<​code>​ 
 +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 
 +</​code>​ 
 + 
 +Решение:​ 
 + 
 +<​code>​ 
 +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 
 +</​code>​ 
 + 
 +==== Проверка работы ==== 
 + 
 +После обновления рекомендуется проверить:​ 
 + 
 +  * Доступность веб-интерфейса Security Server 
 +  * Работу всех сервисов X-Road 
 +  * Размер и состояние баз данных 
 +  * Логи на наличие ошибок 
 + 
 +Проверка размера баз данных:​ 
 +<​code>​ 
 +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'​);"​ 
 +</​code>​ 
 + 
 +Проверка логов:​ 
 +<​code>​ 
 +sudo journalctl -u xroad-proxy -n 100
 </​code>​ </​code>​
  
Строка 104: Строка 248:
  
 Автор Даниил Горбенко Автор Даниил Горбенко
- 
upgrade-security-server-new-722.1770634845.txt.gz · Последние изменения: 2026/02/09 11:00 — infra