Версии 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для репликindexPUT _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 allocationPUT _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 версии включают критические изменения
- Последовательное обновление позволяет перезапускать узлы в кластере по одному (без простоев)
- Полный перезапуск кластера обычно ускоряет обновление, хотя для этого требуется отключить все узлы перед обновлением (приводит к простою)


Комментарии