通过Terraform进行Elasticsearch升级的正确方法

时间:2019-11-08 16:24:24

标签: azure elasticsearch terraform terraform-provider-azure

我想讨论一下工程师在升级elasticsearch集群时的最佳实践/方法。我相信这篇文章可以作为执行策略和步骤的一个很好的例子,以确保没有数据丢失,最短停机时间,可扩展性和elasticsearch服务的可用性。

要启动该计划,我们可以将升级分为两个小节:

1)在master nodes上执行升级:

由于主节点不包含任何数据并负责控制群集,所以我相信我们可以放心地使用terraform来添加所有已升级的主节点VM,然后删除旧的VM。

2)在data nodes上执行升级:

许多人已经知道,更新数据节点的能力存在一定的限制。我们无法完全取消分配虚拟机并将其替换为另一虚拟机。我认为一个好的做法是:

a)停止向旧VM分配索引

b)然后执行terraform apply以创建数据节点VM的新升级版本(并手动修改terraform state以便不破坏旧VM)

c)允许到新VM的流量(索引创建),并使用elasticsearch API将数据从旧VM传输到新VM

d)手动更改terraform state使其删除旧的VM。

这些只是理想的步骤,我希望看到您的意见和策略,以通过 Terraform 执行安全的 elasticsearch 升级。

1 个答案:

答案 0 :(得分:1)

参考手册包含有关removing master-eligible nodes的准则,您必须在版本7及更高版本中遵守该准则。由于discovery.zen.minimum_master_nodes的设置,要在较早的版本中做到这一点要困难得多。

您的数据节点策略听起来很慢且昂贵,因为您可能要为每个节点移动许多TB的数据。通常,最好“就地”重新启动/升级较大的数据节点,并在需要时分离并重新附加基础存储。