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

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


upgrade-security-server-new-722

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
upgrade-security-server-new-722 [2026/02/09 10:39] – infraupgrade-security-server-new-722 [2026/02/09 11:12] (текущий) – infra
Строка 1: Строка 1:
 +<note warning>Перед обновлением Ubuntu 20.04 на Ubuntu 22.04 настоятельно рекомендуется снять snapshot сервера и backup конфигурации X-Road!</note>
 +
 ====== Обновление Security Server Ubuntu 20.04 до 22.04 на месте ======  ====== Обновление Security Server Ubuntu 20.04 до 22.04 на месте ====== 
 +
 В этом документе описываются шаги, необходимые для обновления автономного хоста Security Server с версии Ubuntu 20.04 LTS до Ubuntu 22.04 LTS. Пожалуйста, внимательно прочитайте весь документ перед началом процесса обновления. Предполагается, что читатель знаком с дистрибутивом Ubuntu Linux и имеет опыт обновления версии Ubuntu. В этом документе описываются шаги, необходимые для обновления автономного хоста Security Server с версии Ubuntu 20.04 LTS до Ubuntu 22.04 LTS. Пожалуйста, внимательно прочитайте весь документ перед началом процесса обновления. Предполагается, что читатель знаком с дистрибутивом Ubuntu Linux и имеет опыт обновления версии Ubuntu.
  
 С обновлением до Ubuntu 22.04 LTS PostgreSQL обновляется с версии 12 до 14. С обновлением до Ubuntu 22.04 LTS PostgreSQL обновляется с версии 12 до 14.
  
-==== Подготовка====+==== Альтернативный метод обновления ====
  
-  *      Обновите все пакеты до последних версий: +<note tip>Вместо обновления на месте, можно развернуть новую виртуальную машину с Ubuntu 22.04 и X-Road 7.2.2, затем восстановить конфигурацию из резервной копии. Этот метод безопаснее и быстрее, так как не затрагивает работающий сервер.</note> 
-<code>  + 
-apt update && apt full-upgrade+==== Подготовка ==== 
 + 
 +  * Ознакомьтесь с примечаниями к выпуску Ubuntu и инструкциями по обновлению: 
 +    * 20.04 → 22.04 https://wiki.ubuntu.com/JammyJellyfish/ReleaseNotes 
 + 
 +  * Обновите все пакеты до последних версий: 
 +<code> 
 +sudo apt update && apt full-upgrade
 </code> </code>
-  
-  *      Убедитесь, что версия программного обеспечения X-Road не ниже 7.2.2. 
-  
-  *      Рекомендуется: убедитесь, что у вас есть актуальная резервная копия (или моментальный снимок виртуальной машины) сервера и базы данных. 
-   
-  *      Используйте пользовательский интерфейс администратора, чтобы сделать резервную копию конфигурации сервера безопасности и загрузить ее в безопасное место. 
-  
-  *          Это позволяет восстановить конфигурацию сервера, если обновление по какой-либо причине не удалось. 
  
-  *      Остановите сервер безопасности и запретите его автоматический запуск при загрузке:+  * Убедитесь, что версия программного обеспечения X-Road не ниже 7.2.2. 
 + 
 +  * Рекомендуется: убедитесь, что у вас есть актуальная резервная копия (или моментальный снимок виртуальной машины) сервера и базы данных. 
 + 
 +  * Используйте пользовательский интерфейс администратора, чтобы сделать резервную копию конфигурации Security Server и загрузить ее в безопасное место. 
 +    * Это позволяет восстановить конфигурацию сервера, если обновление по какой-либо причине не удалось. 
 + 
 +  * Резервная копия базы данных serverconf:
 <code> <code>
-$ sudo systemctl stop "xroad-*" +sudo -iu postgres pg_dump -d serverconf -F c -f /var/lib/xroad/backup/serverconf_backup_$(date +%Y%m%d).sql
-$ 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"+
 </code> </code>
-  
-<note warning>Этот пункт обязателен и не стоит его игнорировать. Перед обновлением ОБЯЗАТЕЛЬНО нужно отключить xroad и убрать их из автозапуска.</note> 
  
-        *      При необходимости сделайте резервную копию базы данных журнала сообщений. Без резервного копирования сбой в процессе обновления может привести к потере данных. +  * Остановите Security Server и запретите его автоматический запуск при загрузке:
-  *          См. https://www.postgresql.org/docs/12/backup.html. +
-  *          Использование pg_dump является простым вариантом, но может быть проблематичным, если база данных очень велика:+
 <code> <code>
-$ sudo -iu postgres pg_dump -d serveconf -F c -f <dump_file> +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"
 </code> </code>
 +
 +<note warning>Этот пункт обязателен и не стоит его игнорировать. Перед обновлением ОБЯЗАТЕЛЬНО нужно отключить xroad и убрать их из автозапуска.</note>
  
 ==== Обновление Ubuntu 20.04 до 22.04 ==== ==== Обновление Ubuntu 20.04 до 22.04 ====
