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

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


upgrade-security-server-new-722

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
upgrade-security-server-new-722 [2026/02/09 11:00] – infraupgrade-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 * ? * | Каждые 2 часа архивировать | +
-| 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=1 +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 · Последнее изменение: — infra

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki