Версии Elasticsearch
обозначаются как X
, Y
и Z
:
- X - основная (major) версия
- Y - второстепенная (minor) версия
- Z - это уровень исправления (patch) или отладочного (maintenance) выпуска
В основной версии добавляются критические изменения и новые функции. Второстепенная версия добавляет предупреждения об устаревании и новые функции. Критические изменения происходят в экспериментальных функциях или из-за исправлений ошибок. Elasticsearch
любит выпускать множество новых основных функций в второстепенных выпусках. Имейте в виду, что вы можете увидеть второстепенные версии, наполненные новыми функциями!
Для примера возьмём версию 7.13.2
:
- 7 - X
- 13 - Y
- 2 - Z
Совместимость версий
Elasticsearch
будет работать только с индексами, созданными в предыдущей основной версии. Например, индекс
в 6.x можно использовать в кластере 7.x, но индекс в 5.x нельзя использовать в кластере 7.x. Elasticsearch
просто не запустится.
Обновление с 5.x до 7.x требует, чтобы все ваши старые индексы были переиндексированы, чтобы ваши данные были приведены в соответствие с текущими стандартами текущего выпуска.
Существует два возможных сценария, которые возникают при обновлении кластера:
- Последовательное обновление не требует простоев и позволяет продолжать работать с кластером. Например, обновление с версии 7.1 до 7.2.
- Полный перезапуск кластера вызывает некоторое время простоя и приводит к отключению всех узлов. Например, при обновлении с 6.2 до 7.1.
Помощник по обновлению (Upgrade Assistant)
Помощник по обновлению поможет вам подготовиться к обновлению. Это приложение Kibana
, которое определяет устаревшие настройки и поможет вам в процессе решения проблем. Рекомендуется использовать этот инструмент, чтобы определить состояние вашего кластера перед обновлением.
Подготовка к обновлению
Перед обновлением рекомендуется выполнить несколько вещей, которые нужно сделать для подготовки:
- Проверьте журналы устаревания - вы можете увидеть, используете ли вы какие-либо устаревшие функции, и они могут не существовать в следующей версии, до которой вы обновляетесь. Представляет из себя лог файл в папке логов
Elasticsearch
. Создаётся ежедневно и имеет максимальный размер в 1Гб. - Просмотрите критические изменения - убедитесь, что вы установили первую основную (major) версию (например, 7.0, 6.0, 5.0).
- Резервное копирование данных - как обычно любой вендор рекомендует сперва сделать бэкап перед обновлением, в нашем случае snapshot.
Последовательное обновление
Мы уже говорили о том, что такой вид обновления не требует перезапуска всего кластера. Смысл в том, что мы по очереди обновляем все узлы в кластере Elasticsearch
.
Для обновления выполняем:
- Естественно сперва делаем
snapshot
- Выключаем
shard allocation
для репликindex
PUT _cluster/settings { "persistent": { "cluster.routing.allocation.enable": "primaries" } } POST _flush/synced
- Останавливаем узел, который хотим обновить
sudo systemctl stop elasticsearch.service
- Если вы используете
machine learning
, то выполните пункт 3 по ссылке - Скопируйте на всякий случай файл конфига
elasticsearch.yml
- Обновляем узел
sudo yum update elasticsearch
- Проверьте что в файле
elasticsearch.yml
ничего не изменилось, например вы могли использовать нестандартныеpath.data
и т.д. - Запускаем узел
sudo systemctl start elasticsearch.service
- Ждём пока узел войдёт в кластер. Можно для просмотра воспользоваться
GET _cat/nodes
- Включаем
shard allocation
PUT _cluster/settings { "persistent": { "cluster.routing.allocation.enable": "all" } }
- Ждём пока состояние кластера будет зелёным
GET _cat/health
. Если создались новыеindex
то возможно статус вашего кластера будет жёлтым пока большинство узлов не обновится. - Повторить этап с 2 по 11 на всех остальных узлах кластера
Для просмотра версии нод в клатере можно восспользоваться GET /_cat/nodes?h=ip,name,version&v=true
.
Для просмотра всех активных нод в кластере можно восспользоваться GET _cat/nodes?v=true
.
В итоге
- Major и minor версии содержат много новых функций
- В основном Major версии включают критические изменения
- Последовательное обновление позволяет перезапускать узлы в кластере по одному (без простоев)
- Полный перезапуск кластера обычно ускоряет обновление, хотя для этого требуется отключить все узлы перед обновлением (приводит к простою)
Комментарии