Перед обновлением Ubuntu18.04 на Ubuntu20.04 настоятельно рекомендуется снять snapshot сервера, и backup версии 6.26.3! ====== Обновление Security Server Ubuntu 18.04 до 20.04 на месте ====== В этом документе описываются шаги, необходимые для обновления автономного хоста Security Server с версии Ubuntu 18.04 LTS до Ubuntu 20.04 LTS. Пожалуйста, внимательно прочитайте весь документ перед началом процесса обновления. Предполагается, что читатель знаком с дистрибутивом Ubuntu Linux и имеет опыт обновления версии Ubuntu. С обновлением до Ubuntu 20.04 LTS PostgreSQL обновляется с версии 10 до 12. Альтернативный метод: Обновление Security Server до Ubuntu 20.04 с использованием резервной копии конфигурации ==== Подготовка==== При обновлении системы, в которой используется аппаратный модуль безопасности: убедитесь, что HSM совместим с Ubuntu 20.04, и ознакомьтесь с документацией по модулю HSM для получения инструкций по обновлению. * Ознакомьтесь с примечаниями к выпуску Ubuntu и инструкциями по обновлению: * 18.04 → 20.04 https://wiki.ubuntu.com/FocalFossa/ReleaseNotes * * Обновите все пакеты до последних версий: sudo apt update && apt full-upgrade * Убедитесь, что версия программного обеспечения X-Road не ниже 6.25.0. * Рекомендуется: убедитесь, что у вас есть актуальная резервная копия (или моментальный снимок виртуальной машины) сервера и базы данных. * Используйте пользовательский интерфейс администратора, чтобы сделать резервную копию конфигурации сервера безопасности и загрузить ее в безопасное место. * Это позволяет восстановить конфигурацию сервера, если обновление по какой-либо причине не удалось. * Остановите сервер безопасности и запретите его автоматический запуск при загрузке: $ 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 и убрать их из автозапуска. * При необходимости сделайте резервную копию базы данных журнала сообщений. Без резервного копирования сбой в процессе обновления может привести к потере данных. * См. https://www.postgresql.org/docs/10/backup.html. * Использование pg_dump является простым вариантом, но может быть проблематичным, если база данных очень велика: $ sudo -iu postgres pg_dump -d messagelog -F c -f * Уменьшение размера дампа базы данных журнала сообщений: По умолчанию база данных журнала сообщений хранит записи сообщений за 30 дней, но можно (временно) изменить время хранения, чтобы уменьшить количество записей в базе данных, тем самым уменьшив размер дамп базы данных. Изменение параметра не имеет немедленного эффекта, поскольку по умолчанию очистка журнала сообщений выполняется два раза в день (в полдень и в полночь). Дополнительную информацию см. в Руководстве пользователя Security Server. * При необходимости сделайте резервную копию заархивированных файлов журнала сообщений. * Обратите внимание, что некоторые зарегистрированные сообщения могут быть еще не заархивированы и существовать только в базе данных. * При желании сделайте резервную копию базы данных оперативного мониторинга (если установлен xroad-opmonitoring). Без резервного копирования сбой в процессе обновления может привести к потере данных. * См. https://www.postgresql.org/docs/10/backup.html. $ sudo -iu postgres pg_dump -d "op-monitor" -F c -f ==== Обновление Ubuntu 18.04 до 20.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 по умолчанию создает пустой экземпляр базы данных, который следует удалить перед обновлением старой базы данных до версии 12. * Просмотрите экземпляры базы данных с помощью pg_lsclusters и удалите лишние. * //Не удаляйте версию 10 (основную), работающую через порт 5432//. $ sudo pg_dropcluster --stop main === Пример === $ sudo pg_lsclusters Ver Cluster Port Status Owner Data directory Log file 10 main 5432 online postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log 12 main 5433 online postgres /var/lib/postgresql/12/main /var/log/postgresql/postgresql-12-main.log $ sudo pg_dropcluster --stop 12 main * Обновите старую базу данных до версии 12. Вспомогательный скрипт Ubuntu pg_upgradecluster по умолчанию создает дамп старой базы данных, что может потребовать много времени и свободного места на диске, если база данных большая. Параметр --method=upgrade вместо этого использует pg_upgrade, а параметр --link позволяет избежать копирования файлов данных. (!)Использование --link требует, чтобы новая и старая базы данных находились в одной и той же файловой системе. См. https://www.postgresql.org/docs/12/pgupgrade.html для получения подробной информации и инструкций по восстановлению. $ sudo pg_upgradecluster --method=upgrade --link 10 main === Пример === $ sudo pg_upgradecluster --method=upgrade --link 10 main $ sudo pg_lsclusters 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 5432 online postgres /var/lib/postgresql/12/main /var/log/postgresql/postgresql-12-main.log === Обновите репозиторий пакетов X-Road, чтобы он указывал на пакеты Ubuntu 20.04, версии 6.26.3 === Удалить репозитории https://deb.ordo.gov.kg/ubuntu18.04-6.26.3 $ sudo rm -rf /etc/apt/sources.list.d/* Добавить репозиторий в список источников пакетов ОС $ echo "deb https://deb.ordo.gov.kg/ubuntu20.04-6.26.3 /" | sudo tee -a /etc/apt/sources.list.d/xroad.list Произвести обновление обновление системы $ sudo apt-get 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-units "xroad-*" Стартовать службы X-Road: $ sudo systemctl start "xroad-*" или $ sudo systemctl start xroad-proxy Установка выполнена успешно, если запущены системные службы и пользовательский интерфейс отвечает. Чтобы убедиться, что сервисы X-Road находятся в запущенном состоянии, задайте команду: $ sudo systemctl list-units "xroad*" === Удаление старой базы данных и устаревших пакетов === Убедившись, что обновление базы данных прошло успешно, удалите старую базу данных и удалите устаревшие пакеты PostgreSQL. $ sudo pg_dropcluster 10 main $ sudo apt purge postgresql-10 $ sudo apt autoremove === Поиск неисправностей === * Если восстановление после сбоя обновления невозможно и имеется резервная копия/моментальный снимок, можно восстановить его и начать заново. * Если ничего не помогло, выполните чистую установку Ubuntu 20.04 и восстановите конфигурацию сервера безопасности из резервной копии. * Если возникает проблема с locale, в данном случае нужно сделать export всех необходимых локалей. Пример проблемы: pg_upgradecluster --method=upgrade --link 10 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 Следующий шаг - Пошаговая инструкция по обновлению сервера безопасности Тундук с версии 6.26.3 до версии 7.2.1 на Ubuntu20.04 ---- Автор Евгений Порядин, Тоомас Мёльдер, Ян Райк, Даниил Горбенко