Обновление продукта

Общие рекомендации

При обновлении операционных систем и прочих системных компонентов на серверах с компонентами продукта следуйте следующим рекомендациям:

  1. Перед применением на продуктовом окружении проверьте все обновления на тестовом окружении.

  2. Выберите для обновления время с минимальной нагрузкой на компоненты или, если это возможно, полностью отключите нагрузку на компоненты.

  3. Учитывайте совместимость версий обновляемых ОС с работающими на них сервисами.

  4. Учитывайте совместимость клиентских и серверных частей компонентов (например, брокер сообщений Apache Kafka: потребитель (consumer) — производитель (producer) или PostgreSQL: сервер PostgreSQL — драйвер JDBC).

При обновлениях, не требующих перезагрузки или рестарта сервисов, возможно обновление без прерывания обслуживания.

При обновлениях, требующих перезагрузки или рестарта сервисов, непрерывность обслуживания определяется наличием отказоустойчивой конфигурации сервисов. Если конфигурация отказоустойчивая, это значит, что имеется несколько экземпляров одного сервиса. Обновление рекомендуется делать последовательно:

  1. Отключите один одного из экземпляров.

  2. Проведите обновление ОС на этом экземпляре.

  3. Включите экземпляр, проверьте его работоспособность и успешное включения в кластер.

  4. Перейдите к следующему экземпляру.

