【问题标题】:How to autoscale elastic search in kubernates based on load?如何根据负载在 kubernetes 中自动缩放弹性搜索?
【发布时间】:2020-10-23 21:43:31
【问题描述】:

我正在使用 Google Cloud,我正在做 RnD,我们是否可以在 Kubernetes 中的弹性搜索上应用 HPA(水平 Pod 自动缩放)。

我在Kubernetes 上设置了elasticsearchhttps://github.com/elastic/helm-charts/tree/master/elasticsearch

但我在论坛上找到了一篇帖子,他们说elasticsearch HPA 很难

https://discuss.elastic.co/t/how-to-scale-up-and-down-nodes-automatically/224089/2

那么是否可以在 elasticsearch 上执行 HPA

【问题讨论】:

    标签: elasticsearch kubernetes autoscaling


    【解决方案1】:

    我认为它不会很好地工作,并且您有丢失数据的风险。 HPA 倾向于以一分钟左右的规模响应负载变化,并且偶尔会做出较大的变化(例如,从 5 个副本扩展到 2 个)。对于 Elasticsearch,您需要一次扩展一个节点,在继续之前监控集群的状态,并且可能需要很长时间才能从一个节点移动到下一个节点。


    假设您在 StatefulSet 中运行 Elasticsearch。请记住,每个 ES 索引都是由 shards 组成的;您将有一些分片副本分布在 ES 集群中的节点上。假设您的索引有 10 个分片,每个分片有 2 个副本。

    向外扩展很容易。随心所欲地增加 StatefulSet 的大小;将每个节点配置为与es-0 对话以进行发现。 ES 将看到集群已经增长并开始自行将分片移动到新节点上。

    扩大规模很难。您一次只能删除一个节点。一旦该节点关闭并且集群意识到它丢失了,那么曾经在该节点上的分片将被复制不足。 ES 将在剩余的节点上创建新的副本并将分片数据复制到那里。您可以通过/_cat/shards API 之类的方式观察到这种情况的发生。只要存在复制不足的分片,索引状态就会为“黄色”,然后在复制序列完成后切换回“绿色”。

    假设您当前有 8 个节点,并且您希望缩减到 6 个。给定分片的仅有两个副本可能会在 es-6es-7 上,因此您不能同时关闭它们一起;你必须先关闭es-7,等待复制赶上,然后关闭es-6。还有一种可能是,当你关闭es-7时,新的副本将在注定要失败的节点es-6上创建。

    您也可以在删除之前tell Elasticsearch to move shards off of a replica。这样可以避免集群进入“黄色”状态,但更难监控。

    最后,重新复制可能需要很长时间,具体取决于集群中实际有多少数据。 (在我过去维护的一个索引结构设计不佳的集群中,关闭一个节点需要几个小时。)这比 HPA 准备的操作要慢得多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-25
      • 2022-07-26
      • 1970-01-01
      • 2018-03-19
      • 2016-09-19
      • 2019-01-05
      • 2023-02-08
      相关资源
      最近更新 更多