-  * Установите update-manager-core, если он еще не установлен.+ 
 +  * Установите update-manager-core, если он еще не установлен:
 <code> <code>
-$ dpkg -l | grep "update-manager-core"+dpkg -l | grep "update-manager-core"
 </code> </code>
-  * Убедитесь, что для строки подсказки в файле /etc/update-manager/release-upgrades установлено значение «lts».+ 
 +  * Убедитесь, что для строки подсказки в файле /etc/update-manager/release-upgrades установлено значение «lts»:
 <code> <code>
-$ sudo grep "Prompt=lts" /etc/update-manager/release-upgrades+sudo grep "Prompt=lts" /etc/update-manager/release-upgrades
 </code> </code>
-  * Запустите средство обновления с помощью команды + 
 +  * Запустите средство обновления с помощью команды:
 <code> <code>
-$ sudo do-release-upgrade+sudo do-release-upgrade
 </code> </code>
 +
   * Следуйте инструкциям на экране.   * Следуйте инструкциям на экране.
 +
   * Когда обновление будет завершено, перезагрузитесь при появлении запроса.   * Когда обновление будет завершено, перезагрузитесь при появлении запроса.
-  +
 ==== Обновление программного обеспечения X-Road ==== ==== Обновление программного обеспечения X-Road ====
-=== Обновите базу данных === + 
 +=== Обновите базу данных === 
   * Процесс обновления Ubuntu по умолчанию создает пустой экземпляр базы данных, который следует удалить перед обновлением старой базы данных до версии 14.   * Процесс обновления Ubuntu по умолчанию создает пустой экземпляр базы данных, который следует удалить перед обновлением старой базы данных до версии 14.
 +
   * Просмотрите экземпляры базы данных с помощью pg_lsclusters и удалите лишние.   * Просмотрите экземпляры базы данных с помощью pg_lsclusters и удалите лишние.
 +
   * //Не удаляйте версию 12 (основную), работающую через порт 5432//.   * //Не удаляйте версию 12 (основную), работающую через порт 5432//.
 +
 <code> <code>
-$ sudo pg_dropcluster --stop <version, e.g. 12> main+sudo pg_dropcluster --stop <version, e.g. 14> main
 </code> </code>
 +
 === Пример === === Пример ===
 +
 <code> <code>
-$ sudo pg_lsclusters+sudo pg_lsclusters
 Ver Cluster Port Status Owner    Data directory               Log file Ver Cluster Port Status Owner    Data directory               Log file
-12  main    5432 online postgres /var/lib/postgresql/12/main  /var/log/postgresql/postgresql-10-main.log +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-12-main.log +14  main    5433 online postgres /var/lib/postgresql/14/main  /var/log/postgresql/postgresql-14-main.log 
-   + 
-$ sudo pg_dropcluster --stop 12 main+sudo pg_dropcluster --stop 14 main
 </code> </code>
 +
   * Обновите старую базу данных до версии 14.   * Обновите старую базу данных до версии 14.
  
 <note important>Вспомогательный скрипт Ubuntu pg_upgradecluster по умолчанию создает дамп старой базы данных, что может потребовать много времени и свободного места на диске, если база данных большая. Параметр --method=upgrade вместо этого использует pg_upgrade, а параметр --link позволяет избежать копирования файлов данных. <note important>Вспомогательный скрипт Ubuntu pg_upgradecluster по умолчанию создает дамп старой базы данных, что может потребовать много времени и свободного места на диске, если база данных большая. Параметр --method=upgrade вместо этого использует pg_upgrade, а параметр --link позволяет избежать копирования файлов данных.
-(!)Использование --link требует, чтобы новая и старая базы данных находились в одной и той же файловой системе. См. https://www.postgresql.org/docs/12/pgupgrade.html для получения подробной информации и инструкций по восстановлению.</note>+(!) Использование --link требует, чтобы новая и старая базы данных находились в одной и той же файловой системе. См. https://www.postgresql.org/docs/14/pgupgrade.html для получения подробной информации и инструкций по восстановлению.</note> 
 <code> <code>
-$ sudo pg_upgradecluster --method=upgrade --link 12 main+sudo pg_upgradecluster --method=upgrade --link 12 main
 </code> </code>
 +
 === Пример === === Пример ===
 +
 <code> <code>
-$ sudo pg_upgradecluster --method=upgrade --link 12 main +sudo pg_upgradecluster --method=upgrade --link 12 main 
-  + 
-$ sudo pg_lsclusters+sudo pg_lsclusters
 Ver Cluster Port Status Owner    Data directory               Log file Ver Cluster Port Status Owner    Data directory               Log file