При неотказоустойчивой конфигурации обновление возможно только с прерыванием обслуживания (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.

Порядок включения и выключения

При необходимости выключить все сервисы, следуйте рекомендациям:

Порядок выключения:

  1. Nginx.

  2. Сервер управления (master).

  3. Модуль osmax-provisioner.

  4. Модуль osmax-core.

  5. Guacamole.

  6. PostgreSQL, Kafka, S3.

Порядок включения:

  1. PostgreSQL, Kafka, S3.

  2. Guacamole.

  3. Модуль osmax-core.

  4. Модуль osmax-provisioner.

  5. Сервер управления (master).

  6. Nginx.

При обновлении допускается выключение только части сервисов. В таких случаях, в соответствии с приведенной выше информацией о зависимостях, часть функций в системе не будет работать, а в логах появятся соответствующие сообщения об ошибках.

Например:

  1. Если не отключить сервер управления (master), то сам сервер и агенты (minions) на устройствах продолжат работу, но события от агентов (minions) будут скапливаться в Apache Kafka (если она не выключена) или будут утеряны (с ошибками в логах).

  2. Если отключить только Guacamole, не будут работать переходы по ссылкам для удаленного доступа из Осмакс, а также сам модуль «Удаленный доступ». Все остальные компоненты продолжат работать.

  3. Если отключить модуль 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 для режима обслуживания.

Обновление каждого компонента включает шаги:

  1. Выключение всех экземпляров.

    sudo systemctl stop <service-name>
  2. Установка пакета новой версии.

    sudo apt install ./<package-name>.deb
  3. (Опционально) переконфигурирование компонента (см. раздел «Установка и конфигурация модулей бэкенда»).

  4. Запуск экземпляров.

    sudo systemctl start <service-name>

При запуске экземпляра сервиса с новой версией производится миграция структуры БД (добавление/удаление/изменение полей, таблиц и других обьектов), если это необходимо для перехода на новую версию. Поэтому все другие экземпляры сервиса должны быть заранее отключены. Иначе они начнут выдавать ошибки связанные с изменениями в БД.

Дополнительно при запуске экземпляра сервиса osmax-core с новой версией производится импорт в БД и в S3-совместимое хранилище предустановленных объектов продукта (формул, модулей, скриптов и т.д.).

Обновление модуля osmax-core

  1. Убедитесь, что служба osmax-core остановлена, выполнив команду:

    sudo systemctl status osmax-core

    Если служба запущена, остановите её, выполнив команду:

    sudo systemctl stop osmax-core
  2. Сделайте резервную копию конфигурационного файла application.properties, выполнив команду:

    sudo cp /opt/osmax-core/application.properties{,.backup}
  3. Установите пакет модуля osmax-core требуемой версии, выполнив команды:

    Пример команды для установки пакета из репозитория:

    • Astra Linux

    • РЕД ОС

    sudo apt install osmax-core=<osmax-core-version>
    sudo yum install osmax-core=<osmax-core-version>

    Пример команды для установки пакета из архива:

    • Astra Linux

    • РЕД ОС

    sudo apt install ./osmax-core_<osmax-core-version>_amd64.deb
    sudo yum install ./osmax-core-<osmax-core-version>-1.x86_64.rpm
  4. Измените конфигурационный файл application.properties согласно сравнению конфигурационных файлов.

Обновление модуля osmax-provisioner

  1. Убедитесь, что служба osmax-provisioner остановлена, выполнив команду:

    sudo systemctl status osmax-provisioner

    Если служба запущена, остановите её, выполнив команду:

    sudo systemctl stop osmax-provisioner
  2. Сделайте резервную копию конфигурационного файла application.properties, выполнив команду:

    sudo cp /opt/osmax-provisioner/application.properties{,.backup}
  3. Установите пакет модуля osmax-provisioner требуемой версии, выполнив команды:

    Пример команды для установки пакета из репозитория:

    • Astra Linux

    • РЕД ОС

    sudo apt install osmax-provisioner=<osmax-provisioner-version>
    sudo yum install osmax-provisioner=<osmax-provisioner-version>

    Пример команды для установки пакета из архива:

    • Astra Linux

    • РЕД ОС

    sudo apt install ./osmax-provisioner_<osmax-provisioner-version>_amd64.deb
    sudo yum install ./osmax-provisioner-<osmax-provisioner-version>-1.x86_64.rpm
  4. Измените конфигурационный файл application.properties согласно сравнению конфигурационных файлов.

Обновление фронтенда продукта

Пакеты обновления фронтенда (osmax-webadmin_V_all.deb, osmax-appshop_V_all.deb) обновляют статические страницы и JS-скрипты web-приложения. Для обновления не обязательно останавливать Nginx.

Используйте команды, перечисленные ниже.

Пример команды для установки пакетов из репозитория:

  • Astra Linux

  • РЕД ОС

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

Пример команд для установки пакетов из архива:

  • Astra Linux

  • РЕД ОС

sudo apt install ./osmax-appshop_<osmax-appshop-version>_all.deb
sudo apt install ./osmax-webadmin_<osmax-webadmin-version>_all.deb
sudo yum install ./osmax-appshop-<osmax-appshop-version>.noarch.rpm
sudo yum install ./osmax-webadmin-<osmax-webadmin-version>.noarch.rpm

Обновление модуля «Удаленный доступ»

  1. Убедитесь, что служба osmax-ira-guacamole-client остановлена, выполнив команду:

    sudo systemctl status osmax-ira-guacamole-client

    Если служба запущена, остановите её, выполнив команду:

    sudo systemctl stop osmax-ira-guacamole-client
  2. Обновите компоненты модуля удаленного доступа, выполнив команды:

    Пример команд для установки пакетов из репозитория:

    • Astra Linux

    • РЕД ОС

    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

    Пример команд для установки пакетов из архива:

    • Astra Linux

    • РЕД ОС

    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)

  1. Убедитесь, что службы salt-master и salt-api остановлены, выполнив команды:

    sudo systemctl status salt-master
    sudo systemctl status salt-api

    Если службы запущены, остановите их, выполнив команду:

    sudo systemctl stop salt-master salt-api
  2. Сделайте резервную копию конфигурационных файлов, выполнив команду:

    sudo cp -r /etc/salt /etc/salt_backup
  3. Установите пакеты SaltStack требуемой версии.

    Пример команд для установки пакетов из репозитория:

    • Astra Linux

    • РЕД ОС

    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

    Пример команд для установки пакетов из архива:

    • Astra Linux

    • РЕД ОС

    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)

  1. Убедитесь, что служба salt-minion остановлена, выполнив команду:

    sudo systemctl status salt-minion

    Если служба запущена, остановите её, выполнив команду:

    sudo systemctl stop salt-minion
  2. Сделайте резервную копию конфигурационных файлов, выполнив команду:

    sudo cp -r /etc/salt /etc/salt_backup
  3. Установите пакеты 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

Откат (опционально)

