Перейти к основному содержимому

Обновление при помощи Ansible плейбуков

Сведения

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

Описание

В составе дистрибутива (папка installer) расположены два скрипта, для обновления:

  • Скрипт-разведчик — скрипт проверки перед обновлением.
  • Скрипт-обновления — основной скрипт, при запуске которого происходит установка обновления.

Процесс разведки и обновления может осуществляться по различным алгоритмам, существенно различающимися по времени выполнения и сложности (зависит от объема и типа изменений между версиями):

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

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

  • изменение состава системных таблиц;
  • изменение состава системных представлений;
  • изменение состава системных функций;
  • изменение списка встроенных типов данных;
  • изменение формата хранения данных (включая изменения в алгоритме засекречивания).

Изменение мажорной версии оригинального ядра PostgreSQL в основе СУБД Pangolin требует дополнительных проверок и ограничений.

Общая информация о сценарии разведки

Сценарий обновления состоит из обязательного запуска сценария разведки, в ходе которого пользователь получает всю необходимую ему информацию о состоянии текущего стенда с СУБД, и непосредственно сценария обновления, который можно запускать только когда разведчик выдает «success» сообщение.

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

  • выводит список установленных extensions (в процессе обновления они не будут перенесены в новую версию СУБД Pangolin):

    • сторонние/не входящие в текущую версию продукта СУБД Pangolin;
    • запрещенные расширения;
    • расширения, несовместимые с новой версией СУБД Pangolin;
    • полный список ограничений, для администраторов автоматизированной системы (в случае их наличия).
  • проверяет:

    • возможность создания резервной копии (для обновления с переносом данных). Локальная РК является необходимым условием для работы механизма автоматического отката к исходной версии СУБД в случае возникновения любых внештатных ситуаций в процессе работы механизма обновления;

      Внимание!

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

    • наличие дубликатов в конфигурационном файле Pangolin Manager (postgres.yml);

    • наличие специальных символов в конфигурационных файлах postgres.yml, pg_hba.conf, postgresql.conf;

    • количество транзакций с незавершенным статусом;

    • состояние БД на наличие близости к пороговому значению заморозки транзакций autovacuum_freeze_max_age.

    Полный список проверок представлен в разделе «Проверка готовности к обновлению».

Общая информация о сценарии обновления

В процессе обновления будет обновлен Pangolin DBMS и версии всех утилит, входящих в состав продукта.

При обновлении происходит процесс слияния пользовательских настроек и настроек, отвечающих требованиям новой версии СУБД, в конфигурационных файлах:

  • postgres.yml (в случае кластерной конфигурации);
  • pangolin-pooler.ini (в случае наличия компонента Pangolin Pooler);
  • pg_hba.conf;
  • postgresql.conf (в случае решения standalone).
Внимание!

При обновлении с pgbouncer на Pangolin Pooler до обновления patroni на Pangolin Manager необходимо:

  • проверить наличие файла /etc/patroni/reload_pgbouncer.sh;

  • изменить содержимое файла:

    cтроку sudo systemctl restart pgbouncer заменить на sudo systemctl restart pangolin-pooler.

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

примечание

Перед запуском скрипта обновления добавьте в файлы sudoerc основного узла, реплики и арбитра строку user_ansible ALL=(ALL:ALL) NOPASSWD: ALL.

Процесс обновления при помощи Ansible плейбуков состоит из двух шагов:

  1. Запуск проверки готовности к обновлению с помощью скрипта-разведчика.
  2. Запуск сценария обновления с помощью скрипта обновления.

Проверка готовности к обновлению

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

Автоматизированная проверка готовности к обновлению происходит при помощи запуска скрипта-разведчика (scouting). Описание запуска скрипта описано в одноименном разделе «Проверка готовности к обновлению».

