我想讨论一下工程师在升级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 升级。
答案 0 :(得分:1)
参考手册包含有关removing master-eligible nodes的准则,您必须在版本7及更高版本中遵守该准则。由于discovery.zen.minimum_master_nodes
的设置,要在较早的版本中做到这一点要困难得多。
您的数据节点策略听起来很慢且昂贵,因为您可能要为每个节点移动许多TB的数据。通常,最好“就地”重新启动/升级较大的数据节点,并在需要时分离并重新附加基础存储。