Установка обновлений

Установка обновлений#

Кибер Инфраструктура поддерживает последовательное обновление без перерывов в работе. Серверы обновляются по очереди без ущерба для доступности данных. Во время обновления сервер, который необходимо перезагрузить, может перейти в режим обслуживания. В этом случае рабочие нагрузки и виртуальные машины , размещенные на этом сервере, переносятся на другие серверы. После обновления сервер возобновляет работу, а перенесенные рабочие нагрузки и ВМ перемещаются обратно на этот сервер.

Примечание

Обычно для установки обновлений требуется доступ к Интернету. Для установки обновлений в среде без доступа к Интернету (в закрытом контуре) вы можете использовать локальное зеркало репозитория пакетов продукта. Подробную информацию см. в статье базы знаний Обновление кластера Кибер Инфраструктуры без доступа в Интернет (в закрытом контуре).

Важное примечание

В продукте Кибер Инфраструктура версии 6.5 изменился способ настройки пользовательских параметров для службы Prometheus. До версии 6.5 пользовательские параметры можно было указывать с помощью переменных в файле /etc/sysconfig/prometheus, которые затем использовались в файле /usr/lib/systemd/system/prometheus.service для запуска службы, например:

# /etc/sysconfig/prometheus
<...>
STORAGE_RETENTION="--storage.tsdb.retention.time=30d"
<...>

# /usr/lib/systemd/system/prometheus.service
<...>
ExecStart=/usr/bin/prometheus \
<...>
        $STORAGE_RETENTION \
<...>

Начиная с версии 6.5, пользовательские параметры для службы Prometheus необходимо указывать в переменной ARGS файла /etc/default/prometheus, которая затем используется в файле /usr/lib/systemd/system/prometheus.service для запуска службы, например:

# /etc/default/prometheus
ARGS='<...> --storage.tsdb.retention.time=30d <...>'

# /usr/lib/systemd/system/prometheus.service
<...>
ExecStart=/usr/bin/prometheus $ARGS
<...>

При обновлении до версии 6.5 пользовательские переменные не переносятся автоматически. Если они заданы, перед обновлением их необходимо сохранить и задать повторно после обновления, использовав новый способ.

Можно обновить различные компоненты кластера все вместе или по отдельности. В любом случае компоненты обновляются в следующем порядке.

  1. Сначала обновляются серверы кластера.

  2. Серверы управления обновляются, только когда обновлены все серверы кластера. Главный сервер управления обновляется в последнюю очередь.

  3. Панель управления (администрирования и самообслуживания) и API вычислений обновляются на серверах управления, только когда обновлены все серверы кластера и серверы управления. При обновлении этого компонента не требуется перезагрузка серверов управления.

Ограничения

  • Серверы необходимо обновлять только через панель администрирования или с помощью инструмента vinfra (см. раздел Установка обновлений). Не используйте yum update.

  • Неназначенные серверы можно обновлять.

  • Обновления применяются к одному серверу за раз.

  • Серверы управления можно обновить только все вместе и только после обновления всех серверов кластера.

  • Панель управления и API вычислений можно обновить только после обновления всех серверов управления и серверов кластера.

  • При развертывании с одним узлом узел не входит в обслуживание во время обновления.

  • Динамическая миграция не поддерживается для виртуальных машин с присоединенными виртуальными графическими процессорами или PCI-устройствами.

Предварительные требования

