Я хотел бы обсудить, что делают лучшие практики / подходы инженеров при обновлении кластеров elasticsearch
. Я считаю, что этот пост может послужить хорошим примером стратегий и шагов, которые нужно выполнить, гарантируя отсутствие потери данных, минимальное время простоя, масштабируемость и доступность услуг elasticsearch
.
Чтобы начать инициативу, мы можем разбить обновление на два подраздела:
1) Выполнение обновления на master nodes
:
Поскольку главные узлы не содержат никаких данных иотвечают за управление кластером. Я считаю, что мы можем безопасно применить terraform для добавления всех модернизированных виртуальных машин главного узла и удаления старых.
2) Выполнение обновления на data nodes
:
Как многие уже знают, существует определенное ограничение на возможность обновления узлов данных. Мы не можем позволить себе полностью освободить виртуальную машину и заменить ее другой. На мой взгляд, хорошей практикой является:
a) Остановить выделение индекса для старой виртуальной машины
b) Затем выполнить terraform apply
, чтобы создать новую обновленную версию узла данных VM (и вручную изменив terraform state
, чтобы старая ВМ не была уничтожена)
c) Разрешение трафика (создание индекса) на новую ВМ и использование API elasticsearch
для передачи данных из старой вновая виртуальная машина
г) Изменение вручную terraform state
, позволяющее удалить старую виртуальную машину.
Это просто идеалистические шаги, я хотел бы увидеть ваше мнение и стратегии для безопасной работы *Обновления 1029 *asticsearch через Terraform .