Правильный подход к обновлению Elasticsearch через terraform

Я хотел бы обсудить, какие передовые практики / подходы используют инженеры при обновлении elasticsearch кластеров. Я считаю, что этот пост может служить хорошим примером стратегий и шагов, которые необходимо выполнить, гарантируя отсутствие потери данных, минимальное время простоя, масштабируемость и доступность elasticsearch сервисов.

Чтобы начать инициативу, мы можем разбить обновление на два подраздела:

1) Выполнение обновления на master nodes:

Поскольку главные узлы не содержат никаких данных и отвечают за управление кластером, я считаю, что мы можем безопасно применить terraform, чтобы добавить все обновленные виртуальные машины главного узла, а затем удалить старые.

2) Выполнение обновления на data nodes:

Как многие люди уже знают, есть определенные ограничения на возможность обновления узлов данных. Мы не можем позволить себе полностью освободить виртуальную машину и заменить ее другой. На мой взгляд, хорошая практика - это:

а) Остановите выделение индекса для старой виртуальной машины

б) Затем выполнение terraform apply для создания новой обновленной версии виртуальной машины узла данных (и ручное изменение terraform state, чтобы старая виртуальная машина не была уничтожена)

c) Разрешение трафика (создание индекса) на новую виртуальную машину и использование elasticsearch API для передачи данных со старой виртуальной машины на новую.

г) Ручное изменение terraform state, позволяющее удалить старую ВМ.

Это всего лишь идеалистические шаги. Я хотел бы узнать ваше мнение и стратегии для выполнения безопасных обновлений elasticsearch через Terraform.


person yanis    schedule 08.11.2019    source источник


Ответы (1)


В справочном руководстве есть рекомендации относительно удаление основных узлов, которые необходимо соблюдать в версиях 7 и более поздних. В более ранних версиях сделать это намного сложнее из-за параметра discovery.zen.minimum_master_nodes.

Ваша стратегия для узлов данных кажется медленной и дорогой, учитывая, что вы можете перемещать много терабайт данных для каждого узла. Обычно лучше перезапустить / обновить более крупные узлы данных «на месте», при необходимости отсоединив и повторно подключив базовое хранилище.

person Dave Turner    schedule 09.11.2019