4 Установка обновлений программы

Установка обновлений "Спектра" и дополнительного ПО выполняется в случае, если на хосте "Спектра" уже существуют ранее установленные версии ПО.

Для установки и для обновления "Спектра" используется один и тот же пакет установочных файлов, поставляемый в виде архива tar.gz, который необходимо распаковать в произвольный каталог на хосте "Спектра", например в /root/spectrum-dist.

В данном руководстве приводятся примеры команд для версии "Спектра" 1.6.0-274. Номер версии используется в имени файла с архивом дистрибутива spectrum-dist-< OS >-v< X.X.X >-< build >.tar.gz, а также имени каталога, в который распаковывается архив. На момент выполнения пользователем установки или обновления "Спектра" версия может отличаться.

4.1 Обновление ПО "Спектр"

Последовательность путей обновления "Спектра" до последней версии:

1.1: → 1.2 → 1.3 → 1.4 → 1.5 → 1.6(.1 OR .2) → 1.8 → 1.8.1

1.2: → 1.3 → 1.4 → 1.5 → 1.6(.1 OR .2) → 1.8 → 1.8.1

1.3: → 1.4 → 1.5 → 1.6(.1 OR .2) → 1.8 → 1.8.1

1.4: (1.4 OR 1.4.1) → 1.6(.1) → 1.8 → 1.8.1

1.5: (1.5 OR 1.5.1) → 1.7(.1) → 1.8.1

1.6: (1.6 OR 1.6.1 OR 1.6.2) → 1.8 → 1.8.1

1.7: (1.7 OR 1.7.1) → 1.8.1

1.8: → 1.8.1

Новый архив с дистрибутивом "Спектра" необходимо распаковать в произвольный каталог на хосте "Спектра", например в /root/spectrum-dist.

Распакованный архив содержит все RPM-пакеты, необходимые для работы "Спектра", а также скрипт установки install.sh и скрипт обновления update.sh.

В случае обновления с версии более ранней чем 1.7 после распаковки tar-архива необходимо:

  1. Перейти в директорию с файлами дистрибутива.

  2. Выполнить команду:

"sed -i 's/renew_configs: false/renew_configs: true/g' install_playbook.yml"

Для обновления необходимо перейти в директорию, в которую был распакован архив, и выполнить скрипт update.sh:

[root@spectrum-host ~]# mkdir -p spectrum-dist
[root@spectrum-host ~]# tar -xvf spectrum-dist-alt10-v1.6.0-274.tar.gz -C ./spectrum-dist
[root@spectrum-host ~]# cd spectrum-dist/spectrum-rpm-dist-v1.6.0-274
[root@spectrum-host spectrum-rpm-dist-v1.6.0-274]# ./update.sh

4.2 Обновление дополнительного ПО "Спектр"

Шаги, необходимые для обновления дополнительного ПО "Спектр", за исключением PgAdmin, полностью повторяют шаги первичной установки.

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

  • Агент "Спектра";

  • Агент уведомлений "Спектра",

а также обновление на хосте "Спектра" ПО PgAdmin для администрирования СУБД.

4.2.1 Обновление агента "Спектра"

Обновление дополнительных компонентов "Спектра" выполняется с хоста "Спектра" из терминала, аналогично установке самого "Спектра".

В каталоге дистрибутива "Спектра" при помощи любого текстового редактора необходимо отредактировать файл inventory_samples/cluster.yml, введя параметры кластера и узлов, узнать их можно в инсталляционной карте Машины МБД.П (должны быть указаны IP-адреса в сети управления).

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

Если каталог, в который распакован дистрибутив "Спектра" – это /root/spectrum-dist, то полный путь к нужному файлу будет

/root/spectrum-dist/spectrum-rpm-dist-v1.6.0-274/inventory_samples/cluster.yml

Проверить наличие файла можно командой ls:

ls /root/spectrum-dist/spectrum-rpm-dist-v1.6.0-274/inventory_samples/cluster.yml

Просмотреть содержимое файла cluster.yml можно, например, командой cat:

