Обновление продукта
Общие рекомендации
При обновлении операционных систем и прочих системных компонентов на серверах с компонентами продукта следуйте следующим рекомендациям:
-
Перед применением на продуктовом окружении проверьте все обновления на тестовом окружении.
-
Выберите для обновления время с минимальной нагрузкой на компоненты или, если это возможно, полностью отключите нагрузку на компоненты.
-
Учитывайте совместимость версий обновляемых ОС с работающими на них сервисами.
-
Учитывайте совместимость клиентских и серверных частей компонентов (например, брокер сообщений Apache Kafka: потребитель (consumer) — производитель (producer) или PostgreSQL: сервер PostgreSQL — драйвер JDBC).
При обновлениях, не требующих перезагрузки или рестарта сервисов, возможно обновление без прерывания обслуживания.
При обновлениях, требующих перезагрузки или рестарта сервисов, непрерывность обслуживания определяется наличием отказоустойчивой конфигурации сервисов. Если конфигурация отказоустойчивая, это значит, что имеется несколько экземпляров одного сервиса. Обновление рекомендуется делать последовательно:
-
Отключите один одного из экземпляров.
-
Проведите обновление ОС на этом экземпляре.
-
Включите экземпляр, проверьте его работоспособность и успешное включения в кластер.
-
Перейдите к следующему экземпляру.
При неотказоустойчивой конфигурации обновление возможно только с прерыванием обслуживания (downtime). Остановку сервисов рекомендуется осуществлять с учетом взаимозависимости компонентов.
Взаимосвязи между компонентами
PostgresSQL:
-
модуль
osmax-core; -
модуль
osmax-provisioner; -
Guacamole;
-
сервер управления (master) — чтение pillar-файлов.
Apache Kafka:
-
модуль
osmax-core— получение событий от сервера управления (master), отправка заказов на установку ОС в модульosmax-provisioner, получение статусов установки ОС от модуляosmax-provisioner; -
osmax-provisioner— получение заказов на установку ОС, отправка статусов установки ОС на сервер управления (master); -
сервер управления (master) — отправка событий от агентов (minions) в модуль
osmax-core.
S3-совместимое хранилище:
-
модуль
osmax-core— распространение файлов состояний на серверы управления (masters), хранение скриптов, картинок, документов для пользовательского интерфейса «Магазин приложений». -
модуль
osmax-provisioner— хранение скриптов, установочных образов ОС; -
сервер управления (master) — получение файлов состояний.
Сервер управления (master):
-
модуль
osmax-core— исполнение push-команд через модульsalt-api.
Guacamole:
-
модуль
osmax-core— ссылки на пользовательский интерфейс удаленных сессий.
Nginx (osmax UI&API):
-
модуль
osmax-provisioner— использование API модуляosmax-coreдля авторизации через Nginx.
Модуль osmax-provisioner:
-
модуль
osmax-core— (через Nginx) использование API авторизации; -
Nginx — получение трафика на API.
Модуль osmax-core:
-
Nginx — получение трафика на API.
Порядок включения и выключения
При необходимости выключить все сервисы, следуйте рекомендациям:
Порядок выключения:
-
Nginx.
-
Сервер управления (master).
-
Модуль
osmax-provisioner. -
Модуль
osmax-core. -
Guacamole.
-
PostgreSQL, Kafka, S3.
Порядок включения:
-
PostgreSQL, Kafka, S3.
-
Guacamole.
-
Модуль
osmax-core. -
Модуль
osmax-provisioner. -
Сервер управления (master).
-
Nginx.
При обновлении допускается выключение только части сервисов. В таких случаях, в соответствии с приведенной выше информацией о зависимостях, часть функций в системе не будет работать, а в логах появятся соответствующие сообщения об ошибках.
Например:
-
Если не отключить сервер управления (master), то сам сервер и агенты (minions) на устройствах продолжат работу, но события от агентов (minions) будут скапливаться в Apache Kafka (если она не выключена) или будут утеряны (с ошибками в логах).
-
Если отключить только Guacamole, не будут работать переходы по ссылкам для удаленного доступа из Осмакс, а также сам модуль «Удаленный доступ». Все остальные компоненты продолжат работать.
-
Если отключить модуль
osmax-provisioner, функции установки ОС станут недоступными. Все остальные компоненты продолжат работать.
Обновление внутренних компонентов продукта
Компоненты продукта поставляются в архиве osmax-all-X.YY.Z.tar.gz, где X.YY.Z — версия выпуска продукта.
Версии компонентов в выпуске могут различаться, при этом совместимость версий компонентов из разных выпусков не
гарантируется.
В текущей версии продукта не поддерживается:
-
автоматизированное обновление компонентов;
-
обновление без прерывания обслуживания;
-
обновление с пропуском версий.
При обновлении следует обновлять все внутренние компоненты продукта, включенные в архив выпуска версии.
Бэкенд-сервисы и сервисы удаленного доступа — это стандартные сервисы Linux, которые работают под управлением службы systemd. Для их обслуживания используются утилиты systemd. При работе с ними используйте команды:
# запуск сервиса systemctl start <service-name> # Просмотр состояния сервиса systemctl status <service-name> # Остановка сервиса systemctl stop <service-name> # Просмотр логов сервиса начиная с указанного времени journalctl -u <service-name> --since "2024-12-31 23:59:59" # Слежение за логами сервиса (аналог tail -f) journalctl -u <service-name> -f
Сервисы продукта выводят логи в файлы. Расположения лог-файлов и настройки уровня логирования описаны в настройках каждого сервиса.
| Для выполнения последующих шагов убедитесь, что все необходимые сервисы, включая БД, брокер сообщений Apache Kafka и S3-совместимое хранилище остановлены. |
Обновление бэкенда продукта с приостановкой обслуживания (downtime)
Перед проведением обновления компонентов рекомендуется переключить веб-сайты и API в режим обслуживания (maintenance mode). Таким образом будет отключен трафик с Nginx на бэкенды. Пример конфигурации Nginx для режима обслуживания.
Обновление каждого компонента включает шаги:
-
Выключение всех экземпляров.
sudo systemctl stop <service-name>
-
Установка пакета новой версии.
sudo apt install ./<package-name>.deb
-
(Опционально) переконфигурирование компонента (см. раздел «Установка и конфигурация модулей бэкенда»).
-
Запуск экземпляров.
sudo systemctl start <service-name>
|
При запуске экземпляра сервиса с новой версией производится миграция структуры БД (добавление/удаление/изменение полей, таблиц и других обьектов), если это необходимо для перехода на новую версию. Поэтому все другие экземпляры сервиса должны быть заранее отключены. Иначе они начнут выдавать ошибки связанные с изменениями в БД. Дополнительно при запуске экземпляра сервиса |
Обновление модуля osmax-core
-
Убедитесь, что служба
osmax-coreостановлена, выполнив команду:sudo systemctl status osmax-core
Если служба запущена, остановите её, выполнив команду:
sudo systemctl stop osmax-core
-
Сделайте резервную копию конфигурационного файла
application.properties, выполнив команду:sudo cp /opt/osmax-core/application.properties{,.backup} -
Установите пакет модуля
osmax-coreтребуемой версии, выполнив команды:Пример команды для установки пакета из репозитория:
sudo apt install osmax-core=<osmax-core-version>
sudo yum install osmax-core=<osmax-core-version>
Пример команды для установки пакета из архива:
-
Измените конфигурационный файл
application.propertiesсогласно сравнению конфигурационных файлов.
Обновление модуля osmax-provisioner
-
Убедитесь, что служба
osmax-provisionerостановлена, выполнив команду:sudo systemctl status osmax-provisioner
Если служба запущена, остановите её, выполнив команду:
sudo systemctl stop osmax-provisioner
-
Сделайте резервную копию конфигурационного файла
application.properties, выполнив команду:sudo cp /opt/osmax-provisioner/application.properties{,.backup} -
Установите пакет модуля
osmax-provisionerтребуемой версии, выполнив команды:Пример команды для установки пакета из репозитория:
sudo apt install osmax-provisioner=<osmax-provisioner-version>
sudo yum install osmax-provisioner=<osmax-provisioner-version>
Пример команды для установки пакета из архива:
-
Измените конфигурационный файл
application.propertiesсогласно сравнению конфигурационных файлов.
Обновление фронтенда продукта
Пакеты обновления фронтенда (osmax-webadmin_V_all.deb, osmax-appshop_V_all.deb) обновляют статические страницы и JS-скрипты web-приложения. Для обновления не обязательно останавливать Nginx.
Используйте команды, перечисленные ниже.
Пример команды для установки пакетов из репозитория:
sudo apt install osmax-appshop=<osmax-appshop-version> osmax-webadmin=<osmax-webadmin-version> -y
sudo yum install osmax-appshop=<osmax-appshop-version> osmax-webadmin=<osmax-webadmin-version> -y
Пример команд для установки пакетов из архива:
Обновление модуля «Удаленный доступ»
-
Убедитесь, что служба
osmax-ira-guacamole-clientостановлена, выполнив команду:sudo systemctl status osmax-ira-guacamole-client
Если служба запущена, остановите её, выполнив команду:
sudo systemctl stop osmax-ira-guacamole-client
-
Обновите компоненты модуля удаленного доступа, выполнив команды:
Пример команд для установки пакетов из репозитория:
sudo apt install osmax-ira-guacamole-client=<osmax-ira-guacamole-client-version> -y sudo apt install osmax-ira-guacamole-server=<osmax-ira-guacamole-server-version> -y sudo apt install libosmaxfreerdp=<libosmaxfreerdp-version> -y sudo apt install libosmaxvncserver=<libosmaxvncserver-version> -y
sudo yum install osmax-ira-guacamole-client=<osmax-ira-guacamole-client-version> -y sudo yum install osmax-ira-guacamole-server=<osmax-ira-guacamole-server-version> -y sudo yum install libosmaxfreerdp=<libosmaxfreerdp-version> -y sudo yum install libosmaxvncserver=<libosmaxvncserver-version> -y
Пример команд для установки пакетов из архива:
sudo apt install ./osmax-ira-guacamole-client_<osmax-ira-guacamole-client-version>_amd64.deb sudo apt install ./osmax-ira-guacamole-server_<osmax-ira-guacamole-server-version>_amd64.deb sudo apt install ./libosmaxfreerdp_<libosmaxfreerdp-version>_amd64.deb sudo apt install ./libosmaxvncserver_<libosmaxvncserver-version>_amd64.deb
sudo yum install ./osmax-ira-guacamole-client-<osmax-ira-guacamole-client-version>.x86_64.rpm sudo yum install ./osmax-ira-guacamole-server_<osmax-ira-guacamole-server-version>.x86_64.rpm sudo yum install ./libosmaxfreerdp_<libosmaxfreerdp-version>_.x86_64.rpm sudo yum install ./libosmaxvncserver_<libosmaxvncserver-version>_.x86_64.rpm
Обновление модуля координации (SaltStack)
| При обновлении модуля координации (SaltStack) обновление и откат к предыдущей версии SaltStack на агентах (minions) выполняются только при использовании Astra Linux. |
Обновление сервера управления (master)
-
Убедитесь, что службы
salt-masterиsalt-apiостановлены, выполнив команды:sudo systemctl status salt-master sudo systemctl status salt-api
Если службы запущены, остановите их, выполнив команду:
sudo systemctl stop salt-master salt-api
-
Сделайте резервную копию конфигурационных файлов, выполнив команду:
sudo cp -r /etc/salt /etc/salt_backup
-
Установите пакеты SaltStack требуемой версии.
Пример команд для установки пакетов из репозитория:
sudo apt install salt-common=<salt-version> -y sudo apt install salt-master=<salt-version> -y sudo apt install salt-api=<salt-version> -y sudo apt install salt-ssh=<salt-version> -y
sudo yum install salt-<salt-version> -y sudo yum install salt-master-<salt-version> -y sudo yum install salt-api-<salt-version> -y sudo yum install salt-ssh-<salt-version> -y
Пример команд для установки пакетов из архива:
sudo apt install ./salt-common_<salt-version>_amd64.deb sudo apt install ./salt-master_<salt-version>_amd64.deb sudo apt install ./salt-api_<salt-version>_amd64.deb sudo apt install ./salt-ssh_<salt-version>_amd64.deb
sudo yum install ./salt-<salt-version>-0.x86_64.rpm sudo yum install ./salt-master-<salt-version>-0.x86_64.rpm sudo yum install ./salt-api-<salt-version>-0.x86_64.rpm sudo yum install ./salt-ssh-<salt-version>-0.x86_64.rpm
Обновление агентов (minions)
-
Убедитесь, что служба
salt-minionостановлена, выполнив команду:sudo systemctl status salt-minion
Если служба запущена, остановите её, выполнив команду:
sudo systemctl stop salt-minion
-
Сделайте резервную копию конфигурационных файлов, выполнив команду:
sudo cp -r /etc/salt /etc/salt_backup
-
Установите пакеты
salt-minionтребуемой версии.Пример команд для установки пакетов из репозитория:
sudo apt install salt-common=<salt-version> -y sudo apt install salt-minion=<salt-version> -y
Пример команд для установки пакетов из архива:
sudo apt install ./salt-common_<salt-version>_amd64.deb sudo apt install ./salt-minion_<salt-version>_amd64.deb
Откат (опционально)
Откат выполняется в случае, если обновление привело к возникновению проблем.
-
Остановите службы:
-
На сервере управления (master) выполните команды:
sudo systemctl stop salt-master sudo systemctl stop salt-api
-
На агенте (minion) выполните команду:
sudo systemctl stop salt-minion
-
-
Удалите пакеты с текущей версией SaltStack:
-
На сервере управления (master) выполните команду:
sudo apt remove salt-master salt-api salt-ssh salt-common
-
На агенте (minion) выполните команду:
sudo apt remove salt-minion salt-common
-
-
Установите предыдущую версию SaltStack:
-
На сервере управления (master):
Пример команд для установки пакетов из репозитория:
sudo apt install salt-common=<salt-version> -y sudo apt install salt-master=<salt-version> -y sudo apt install salt-api=<salt-version> -y sudo apt install salt-ssh=<salt-version> -y
sudo yum install salt-<salt-version> -y sudo yum install salt-master-<salt-version> -y sudo yum install salt-api-<salt-version> -y sudo yum install salt-ssh-<salt-version> -y
Пример команд для установки пакетов из архива:
sudo apt install ./salt-common_<salt-version>_amd64.deb sudo apt install ./salt-master_<salt-version>_amd64.deb sudo apt install ./salt-api_<salt-version>_amd64.deb sudo apt install ./salt-ssh_<salt-version>_amd64.deb
sudo yum install ./salt-<salt-version>-0.x86_64.rpm sudo yum install ./salt-master-<salt-version>-0.x86_64.rpm sudo yum install ./salt-api-<salt-version>-0.x86_64.rpm sudo yum install ./salt-ssh-<salt-version>-0.x86_64.rpm
-
На агенте (minion):
Пример команд для установки пакетов из репозитория:
sudo apt install salt-common=<salt-version> -y sudo apt install salt-minion=<salt-version> -y
Пример команд для установки пакетов из архива:
sudo apt install ./salt-common_<salt-version>_amd64.deb sudo apt install ./salt-minion_<salt-version>_amd64.deb
-
-
Восстановите резервную копию конфигурации, выполнив команду:
sudo cp -r /etc/salt_backup/* /etc/salt/
-
Запустите службы:
-
На сервере управления (master) выполните команды:
sudo systemctl enable salt-master salt-api sudo systemctl start salt-master sudo systemctl start salt-api
-
На агенте (minion) выполните команды:
sudo systemctl enable salt-minion sudo systemctl start salt-minion
-
Запуск служб
Запуск инфраструктурных сервисов
Запустите все инфраструктурные сервисы:
-
базу данных;
-
брокер сообщений Apache Kafka;
-
S3-совместимое хранилище.
Запуск модуля «Удаленный доступ»
-
Запустите модуль «Удаленный доступ» и проверьте его статус, выполнив команды:
# Добавление службы в автозагрузку sudo systemctl enable osmax-ira-guacamole-client # Запуск службы sudo systemctl start osmax-ira-guacamole-client # Проверка статуса службы sudo systemctl status osmax-ira-guacamole-client
-
Убедитесь, что в логах нет ошибок.
Запуск бэкенда
-
Запустите модули
osmax-coreиosmax-provisionerи проверьте их статусы, выполнив команды:# Добавление служб в автозагрузку sudo systemctl enable osmax-core osmax-provisioner # Запуск службы osmax-core sudo systemctl start osmax-core # Проверка статуса службы sudo systemctl status osmax-core # Запуск службы osmax-provisioner sudo systemctl start osmax-provisioner # Проверка статуса службы sudo systemctl status osmax-provisioner
-
Убедитесь, что в логах нет ошибок.
Запуск модуля координации (SaltStack)
-
На сервере управления (master) выполните команды:
# Добавление службы в автозагрузку sudo systemctl enable salt-master # Запуск службы salt-master sudo systemctl start salt-master # Запуск службы salt-api sudo systemctl start salt-api # Проверка статуса служб sudo systemctl status salt-master sudo systemctl status salt-api
-
На агенте (minion) выполните команды:
# Добавление службы в автозагрузку sudo systemctl enable salt-minion # Запуск службы salt-minion sudo systemctl start salt-minion # Проверка статуса службы sudo systemctl status salt-minion
-
Проверьте версию SaltStack, выполнив команду на сервере управления (master):
salt --version
-
Проверьте подключение агента (minion) к серверу управления (master), для этого на агенте (minion) выполните команду:
sudo salt-call test.ping
Пример вывода:
minion-01: True
-
Убедитесь, что в логах служб SaltStack нет ошибок.
Таблица версий компонентов
В таблице Табл. 1 указаны версии компонентов для версии продукта 1.16.0.
| Компонент | Назначение | Версия компонента |
|---|---|---|
|
Библиотека RDP для модуля «Удаленный доступ» |
1.4.1 |
|
Библиотека VNC для модуля «Удаленный доступ» |
1.4.1 |
|
Библиотека SSH с поддержкой SSO аутентификации для модуля «Удаленный доступ» |
1.4.1 |
|
Библиотека openssh для модуля «Удаленный доступ» |
1.4.1 |
|
Библиотека tigervnc для модуля «Удаленный доступ» |
1.4.1 |
|
Библиотека xrdp для модуля «Удаленный доступ» |
1.4.1 |
|
Пользовательский интерфейс «Магазин приложений» |
1.16.0 |
|
Ядро (бэкенд) |
1.16.0 |
|
Модуль «Удаленный доступ» |
1.7.0-1 |
|
Модуль «Удаленный доступ» |
1.7.0 |
|
Модуль установки ОС (бэкенд) |
1.6.0 |
|
Пользовательский интерфейс «Кабинет администратора» |
1.16.0 |
|
Модуль координации (SaltStack) |
3006.7.8 |
|
Модуль мониторинга |
1.0.0 |