Здесь показаны различия между двумя версиями данной страницы.
| Следующая версия | Предыдущая версия | ||
|
upgrade-security-server-new-722 [2026/02/09 10:36] infra создано |
upgrade-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 | + | |
| - | </code> | + | |
| - | + | ||
| - | * Убедитесь, что версия программного обеспечения X-Road не ниже 7.2.2. | + | |
| - | + | ||
| - | * Рекомендуется: убедитесь, что у вас есть актуальная резервная копия (или моментальный снимок виртуальной машины) сервера и базы данных. | + | |
| - | + | ||
| - | * Используйте пользовательский интерфейс администратора, чтобы сделать резервную копию конфигурации сервера безопасности и загрузить ее в безопасное место. | + | |
| - | + | ||
| - | * Это позволяет восстановить конфигурацию сервера, если обновление по какой-либо причине не удалось. | + | |
| - | * Остановите сервер безопасности и запретите его автоматический запуск при загрузке: | + | ==== Подготовка ==== |
| + | |||
| + | * Ознакомьтесь с примечаниями к выпуску Ubuntu и инструкциями по обновлению: | ||
| + | * 20.04 → 22.04 https://wiki.ubuntu.com/JammyJellyfish/ReleaseNotes | ||
| + | |||
| + | * Обновите все пакеты до последних версий: | ||
| <code> | <code> | ||
| - | $ sudo systemctl stop "xroad-*" | + | sudo apt update && apt full-upgrade |
| - | $ 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> | ||
| - | * При необходимости сделайте резервную копию базы данных журнала сообщений. Без резервного копирования сбой в процессе обновления может привести к потере данных. | + | * Убедитесь, что версия программного обеспечения X-Road не ниже 7.2.2. |
| - | * См. https://www.postgresql.org/docs/12/backup.html. | + | |
| - | * Использование pg_dump является простым вариантом, но может быть проблематичным, если база данных очень велика: | + | * Рекомендуется: убедитесь, что у вас есть актуальная резервная копия (или моментальный снимок виртуальной машины) сервера и базы данных. |
| + | |||
| + | * Используйте пользовательский интерфейс администратора, чтобы сделать резервную копию конфигурации Security Server и загрузить ее в безопасное место. | ||
| + | * Это позволяет восстановить конфигурацию сервера, если обновление по какой-либо причине не удалось. | ||
| + | |||
| + | * Резервная копия базы данных serverconf: | ||
| <code> | <code> | ||
| - | $ sudo -iu postgres pg_dump -d serveconf -F c -f <dump_file> | + | sudo -iu postgres pg_dump -d serverconf -F c -f /var/lib/xroad/backup/serverconf_backup_$(date +%Y%m%d).sql |
| </code> | </code> | ||
| - | * Уменьшение размера дампа базы данных журнала сообщений: По умолчанию база данных журнала сообщений хранит записи сообщений за 30 дней, но можно (временно) изменить время хранения, чтобы уменьшить количество записей в базе данных, тем самым уменьшив размер дамп базы данных. Изменение параметра не имеет немедленного эффекта, поскольку по умолчанию очистка журнала сообщений выполняется два раза в день (в полдень и в полночь). Дополнительную информацию см. в Руководстве пользователя Security Server. | + | * Остановите Security Server и запретите его автоматический запуск при загрузке: |
| - | * При необходимости сделайте резервную копию заархивированных файлов журнала сообщений. | + | |
| - | * Обратите внимание, что некоторые зарегистрированные сообщения могут быть еще не заархивированы и существовать только в базе данных. | + | |
| - | + | ||
| - | * При желании сделайте резервную копию базы данных оперативного мониторинга (если установлен xroad-opmonitoring). Без резервного копирования сбой в процессе обновления может привести к потере данных. | + | |
| - | * См. https://www.postgresql.org/docs/10/backup.html. | + | |
| <code> | <code> | ||
| - | $ sudo -iu postgres pg_dump -d "op-monitor" -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 10 main | + | sudo pg_upgradecluster --method=upgrade --link 12 main |
| </code> | </code> | ||
| + | |||
| === Пример === | === Пример === | ||
| + | |||
| <code> | <code> | ||
| - | $ sudo pg_upgradecluster --method=upgrade --link 10 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 | ||
| - | 10 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 |
| - | 12 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. | ||
| Строка 199: | Строка 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> | ||