Для обновления платформы необходимо выполнить ряд действий:
- снятие резервной копии БД
- подготовка рабочего окружения
- установка новой версии платформы (автоматического обновления платформы не предусмотрено). Также потребуется провести повторное конфигурирование для развертывания через 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_db_mapped_port: 8123 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
В процессе переноса/восстановления из бэкапа БД, в момент первого запуска платформы категорически не рекомендуется вмешиваться в данный процесс (например, останавливать контейнеры). Необходимо дождаться завершения миграции БД.
На процесс запуска может виляет производительность сервера. Необходимо убедиться, что сервер или гостевая система (виртуальная машина) соответствует минимальным требованиям.
4. По окончанию процесса переноса бэкапа БД и успешного старта платформы необходимо вернуть в исходное состояние параметры в vars/service_parameters.yml:
export_mongo_port: false export_olapservice_port: false export_olapservice_db_port: false
5. Перезапустить все микросервисы:
ansible-playbook services_stop.yml ansible-playbook install.yml
В процессе переноса/восстановления из бэкапа БД, в момент первого запуска платформы категорически не рекомендуется вмешиваться в данный процесс (например, останавливать контейнеры). Необходимо дождаться завершения миграции БД.
На процесс запуска может виляет производительность сервера. Необходимо убедиться, что сервер или гостевая система (виртуальная машина) соответствует минимальным требованиям.