cat /root/spectrum-dist/spectrum-rpm-dist-v1.6.0-274/inventory_samples/cluster.yml

В примере обновление дополнительного ПО для "Спектра" выполняется для одного кластера. Если под управлением "Спектра" находятся несколько кластеров, то шаги по обновлению дополнительного ПО на узлах (Агента "Спектра" и Агента уведомлений "Спектра") необходимо выполнить для каждого кластера.

Для обновления Агента "Спектра" в файле cluster.yml, описанном в п. 3.2.2, необходимо заполнить раздел hosts, в котором надо указать IP-адреса узлов кластера. Должны быть указаны IP-адреса в сети управления, узнать их можно в инсталляционной карте Машины МБД.П.

Также можно указать пути к файлам сертификатов, подробнее про настройку SSL см. п. 3.3.

all:
  vars:
    ansible_user: root
    ansible_ssh_extra_args: "-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
    rpm_mode: true

    # Список переменных, используемых для настройки алерт-агента
    recipients:
        # Название конфигурации уведомлений и JSON файла, который его описывает
      - name: spectrum
        # UUID кластера, для которого настраиваются уведомления. Можно найти в адресной строке, перейдя на страницу обзора кластера
        cluster_id: 24ed3935-e6ce-4e72-8163-d2078f40d70c
         # Хост Спектра, для которого настраиваются алерты. Указать реальный IP адрес Спектра, доступ к котором есть с узла кластера
        spectrum_host: 192.168.1.


  # Хосты узлов, на которых будет настроен алерт-агент
  hosts:
    node01:
      # указать реальные IP адреса узлов кластера, к которым есть доступ с узла Спектра
      ansible_host: 192.168.1.
      # Раскомментировать, если у хоста Спектра есть корневой сертификат и указать реальный путь до сертификата на хосте Спектра
      host_ca_cert: "" # Путь к корневому сертификату на хосте Спектра, откуда тот будет скопирован на узлы
      # Раскомментировать, если на хосте Спектра настроена аутентификация и указать реальный путь до ключа и сертификата на хосте Спектра
      host_cert: "" # Путь к клиентскому сертификату на хосте Спектра, откуда тот будет скопирован на узлы
      host_key: "" # Путь к ключу для клиентского сертификата на хосте Спектра, откуда тот будет скопирован на узлы

    node02:
      ansible_host: 192.168.1.
      host_ca_cert: ""
      host_cert: ""
      host_key: ""

    node03:
      ansible_host: 192.168.1.
      host_ca_cert: ""
      host_cert: ""
      host_key: ""

По умолчанию файл заполнен некорректными данными, которые необходимо исправить. При обновлении Агента "Спектра" раздел recipients можно оставить без изменений. Этот раздел будет заполнен при установке Агента уведомлений "Спектра".

Полученный файл можно сохранить для использования в последующих обновлениях "Спектра". Например, скопировать в домашний каталог пользователя, под которым выполняется установка "Спектра". Для этого перейти в каталог, в который распакован архив с дистрибутивом "Спектра". Например, если архив распакован в /root/spectrum-dist, то выполнить команду

cd /root/spectrum-dist/spectrum-rpm-dist-v1.6.0-274

и скопировать файл при помощи команды cp:

[root@spr-test-installer_v1_1 spectrum-rpm-dist-v1.6.0-274]# cp inventory_samples/cluster.yml ~

После заполнения IP-адресов узлов кластера можно перейти к установке Агента "Спектра" на узлы кластера.

Обновление производится из каталога, в который распакован архив с дистрибутивом "Спектра". Например, если распаковали архив в /root/spectrum-dist, то выполнить команду

cd /root/spectrum-dist/spectrum-rpm-dist-v1.6.0-274

И далее выполнить следующие команды:

source /opt/skala-r/spectrum/python-modules/bin/activate
ansible-playbook -i inventory_samples/cluster.yml deploy_spectrum_agent.yml -k