Обновление компонентов кластера

  1. Откройте экран Настройки → Обновления. Дата последней проверки отображается в правом верхнем углу. Щелкните по круговой стрелке, чтобы проверить наличие обновлений. Если для компонента кластера есть обновления, его статус обновлений меняется на Доступно. Если сервер необходимо будет перезагрузить, то рядом с доступной версией будет добавлено Требуется перезагрузка.

  2. Нажмите Загрузить в правом верхнем углу, чтобы получить обновления. Дождитесь загрузки обновлений и изменения статуса обновления на Готово к установке.

  3. [Необязательно] Нажмите Заметки о выпуске, чтобы прочитать сведения о выпуске.

  4. Выберите компоненты, которые следует обновить.

    • Для обновления серверов кластера выберите нужные серверы кластера.

    • Для обновления серверов управления выберите все серверы управления и те серверы кластера, которые требуют обновления.

    • Для обновления панели управления и API вычислений выберите этот компонент и все серверы управления, если они требуют обновления.

  5. Нажмите Обновить, чтобы продолжить.

  6. Если вы выбрали серверы, требующие перезагрузки, выполните следующие действия.

    1. Решите, будут ли эти серверы переходить в режим обслуживания. Выберите Режим обслуживания, если вы хотите перевести эти серверы в режим обслуживания.

    2. Если вы выбрали серверы с вычислительным сервисом, выберите способ миграции виртуальных машин, работающих на этих серверах.

      • С параметром Игнорировать ВМ, которые нельзя перенести динамически виртуальные машины с сервера, переходящего в режим обслуживания, будут динамически перенесены на другие вычислительные серверы. ВМ, которые нельзя перенести динамически, будут пропущены. Это применимо к виртуальным машинам с присоединенными виртуальными графическими процессорами или PCI-устройствами, а также в случае недостаточных ресурсов виртуальных ЦП и ОЗУ на других вычислительных серверах. Пропущенные ВМ продолжат работать до перезагрузки или выключения сервера. В этом случае они будут остановлены, что приведет к перерыву в работе. Они будут запущены автоматически после возобновления работы сервера.

      • С параметром Игнорировать ВМ, которые нельзя или не удалось перенести динамически виртуальные машины с сервера, переходящего в режим обслуживания, будут динамически перенесены на другие вычислительные серверы. ВМ, которые нельзя перенести динамически, будут пропущены. Это применимо к виртуальным машинам с присоединенными виртуальными графическими процессорами или PCI-устройствами, а также в случае недостаточных ресурсов виртуальных ЦП и ОЗУ на других вычислительных серверах. ВМ, которые были пропущены или которые не удалось перенести динамически, продолжат работать до перезагрузки или выключения сервера. В этом случае они будут остановлены, что приведет к перерыву в работе. Они будут запущены автоматически после возобновления работы сервера.

      • С параметром Перенести все ВМ динамически все виртуальные машины с сервера, переходящего в режим обслуживания, будут динамически перенесены на другие вычислительные серверы.

      Примечание

      При использовании размещений возможна ситуация, в которой виртуальную машину не удастся динамически перенести с исходного вычислительного сервера (например, когда виртуальной машине назначены размещения и нет другого вычислительного сервера с подходящим набором размещений). В этой ситуации для успешного перевода вычислительного сервера в режим обслуживания необходимо использовать способ миграции Игнорировать ВМ, которые нельзя или не удалось перенести динамически.

    3. [Необязательно] Выберите Прервать обновление, если сервер не может войти в режим обслуживания, чтобы остановить обновление в случае сбоя при входе в режим обслуживания.

  7. Проверьте выбранные компоненты и нажмите Установить.

