Правильный подход к обновлению Elasticsearch через Terraform - PullRequest
0 голосов
/ 08 ноября 2019

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

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

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

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

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

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

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

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

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

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

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

1 Ответ

1 голос
/ 09 ноября 2019

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

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

...