Запуск сценария обновления

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

  1. Скачайте и распакуйте дистрибутив новой версии СУБД Pangolin.

  2. Перейдите в каталог с распакованным дистрибутивом, а затем в каталог installer.

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

    Данные должны содержать те же параметры, что и при установке. Примеры заполнения файлов описаны в разделе «Автоматизированная установка при помощи Ansible плейбука».

  4. Заполните настраиваемый конфигурационный файл custom_file_sample.yml.

    Предупреждение!

    При обновлении в секции 3.1.HBA RULES не поддерживаются следующие параметры:

    • ldap_tls;
    • cert_dir;
    • openldap_config.
  5. Запустите Ansible плейбук. Далее приведены примеры Ansible сценариев для обновления различных конфигураций:

    ansible-playbook playbook_updates.yaml \
    -i inventories/cluster/hosts.ini \
    -t always,cluster \
    --ask-vault-pass \
    -vv \
    -e '{"update_complexity_level": "update_complexity_level_2"}' \
    -e '{"is_inner_full_backup": true}' \
    --extra-vars "local_distr_path=${} \
    custom_config=${}" \
    Описание параметров

    Описание параметров:

    • custom_config - абсолютный путь к файлу конфигурации custom_config_sample.yml;

    • update_complexity_level - тип обновления (распознается при запуске скрипта-разведчика);

    • is_inner_full_backup - отвечает за создание резервной копии;

    • local_distr_path - абсолютный путь к загруженному и распакованному дистрибутиву Pangolin.

    Значения используемых в команде запуска Ansible ключей:

    • -i - путь к inventory-файлу;
    • -e - переменная для передачи;
    • --extra-vars - переменные, которые по приоритету важнее переменных из inventory;
    • -t - теги для запуска;
    • -v - уровень логирования Ansible. Может быть, как пустым, так и -vvvvvv, где запуск без v - минимальное логирование.

    После завершения обновления в директории /var/log/pangolin_ansible_logs/, если не задан иной путь с помщью переменной pangolin_ansible_log конфигурационного файла custom_config_initial.yml, будет сгенерирован файл с названием pangolin_update_<date>.log. В нем будет отображаться состояние корректности установленных обновлений.

    Ниже приведен пример данного файла с конфигурации standalone:

    msg:
    - RLM.INFO__I01001:Версия ansible корректная.__RLM.INFO
    - RLM.INFO__I01008:Проверка ОС прошла успешно. Текущая ОС SberLinux.__RLM.INFO
    - RLM.INFO__I01002:Версия 8.8 корректная.__RLM.INFO
    - RLM.INFO__I03005:Процесс обновления исполняемых файлов будет сопровождаться запуском скрипта обновления системных данных. Работа скрипта подразумевает полную недоступность кластера до конца работы сценария.__RLM.INFO
    - RLM.INFO__I05020:Все необходимые RPM/DEB пакеты для установки или обновления/восстановления найдены.__RLM.INFO
    - RLM.INFO__I01005:Файл лицензии license.json найден.__RLM.INFO
    - RLM.INFO__I01006:Лицензия валидна.__RLM.INFO
    - RLM.INFO__I01009:Процесс мержа конфигурационного файла /pgarclogs/backups/0X.00X.0X/2025-02-27-T1627/pangolin_dbms/pgdata/0{base_version}/data/postgresql.conf завершился успешно.__RLM.INFO
    - RLM.INFO__I01009:Процесс мержа конфигурационного файла /pgarclogs/backups/0X.00X.0X/2025-02-27-T1627/pangolin_dbms/pgdata/0{base_version}/data/pg_hba.conf завершился успешно. __RLM.INFO
    - RLM.INFO__I01009:Процесс мержа конфигурационного файла /pgarclogs/backups/0X.00X.0X/2025-02-27-T1627/pangolin_dbms/pgdata/0{base_version}/data/postgresql.base.conf завершился успешно.__RLM.INFO
    - RLM.INFO__I01009:Процесс мержа конфигурационного файла /pgarclogs/backups/0X.00X.0X/2025-02-27-T1627/pangolin_dbms/pgdata/0{base_version}/data/postgresql.auto.conf завершился успешно.__RLM.INFO
    - RLM.INFO__I03007:Процесс обновления системных каталогов завершился успешно.__RLM.INFO
    ...
    - RLM.OK__S05001:Обновление успешно завершено.__RLM.OK

Дальнейшие шаги

Для проверки успешности завершения обновления рекомендуется обратиться к шагам «Проверки результата» в общем блоке автоматизированного обновления.