Если для установки и/или обновления Агента "Спектра" использовалась копия файла cluster.yml в домашнем каталоге пользователя (см. п. 3.2.2), под которым выполняется установка "Спектра", то последняя команда будет иметь вид:

ansible-playbook -i ~/cluster.yml deploy_spectrum_agent.yml -k

После запуска требуется ввести пароль пользователя root для доступа к узлам кластера.

При успешном выполнении команды должны отсутствовать сообщения об ошибках, а в итоговом отчете о запуске плейбука должны отсутствовать шаги со статусом failed:

PLAY RECAP **************************************************************************************
node01   : ok=30   changed=11   unreachable=0   failed=0   skipped=9   rescued=0   ignored=0
node02   : ok=30   changed=11   unreachable=0   failed=0   skipped=9   rescued=0   ignored=0
node03   : ok=30   changed=11   unreachable=0   failed=0   skipped=9   rescued=0   ignored=0

4.2.2 Обновление Агента уведомлений "Спектра"

Перед обновлением Агента уведомлений "Спектра" кластеры должны быть видны в графическом интерфейсе и иметь статус "Доступен".

Для обновления Агента уведомлений "Спектра" потребуются IP-адрес хоста "Спектра" и ID импортированного кластера.

IP-адрес отображается в адресной строке браузера, в котором открыт веб-интерфейс "Спектра". ID кластера также отображаются в веб-интерфейсе в адресной строке браузера при переходе на страницу информации о кластере.

image$ip address id cluster

В приведенном примере IP-адрес "Спектра" - "192.168.190.138", ID кластера — это значение "24ed3935-e6ce-4e72-8163-d2078f40d70c".

Полученные ID кластера и IP-адрес необходимо вписать в соответствующие строки секции recipients того же файла cluster.yml, который использовался для установки и/или обновления Агента "Спектра" (см. п. 3.2.2):

all:
  vars:
    ansible_user: root
    ansible_ssh_extra_args: "-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
    rpm_mode: true

    # Список переменных, используемых для настройки алерт-агента
    recipients:
        # Название конфигурации уведомлений и JSON файла, который его описывает
      - name: spectrum
        # UUID кластера, для которого настраиваются уведомления. Можно найти в адресной строке, перейдя на страницу обзора кластера
        cluster_id: 24ed3935-e6ce-4e72-8163-d2078f40d70c
         # Хост Спектра, для которого настраиваются алерты. Указать реальный IP адрес Спектра, доступ к котором есть с узла кластера
        spectrum_host: 192.168.190.138

Для кластера, приведенного в примере выше, итоговое содержимое файла inventory_samples/cluster.yml будет иметь вид:

all:
  vars:
    ansible_user: root
    ansible_ssh_extra_args: "-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
    rpm_mode: True

    # Список переменных, используемых для настройки алерт-агента recipients:
        # Название конфигурации уведомлений и JSON файла, который его описывает
      - name: spectrum
        # UUID кластера, для которого настраиваются уведомления. Можно найти в адресной строке, перейдя на страницу обзора кластер
        cluster_id: 24ed3935-e6ce-4e72-8163-d2078f40d70c
         # Хост Спектра, для которого настраиваются уведомления. Указать реальный IP адрес Спектра, доступ к котором есть с узла кластера
        spectrum_host: 192.168.190.138


  # Хосты узлов, на которых будет настроен алерт-агент
  hosts:
    node01:
      # указать реальные IP адреса узлов кластера, к которым есть доступ с узла Спектра
      ansible_host: 192.168.190.61
      # Раскомментировать, если на хосте Спектра настроена аутентификация и указать реальный путь до ключа и сертификата на хосте Спектра
      host_ca_cert: "/opt/skala-r/spectrum/certs/ca.crt" # Путь к корневому сертификату на хосте Спектра, откуда тот будет скопирован на узлы
      # Раскомментировать, если на хосте Спектра настроена аутентификация и указать реальный путь до ключа и сертификата на хосте Спектра
      host_cert: "/home/root/node01_server.crt" # Путь к клиентскому сертификату на хосте Спектра, откуда тот будет скопирован на узлы
      host_key: "/home/root/node01_server.key" # Путь к ключу для клиентского сертификата на хосте Спектра, откуда тот будет скопирован на узлы

    node02:
      ansible_host: 192.168.190.62
      host_ca_cert: "/opt/skala-r/spectrum/certs/ca.crt"
      host_cert: "/home/root/node02_server.crt"
      host_key: "/home/root/node02_server.key"

    node03:
      ansible_host: 192.168.190.63
      host_ca_cert: "/opt/skala-r/spectrum/certs/ca.crt"
      host_cert: "/home/root/node03_server.crt"
      host_key: "/home/root/node03_server.key"

Далее для обновления Агента уведомлений перейти в каталог, в который распакован архив с дистрибутивом "Спектра". Например, если архив распакован в /root/spectrum-dist, то выполнить команду

cd /root/spectrum-dist/spectrum-rpm-dist-v1.6.0-274

и далее следующие команды:

source /opt/skala-r/spectrum/python-modules/bin/activate
ansible-playbook -i inventory_samples/cluster.yml deploy_spectrum_alert_agent.yml -k

Если для установки и/или обновления Агента "Спектра" использовалась копия файла cluster.yml в домашнем каталоге пользователя, под которым выполняется установка "Спектра" (см. п. 3.2.2), то последняя команда будет иметь вид:

ansible-playbook -i ~/cluster.yml deploy_spectrum_alert_agent.yml -k

После запуска требуется ввести пароль пользователя root для доступа к узлам кластера.

При успешном выполнении команды в отчете о запуске плейбука должны отсутствовать шаги со статусом failed:

TASK [remove existing alerts for spectrum]*************
fatal: [node01]: FAILED! => {"changed": true, "cmd": "pcs alert delete spectrum alert", "delta": "0:00:00.452687", "end": "2023-06-01 16:12:14.057743",
": "Error: alert 'spectrum alert' does not exist\nError: Errors have occured, therefore pcs is unable to continue", "stderr_lines": ["Error alert "sp
continue"], "stdout": "", "stdout_lines": []}
...ignoring

TASK [debug] ****************************************************************************************************************************************
ok: [node01] => {
    "msg": ""
}

TASK [create spectrum alerts] ***********************************************************************************************************************
changed: [node01]

TASK [add recipients to spectrum alert] *************************************************************************************************************
changed: [node01] => (item={'name': 'spectrum', 'cluster_id': '24ed3935-e6ce-4e72-8163-d2078f40d70c', 'spectrum_host': '192.168.190.138'})

PLAY RECAP ******************************************************************************************************************************************
node01   : ok=30   changed=11   unreachable=0   failed=0   skipped=0   rescued=0   ignored=1
node02   : ok=30   changed=11   unreachable=0   failed=0   skipped=0   rescued=0   ignored=0
node03   : ok=30   changed=11   unreachable=0   failed=0   skipped=0   rescued=0   ignored=0

4.2.3 Обновление PgAdmin

Дистрибутив PgAdmin представляет собой tar.gz архив pgadmin-dist-< OS >-< версия >.tar.gz, который необходимо распаковать в произвольный каталог на хосте "Спектра", например в /root/pgadmin-dist.

В данном Руководстве приводятся примеры команд для архива с названием pgadmin-dist-altlinux10-61.tar.gz. Название архива может отличаться, например, может быть другая версия.

Распакованный архив содержит образы docker-контейнеров, необходимые для работы PgAdmin, а также скрипт обновления update.sh. Для обновления необходимо перейти в директорию, в которую был распакован архив, и выполнить скрипт update.sh. Для этого нужно выполнить следующие команды:

[root@spectrum-host ~]# mkdir -p spectrum-dist
[root@spectrum-host ~]# tar -xvf pgadmin-dist-altlinux10-61.tar.gz -C ./spectrum-dist
[root@spectrum-host ~]# cd spectrum-dist/pgadmin-dist
[root@spectrum-host pgadmin-dist]# ./update.sh