Откат выполняется в случае, если обновление привело к возникновению проблем.

  1. Остановите службы:

    1. На сервере управления (master) выполните команды:

      sudo systemctl stop salt-master
      sudo systemctl stop salt-api
    2. На агенте (minion) выполните команду:

      sudo systemctl stop salt-minion
  2. Удалите пакеты с текущей версией SaltStack:

    1. На сервере управления (master) выполните команду:

      sudo apt remove salt-master salt-api salt-ssh salt-common
    2. На агенте (minion) выполните команду:

      sudo apt remove salt-minion salt-common
  3. Установите предыдущую версию SaltStack:

    1. На сервере управления (master):

      Пример команд для установки пакетов из репозитория:

      • Astra Linux

      • РЕД ОС

      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

      Пример команд для установки пакетов из архива:

      • Astra Linux

      • РЕД ОС

      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
    2. На агенте (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
  4. Восстановите резервную копию конфигурации, выполнив команду:

    sudo cp -r /etc/salt_backup/* /etc/salt/
  5. Запустите службы:

    1. На сервере управления (master) выполните команды:

      sudo systemctl enable salt-master salt-api
      sudo systemctl start salt-master
      sudo systemctl start salt-api
    2. На агенте (minion) выполните команды:

      sudo systemctl enable salt-minion
      sudo systemctl start salt-minion

Запуск служб

Запуск инфраструктурных сервисов

Запустите все инфраструктурные сервисы:

  • базу данных;

  • брокер сообщений Apache Kafka;

  • S3-совместимое хранилище.

Запуск модуля «Удаленный доступ»

  1. Запустите модуль «Удаленный доступ» и проверьте его статус, выполнив команды:

    # Добавление службы в автозагрузку
    sudo systemctl enable osmax-ira-guacamole-client
    # Запуск службы
    sudo systemctl start osmax-ira-guacamole-client
    # Проверка статуса службы
    sudo systemctl status osmax-ira-guacamole-client
  2. Убедитесь, что в логах нет ошибок.

Запуск бэкенда

  1. Запустите модули 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
  2. Убедитесь, что в логах нет ошибок.

Запуск модуля координации (SaltStack)

  1. На сервере управления (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
  2. На агенте (minion) выполните команды:

    # Добавление службы в автозагрузку
    sudo systemctl enable salt-minion
    # Запуск службы salt-minion
    sudo systemctl start salt-minion
    # Проверка статуса службы
    sudo systemctl status salt-minion
  3. Проверьте версию SaltStack, выполнив команду на сервере управления (master):

    salt --version
  4. Проверьте подключение агента (minion) к серверу управления (master), для этого на агенте (minion) выполните команду:

    sudo salt-call test.ping

    Пример вывода:

    minion-01:
    True
  5. Убедитесь, что в логах служб SaltStack нет ошибок.

Запуск Nginx

Запустите или выведите из режима обслуживания веб-сервер NGINX, если отключалась служба или включался режим обслуживания.

Таблица версий компонентов

В таблице Табл. 1 указаны версии компонентов для версии продукта 1.16.0.

Табл. 1. Таблица версий компонентов
Компонент Назначение Версия компонента

libosmaxfreerdp

Библиотека RDP для модуля «Удаленный доступ»

1.4.1

libosmaxvncserver

Библиотека VNC для модуля «Удаленный доступ»

1.4.1

libosmaxssh2

Библиотека SSH с поддержкой SSO аутентификации для модуля «Удаленный доступ»

1.4.1

osmax-ira-openssh

Библиотека openssh для модуля «Удаленный доступ»

1.4.1

osmax-ira-tigervnc

Библиотека tigervnc для модуля «Удаленный доступ»

1.4.1

osmax-ira-xrdp

Библиотека xrdp для модуля «Удаленный доступ»

1.4.1

osmax-appshop

Пользовательский интерфейс «Магазин приложений»

1.16.0

osmax-core

Ядро (бэкенд)

1.16.0

osmax-ira-guacamole-client

Модуль «Удаленный доступ»

1.7.0-1

osmax-ira-guacamole-server

Модуль «Удаленный доступ»

1.7.0

osmax-provisioner

Модуль установки ОС (бэкенд)

1.6.0

osmax-webadmin

Пользовательский интерфейс «Кабинет администратора»

1.16.0

salt

Модуль координации (SaltStack)

3006.7.8

osmax-observer

Модуль мониторинга

1.0.0