-12  main    5433 down   postgres /var/lib/postgresql/10/main  /var/log/postgresql/postgresql-10-main.log +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/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> </code>
 +
 === Обновите репозиторий пакетов X-Road, чтобы он указывал на пакеты Ubuntu 22.04, версии 7.2.2 === === Обновите репозиторий пакетов X-Road, чтобы он указывал на пакеты Ubuntu 22.04, версии 7.2.2 ===
  
-Удалить репозитории https://deb.tunduk.kg/ubuntu20.04-7.2.2+Удалить старые репозитории:
 <code> <code>
-$ sudo rm -rf /etc/apt/sources.list.d/*+sudo rm -rf /etc/apt/sources.list.d/*
 </code> </code>
  
-Импортировать GPG ключ репозитория+Импортировать GPG ключ репозитория:
 <code> <code>
-$ wget -qO - https://deb.tunduk.kg/key.pub | sudo tee /etc/apt/keyrings/xroad.asc +wget -qO - https://deb.tunduk.kg/key.pub | sudo tee /etc/apt/keyrings/xroad.asc
 </code> </code>
  
-Добавить репозиторий в список источников пакетов ОС+Добавить репозиторий в список источников пакетов ОС:
 <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+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>
  
-Произвести обновление обновление системы+Произвести обновление системы:
 <code> <code>
-$ sudo apt update && apt full-upgrade+sudo apt update && apt full-upgrade
 </code> </code>
  
-Включить все службы X-Road в автозагрузку+Включить все службы X-Road в автозагрузку:
 <code> <code>
-$ sudo systemctl enable xroad-proxy xroad-signer xroad-confclient xroad-monitor xroad-opmonitor xroad-proxy-ui-api+sudo systemctl enable xroad-proxy xroad-signer xroad-confclient xroad-monitor xroad-opmonitor xroad-proxy-ui-api
 </code> </code>
  
-Проверить все ли службы включены+Проверить все ли службы включены:
 <code> <code>
-$ sudo systemctl list-units "xroad-*"+sudo systemctl list-unit-files | grep "xroad"
 </code> </code>
 +
 Стартовать службы X-Road: Стартовать службы X-Road:
 <code> <code>
-$ sudo systemctl start "xroad-*"+sudo systemctl start "xroad-*"
 </code> </code>
 +
 или или
 +
 <code> <code>
-$ sudo systemctl start xroad-proxy+sudo systemctl start xroad-proxy
 </code> </code>
 +
 Установка выполнена успешно, если запущены системные службы и пользовательский интерфейс отвечает. Чтобы убедиться, что сервисы X-Road находятся в запущенном состоянии, задайте команду: Установка выполнена успешно, если запущены системные службы и пользовательский интерфейс отвечает. Чтобы убедиться, что сервисы X-Road находятся в запущенном состоянии, задайте команду:
 <code> <code>
-$ sudo systemctl list-units "xroad*"+sudo systemctl list-units "xroad*"
 </code> </code>
  
 === Удаление старой базы данных и устаревших пакетов === === Удаление старой базы данных и устаревших пакетов ===
  
-Убедившись, что обновление базы данных прошло успешно, удалите старую базу данных и удалите устаревшие пакеты PostgreSQL.+Убедившись, что обновление базы данных прошло успешно, удалите старую базу данных и удалите устаревшие пакеты PostgreSQL:
 <code> <code>
-$ sudo pg_dropcluster 12 main +sudo pg_dropcluster 12 main 
-$ sudo apt purge postgresql-12 +sudo apt purge postgresql-12 
-$ sudo apt autoremove+sudo apt autoremove
 </code> </code>
  
-=== Поиск неисправностей ===+==== Поиск неисправностей ==== 
   * Если восстановление после сбоя обновления невозможно и имеется резервная копия/моментальный снимок, можно восстановить его и начать заново.   * Если восстановление после сбоя обновления невозможно и имеется резервная копия/моментальный снимок, можно восстановить его и начать заново.
-  * Если ничего не помогло, выполните чистую установку Ubuntu 20.04 и восстановите конфигурацию сервера безопасности из резервной копии.+ 
 +  * Если ничего не помогло, выполните чистую установку Ubuntu 22.04 и восстановите конфигурацию Security Server из резервной копии. 
   * Если возникает проблема с locale, в данном случае нужно сделать export всех необходимых локалей. Пример проблемы:   * Если возникает проблема с locale, в данном случае нужно сделать export всех необходимых локалей. Пример проблемы:
  
 <code> <code>
-pg_upgradecluster --method=upgrade --link 10 main+pg_upgradecluster --method=upgrade --link 12 main
 Stopping old cluster... Stopping old cluster...
 perl: warning: Setting locale failed. perl: warning: Setting locale failed.
Строка 190: Строка 221:
 export LC_TIME=en_US.UTF-8 export LC_TIME=en_US.UTF-8
 update-locale 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>
  
upgrade-security-server-new-722.1770633564.txt.gz · Последнее изменение: — infra

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki