Введение

В данной инструкции приведено описание порядка обновления ПК СВ "Брест" без остановки кластера.

Требования

Порядок обновления узлов

Обновление узлов кластера, работающих на ОС Astra Linux Special Edition 1.6, выполняется пакетным менеджером apt. Для того чтобы сохранить обслуживание клиентов облака во время обновления его узлов, необходимо обновлять узлы в следующем порядке:

  1. узлы виртуализации по очереди;
  2. front-end (если они развернуты отдельно от узлов виртуализации).

Подготовка узла виртуализации

Для обновления узла виртуализации он должен быть выведен в режим обслуживания. Для этого:

  1. Войти в веб-интерфейс администрирования облака.
  2. Перенести все работающие ВМ с этого узла на другие узлы.
  3. Перейти в Infrastructure — Hosts.

  4. Отметить нужный узел из списка доступных и нажать в верхнем меню кнопку Offline.

Обновление

Войти в командную строку узла под учетной записью <local-admin> и выполнить команды:

sudo apt update
sudo apt dist-upgrade
CODE

После окончания установки пакетов перезагрузить узел.

Включение узла

  1. Перейти в интерфейс управления облаком.
  2. Перейти в Infrastructure — Hosts.

  3. Отметить нужный узел из списка и нажать кнопку Enable в верхнем меню.

    Дождаться статуса ON для данного узла.
  4. Перенести на него ВМ и убедиться в их работоспособности.

Повторить порядок обновления для следующего узла виртуализации.

Обновление front-end

Если не используется RAFT, то на время перезагрузки front-end в ходе обновления доступ к облаку и управление им будет прервано.

Если настроены несколько front-end и они работают вместе в конфигурации RAFT, выполнять их обновление следует по очереди.

  1. Войти в командную строку front-end под учетной записью <local-admin> и выполнить команды:

    sudo cp /etc/apache2/sites-available/000-default.conf ./000-default-BKP.conf # и файл с плавающим адресом, если есть RAFT
    sudo cp /etc/one/oned.conf ./oned-BKP.conf
    sudo -u postgres /usr/bin/pg_dump --dbname=onedb  --format=plain --blobs --verbose --clean --create --file="/tmp/leader_db.backup"
    CODE
  2. Далее выполнить следующие команды:

    sudo apt update
    sudo apt dist-upgrade
    CODE
  3. Во время обновления будет задан вопрос о замене файла /etc/one/oned.conf на новую версию. Требуется ответить утвердительно на замену всех файлов конфигурации (будут заменены на новые из пакета обновления) и после выполнить следующие шаги:

    1. Выполнить редактирование файла /etc/one/oned.conf, внести данные из резервных копий в блоки RAFT (если есть) и DB:

      Пример блока RAFT

      FEDERATION = [
          MODE          = "STANDALONE",
          ZONE_ID       = 0,
      	SERVER_ID 	  = <ID>,
          MASTER_ONED   = ""
      ]
      
      RAFT = [
          LOG_RETENTION        = 500000,
          LOG_PURGE_TIMEOUT    = 600,
          ELECTION_TIMEOUT_MS  = 2500,
          BROADCAST_TIMEOUT_MS = 500,
      #rbt: change from 2000 to 0, official recommendation
          XMLRPC_TIMEOUT_MS    = 0
      ]
      
      # Executed when a server transits from follower->leader
      # BEGIN RAFT_LEADER_HOOK enabled by ansible raft playbook
      RAFT_LEADER_HOOK = [
        COMMAND = "raft/vip.sh",
        ARGUMENTS = "leader br1 192.168.56.100/24"
      ]
      
      # Executed when a server transits from leader->follower
      # BEGIN RAFT_FOLLOWER_HOOK enabled by ansible raft playbook
      RAFT_FOLLOWER_HOOK = [
        COMMAND = "raft/vip.sh",
        ARGUMENTS = "follower br1 192.168.56.100/24"
      ]
      CODE

      Пример блока DB

      DB = [ BACKEND = "pgsql",
             SERVER  = "localhost",
             PORT    = 5432,
             USER    = "onedbuser",
             PASSWD  = "12345678",
             DB_NAME = "onedb" ]
      CODE
    2. Перезагрузить сервисы apache2, opennebula, unicorn-opennebula:

      sudo systemctl restart apache2 opennebula unicorn-opennebula
      CODE
    3. Проверить доступность сервиса в браузере (если front-end один) или в консоли onezone, если используется RAFT:

      sudo systemctl status opennebula unicorn-opennebula # смотрим статус служб front-end
      sudo onezonoe show 0 # смотрим статус обновлённого узла front-end в RAFT
      CODE
  4. После окончания установки пакетов перезагрузить узел.

Если настроены несколько front-end и они работают вместе в конфигурации RAFT, перед переходом к обновлению следующей машины следует убедиться, что предыдущая корректно вернулась в зону, выполнив:

sudo onezone show 0
CODE

Если статус машины follower или leader, можно переходить к обновлению следующей.