Обновление операционной системы
Сокращения и переменные, используемые в статье
ОС
- операционная система, например 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