Для обновления платформы необходимо выполнить ряд действий:
- снятие резервной копии БД
- подготовка рабочего окружения
- установка новой версии платформы (автоматического обновления платформы не предусмотрено). Также потребуется провести повторное конфигурирование для развертывания через Ansible
- перенос резервной копии БД (актуально для версии платформы < 1.19.4 или при переходе на внутренний микросервис БД)
Снятие резервной копии БД
Для платформы версии < 1.19.4:
Все команды из описания необходимы выполнять с правами root.
Перейти в директорию /etc/cron.daily/. В данной директории проверить наличие файлов-сценариев:
iot-backupdb iot-broker-backupdb
Если данные файлы отсутствуют, необходимо обратиться в техническую поддержку Eltex.
Далее необходимо вызвать запуск сценариев:
./iot-backupdb ./iot-broker-backupdb
После успешного завершения процесса бэкапа, необходимо проверить содержимое директории /var/backups/mongobackups/, в частности наличие архивов:
iot-core* iot-broker* iot-events* iot-licenses*
Рекомендуется перенести резервные копии в хранилище отличное от исходного сервера.
Для платформы версии 1.19.4 и выше:
Все команды из описания необходимы выполнять с правами root.
Обратиться к контейнеру с микросервисом БД. Например (для версии 1.22):
docker ps b2a306a11313 hub.eltex-co.ru/iot/iot-double-web:1.22 7356ae9e78ca hub.eltex-co.ru/iot/iot-core:1.22 8ac05e3f4025 hub.eltex-co.ru/iot/iot-mqttbroker-mongo:1.22 aa97316118c3 hub.eltex-co.ru/softwlc/eltex-ngw:1.18 24b8b2632912 hub.eltex-co.ru/iot/iot-clickhouse-backup:1.22 8a6cb2fab0b6 hub.eltex-co.ru/iot/iot-olapservice:1.22 1ad497e3e9ff hub.eltex-co.ru/iot/iot-clickhouse-server:1.22 4b826bfc266e hub.eltex-co.ru/iot/iot-mongo5:1.22
В частности интересует контейнер iot-mongo с id 4b826bfc266e. Необходимо запустить сценарии из данного контейнера:
docker exec -it 4b826bfc266e /etc/cron.daily/iot-broker-backupdb docker exec -it 4b826bfc266e /etc/cron.daily/iot-backupdb
После успешного завершения процесса бэкапа, необходимо проверить содержимое директории /storage/iot/mongodb/mongobackups/, в частности наличие архивов:
iot-core* iot-broker* iot-events* iot-licenses*
Рекомендуется перенести резервные копии в хранилище отличное от исходного сервера.
Подготовка рабочего окружения
Необходимо подготовить сервер для инсталляции платформы.
Все команды из описания необходимы выполнять с правами root.
Для платформы версии 1.19.4 и выше:
1. Остановить микросервисы предыдущей инсталляции. Необходимо выполнить в консоли:
docker rm -f $(docker ps -a -q) docker volume rm -f $(docker volume ls -q) docker image rm -f $(docker image ls -q)
2. Удалить файлы конфигурации Ansiblle от предыдущей инсталляции /etc/ansible-iot, предварительно сделав резервную копию
3. Если инсталляция новой версии платформы производится на исходном сервере, необходимости в повторной инсталляции зависимостей для Ansible нет
4. Распаковать полученный архив с файлами конфигурации новой версии платформы. Например:
tar -C /etc -xvf ansible-iot-1.23.tar.gz
Для получения файлов конфигурации обратитесь с запросом в Коммерческий отдел ЭЛТЕКС.
5. Отредактируйте файлы конфигурации согласно основной документации
6. Перед выполнением следующих действий необходимо уточнить наличие/поддержку инструкций AVX на CPU сервера. Если поддержка отсутствует, то в настройках Ansible (платформы), т.е. vars/default.yml изменить параметр:
mongodb_version: 4
Для проверки наличия требуемых инструкция:
lscpu | grep avx
(Опционально) Если ранее использовалась mongodb как внешний сервис и требуется перенести всю инфраструктуру БД в миеросервисы, то необходимо выполнить остановку сервиса mongod (с отключением автоматического запуска). Например:
service mongod stop systemctl disable mongod
Проверить что сервис остановился:
service mongod status
Подготовить и настроить проект платформы в ansible-iot для доступа к БД контейнера mongo. Для ansible-iot должны быть настроены следующие параметры в vars/service_parameters.yml:
db_mapped_port: 27017 olapservice_mapped_port: 8023 olapservice_db_mapped_port: 8123 core_api_mapped_port: 8071 core_api_ssl_mapped_port: 8073 iot_core_log_level: debug export_mongo_port: true export_olapservice_port: true export_olapservice_db_port: true
7. Для восстановления из резервной копии БД необходимо предварительно подготовить и проинсталлировать необходимо ПО, в частности если ранее не было установлено ПО mongo-tools и/или mongodb-clients (если ранее использовалась mongodb как внешний сервис на сервере данный шаг не требуется для выполнения):
apt update apt install mongo-tools mongodb-clients
Установка новой версии платформы
Все команды из описания необходимы выполнять с правами root.
1. Запустить процесс инсталляции платформы:
ansible-playbook install.yml
2. Дождаться окончания операции. Проверить что все сервисы запущены:
docker ps b2a306a11313 hub.eltex-co.ru/iot/iot-double-web:1.23 7356ae9e78ca hub.eltex-co.ru/iot/iot-core:1.23 8ac05e3f4025 hub.eltex-co.ru/iot/iot-mqttbroker-mongo:1.23 aa97316118c3 hub.eltex-co.ru/softwlc/eltex-ngw:1.18 24b8b2632912 hub.eltex-co.ru/iot/iot-clickhouse-backup:1.23 8a6cb2fab0b6 hub.eltex-co.ru/iot/iot-olapservice:1.23 1ad497e3e9ff hub.eltex-co.ru/iot/iot-clickhouse-server:1.23 4b826bfc266e hub.eltex-co.ru/iot/iot-mongo5:1.23
Перенос резервной копии БД
Все команды из описания необходимы выполнять с правами root.
1. Остановить микросервисы с доступом до БД:
ansible-playbook services_stop.yml --extra-vars '{"services":["core", "broker", "olapservice"]}'
2. Восстановить записи из резервных копий mongo, например:
mongorestore --host=127.0.0.1 --port=27017 --db=iot-core --noIndexRestore --drop var/backups/mongobackups/iot-core/2022-04-18_04-26/iot-core mongorestore --host=127.0.0.1 --port=27017 --db=iot-events --noIndexRestore --drop var/backups/mongobackups/iot-events/2022-04-18_04-26/iot-events mongorestore --host=127.0.0.1 --port=27017 --db=iot-broker --noIndexRestore --drop var/backups/mongobackups/iot-broker/2022-04-18_04-26/iot-broker mongorestore --host=127.0.0.1 --port=27017 --db=iot-licenses --noIndexRestore --drop var/backups/mongobackups/iot-licenses/2022-04-18_04-26/iot-licenses
Для восстановления записей из резервных копий olap необходимо выполнить дополнительно шаги согласно документации.
В частности скопировать бэкапы из /storage/iot/olapdb/clickhouse-backup/archives/ и выполнить перенос согласно п.п.8 документации.
3. Перезапустить все микросервисы:
ansible-playbook services_stop.yml ansible-playbook install.yml
В процессе переноса/восстановления из бэкапа БД, в момент первого запуска платформы категорически не рекомендуется вмешиваться в данный процесс (например, останавливать контейнеры). Необходимо дождаться завершения миграции БД.
На процесс запуска может виляет производительность сервера. Необходимо убедиться, что сервер или гостевая система (виртуальная машина) соответствует минимальным требованиям.