Обновление операционной системы
Сокращения и переменные, используемые в статье
- ОС- операционная система, например AstraLinux
- БД- база данных
- USER_ADMIN- имя пользователя с достаточными правами, зачастую это- admin
- SERVER_HOST - IP адрес или доменное имя одного из серверов кластера OpenSearch (не обязательно тот, на котором проводятся работы)
- PATH_SSL- директория расположения сертификатов, обычно- /app/opensearch/config
Обновление ОС на сервере
Компоненты Smart Monitor в большинстве случаев не затрагивают системные пакеты, поэтому обновление ОС не должно повлиять на работоспособность продукта. Общий подход к обновлению ОС можно разложить по следующим этапам и лучше производить последовательно на каждом сервере, где установлены компоненты Smart Monitor:
- Убедиться, что обновлённая ОС есть в списке поддерживаемых Smart Monitor
- Проверить список изменений при обновлении
- При работе с узлами OpenSearch отключить аллокацию перед началом работ
- Остановка компонентов Smart Monitor
- Обновление ОС и перезагрузка сервера
- Запуск компонентов Smart Monitor, проверка работоспособности и включение аллокации
Проверить обновление стоит на тестовом сервере, в качестве альтернативы можно обновить ОС на сервере самомониторинга (selfmon) - этот сервер включает обычно практически все компоненты Smart Monitor, что используются на основных серверах.
Порядок обновления узлов рекомендуется следующий:
- Узлы кластера OpenSearch с ролью Dataи типом распределения данныхcold
- Узлы кластера OpenSearch с ролью Dataи типом распределения данныхwarm/hot
- Узлы кластера OpenSearch с ролью Masterи остальные роли
- Серверы OpenSearch Dashboards
- Серверы Logstash
- Другие серверы Smart Monitor
Более подробно по шагам обновления можно прочитать ниже.
Список изменений при обновлении
Основные компоненты системы Smart Monitor в большинстве случаев не используют системные пакеты. Ниже перечислен список того, на что стоит обратить внимание:
- Стоит обратить внимание на сервер оркестрации (управления, Ansible). В частности на то, каким образом установлен сам Ansible. При установке из системных пакетов при обновлении версий могут перестать работать некоторые плейбуки Ansible.
- При использовании на Ansible сервере Ansible Semaphore, возможно нужно будет проверить docker контейнер (если используется), а также используемая БД, например, версию PostgreSQL
- На серверах сбора данных могут быть использованы скрипты, использующие системные утилиты, например, Python. Если обновление будет производится с Python 2.7 до Python 3.6, то скорее всего скрипты не будут работать.
- Изменения в политиках безопасности и утилитах безопасности. Например, стоит внимательно посмотреть изменения в SELinux, ACL, сетевой экран.
Действия на OpenSearch кластере
Для отключения аллокации на кластере нужно выполнить команду в консоли разработчика (Меню -> Параметры системы -> Консоль разработчика) веб интерфейса Smart Monitor:
PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.enable": "none"
  }
}
Альтернативно можно выполнить запрос из командной строки:
curl -XPUT -k -u $USER_ADMIN https://$SERVER_HOST:9200/_cluster/settings?pretty \
     -H "Content-Type: application/json" \
     -d '{"persistent":{"cluster.routing.allocation.enable": "none"}}'
Можно без пользователя и ключа -u, но тогда нужно указывать сертификат и ключ суперадмина. Команда будет выглядеть таким образом:
curl -XPUT -k  https://$SERVER_HOST:9200/_cluster/settings?pretty \
     -H "Content-Type: application/json" \
     -d '{"persistent":{"cluster.routing.allocation.enable": "none"}}' \
     --cacert $PATH_SSL/ca-cert.pem \
     --cert $PATH_SSL/admin-cert.pem \
     --key $PATH_SSL/admin-key.pem
Для включения аллокации (включать после подключения узла в кластер) нужно выполнить команду выше, только none заменить на all, например, из консоли разработчика (Меню -> Параметры системы -> Консоль разработчика) веб интерфейса:
PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.enable": "all"
  }
}
Альтернативно можно выполнить запрос из командной строки:
curl -XPUT -k -u $USER_ADMIN https://$SERVER_HOST:9200/_cluster/settings?pretty \
     -H "Content-Type: application/json" \
     -d '{"persistent":{"cluster.routing.allocation.enable": "all"}}'
Для проверки работоспособности кластера можно использовать команду в консоли разработчика:
GET _cluster/health
Альтернативно из командной строки:
curl -k -u $USER_ADMIN https://$SERVER_HOST:9200/_cluster/health?pretty
Для проверки списка узлов и их ролей можно воспользоваться командой:
GET _cat/nodes
Из командной строки:
curl -XPUT -k -u $USER_ADMIN https://$SERVER_HOST:9200/_cat/nodes
Посмотреть параметры узлов OpenSearch, в частности тип распределения данных (routing_mode) можно командой:
GET _cat/nodeattrs
Из командной строки:
curl -XPUT -k -u $USER_ADMIN https://$SERVER_HOST:9200/_cat/nodeattrs
Отключение сервисов перед обновлением ОС
Основные сервисы Smart Monitor управляются с помощью systemctl:
systemctl stop opensearch
systemctl stop opensearch-dasboards
systemctl stop logstash
systemctl stop smartBeatManager
systemctl stop smartBeat