Во время установки обновлений можно приостановить или отменить процесс. После завершения обновления статусы компонентов изменятся на Обновлено.

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

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

  1. Проверьте наличие обновлений:

    # vinfra software-updates check-for-updates
    
  2. Просмотрите результаты проверки:

    # vinfra software-updates status
    +---------------------------+--------------------------------------------+
    | Field                     | Value                                      |
    +---------------------------+--------------------------------------------+
    | available_storage_release | release: '234'                             |
    |                           | version: 4.7.0                             |
    | control_plane             | available_storage_release:                 |
    |                           |   release: '234'                           |
    |                           |   version: 4.7.0                           |
    |                           | installed_storage_release:                 |
    |                           |   release: '217'                           |
    |                           |   version: 4.7.0                           |
    |                           | status: available                          |
    | last_check_datetime       | 2021-11-01T12:22:10.630818                 |
    | nodes                     | - available_storage_release:               |
    |                           |     release: '234'                         |
    |                           |     version: 4.7.0                         |
    |                           |   current_storage_release:                 |
    |                           |     release: '217'                         |
    |                           |     version: 4.7.0                         |
    |                           |   downloaded_storage_release: null         |
    |                           |   host: node001.vstoragedomain             |
    |                           |   id: 0175ce44-c86d-7818-3259-3182f5fd83f6 |
    |                           |   is_in_ha: false                          |
    |                           |   is_primary: true                         |
    |                           |   orig_hostname: node001                   |
    |                           |   reboot_required: false                   |
    |                           |   status: available                        |
    |                           | - available_storage_release:               |
    |                           |     release: '234'                         |
    |                           |     version: 4.7.0                         |
    |                           |   current_storage_release:                 |
    |                           |     release: '217'                         |
    |                           |     version: 4.7.0                         |
    |                           |   downloaded_storage_release: null         |
    |                           |   host: node002.vstoragedomain             |
    |                           |   id: 923926da-a879-5f56-1b24-1462917ed335 |
    |                           |   is_in_ha: false                          |
    |                           |   is_primary: false                        |
    |                           |   orig_hostname: node002                   |
    |                           |   reboot_required: false                   |
    |                           |   status: available                        |
    |                           | - available_storage_release:               |
    |                           |     release: '234'                         |
    |                           |     version: 4.7.0                         |
    |                           |   current_storage_release:                 |
    |                           |     release: '217'                         |
    |                           |     version: 4.7.0                         |
    |                           |   downloaded_storage_release: null         |
    |                           |   host: node003.vstoragedomain             |
    |                           |   id: ef24c47c-620d-8726-2677-ed94d853de2e |
    |                           |   is_in_ha: false                          |
    |                           |   is_primary: false                        |
    |                           |   orig_hostname: node003                   |
    |                           |   reboot_required: false                   |
    |                           |   status: available                        |
    | status                    | available                                  |
    +---------------------------+--------------------------------------------+
    

    В выводе команды выше показано, что доступно обновление.

  3. Загрузите обновление:

    # vinfra software-updates download
    
  4. Проверьте пригодность серверов для установки обновления:

    # vinfra software-updates eligibility-check
    +---------+--------------------------------------+
    | Field   | Value                                |
    +---------+--------------------------------------+
    | task_id | 88e51115-8f0e-4c6f-b33b-949728d1fb99 |
    +---------+--------------------------------------+
    # vinfra task show 88e51115-8f0e-4c6f-b33b-949728d1fb99
    +---------+------------------------------------------------------------------+
    | Field   | Value                                                            |
    +---------+------------------------------------------------------------------+
    | details |                                                                  |
    | name    | backend.presentation.software_updates.tasks.EligibilityCheckTask |
    | result  | chunks_rebalancing_rate:                                         |
    |         |   details: null                                                  |
    |         |   exception: null                                                |
    |         |   message: null                                                  |
    |         |   passed: true                                                   |
    |         |   severity: info                                                 |
    |         | cluster_has_releasing_nodes:                                     |
    |         |   details: null                                                  |
    |         |   exception: null                                                |
    |         |   message: null                                                  |
    |         |   passed: true                                                   |
    |         |   severity: critical                                             |
    |         | cluster_unhealthy:                                               |
    |         |   details: null                                                  |
    |         |   exception: null                                                |
    |         |   message: null                                                  |
    |         |   passed: true                                                   |
    |         |   severity: critical                                             |
    |         | not_enough_space_on_agents:                                      |
    |         |   details: null                                                  |
    |         |   exception: null                                                |
    |         |   message: null                                                  |
    |         |   passed: true                                                   |
    |         |   severity: critical                                             |
    |         | not_enough_space_on_mn:                                          |
    |         |   details: null                                                  |
    |         |   exception: null                                                |
    |         |   message: null                                                  |
    |         |   passed: true                                                   |
    |         |   severity: critical                                             |
    |         | postgres_not_running:                                            |
    |         |   details: null                                                  |
    |         |   exception: null                                                |
    |         |   message: null                                                  |
    |         |   passed: true                                                   |
    |         |   severity: critical                                             |
    |         | request_accept_eula:                                             |
    |         |   details: null                                                  |
    |         |   exception: null                                                |
    |         |   message: null                                                  |
    |         |   passed: true                                                   |
    |         |   severity: critical                                             |
    |         | server_with_pci_devices:                                         |
    |         |   details: null                                                  |
    |         |   exception: null                                                |
    |         |   message: null                                                  |
    |         |   passed: true                                                   |
    |         |   severity: info                                                 |
    |         | shaman:                                                          |
    |         |   details: null                                                  |
    |         |   exception: null                                                |
    |         |   message: null                                                  |
    |         |   passed: true                                                   |
    |         |   severity: critical                                             |
    |         | tgtd:                                                            |
    |         |   details: null                                                  |
    |         |   exception: null                                                |
    |         |   message: null                                                  |
    |         |   passed: true                                                   |
    |         |   severity: critical                                             |
    |         | too_many_pending_chunks:                                         |
    |         |   details: null                                                  |
    |         |   exception: null                                                |
    |         |   message: null                                                  |
    |         |   passed: true                                                   |
    |         |   severity: info                                                 |
    | state   | success                                                          |
    | task_id | 88e51115-8f0e-4c6f-b33b-949728d1fb99                             |
    +---------+------------------------------------------------------------------+
    
  5. Запустите процесс установки обновления:

    vinfra software-updates start [--maintenance enabled={yes,no}[,key=value,…]]
                                  [--nodes <nodes>] [--skip-control-plane]
                                  [--accept-eula]
    
    --maintenance enabled={yes,no}[,key=value,…]>

    Укажите параметры обслуживания.

    • enabled: войти в режим обслуживания во время обновления (yes или no).

    • разделенные запятыми пары key=value с ключами (необязательно):

      • on-fail: как следует поступить с обновлением при сбое обслуживания.

        • stop (по умолчанию): остановить обновление, если сервер не может перейти в режим обслуживания. Уже обновленные серверы останутся обновленными.

        • skip: пропустить и не обновлять серверы, которые не могут перейти в режим обслуживания.

        • force: принудительно обновить и перезагрузить (при необходимости) все серверы, даже если они не могут перейти в режим обслуживания. Использование этого параметра может привести к простоям.

      • compute-mode: как поступить с обновлением, если нельзя перенести работающую ВМ.

        • strict: остановить обновление, если нельзя перенести работающую ВМ.

        • ignore: игнорировать ВМ, которую нельзя перенести в работающем состоянии.

        • ignore_ext: игнорировать ВМ, которую нельзя или не удалось перенести в работающем состоянии.

    --nodes <nodes>

    Разделенный запятыми список идентификаторов или имен серверов.

    --skip-control-plane

    Обновить кластер без обновления панели управления.

    --accept-eula

    Принять лицензионное соглашение.

    Например, чтобы начать обновление серверов node001, node002, node003 и перевести их в режим обслуживания, выполните:

    # vinfra software-updates start --nodes node001,node002,node003 \
    --maintenance enabled=yes,on-fail=skip,compute-mode=ignore
    

    Серверы, которые нельзя перевести в режим обслуживания, будут пропущены. Виртуальные машины, которые нельзя динамически перенести на время обслуживания серверов, будут пропущены.

Для приостановки процесса установки обновлений используйте команду vinfra software-updates pause. Чтобы возобновить процесс, выполните команду vinfra software-updates resume.

Можно отменить установку обновлений и вывести серверы из режима обслуживания, использовав команду ниже.

vinfra software-updates cancel [--maintenance-mode {exit,exit-keep-resources,hold}]
--maintenance-mode {exit,exit-keep-resources,hold}

Режим обслуживания:

  • exit: вывести сервер из режима обслуживания и вернуть на него эвакуированные ресурсы.

  • exit-keep-resources (по умолчанию): вывести сервер из режима обслуживания, но оставить эвакуированные ресурсы на другом сервере.

  • hold: не выходить из режима обслуживания.

Например, чтобы отменить установку обновлений и вывести серверы из режима обслуживания, выполните:

# vinfra software-updates cancel --maintenance-mode exit

Ресурсы, перенесенные на другие серверы на время обслуживания, будут перенесены обратно.