我是 ElasticSearch 的新手,但我已经在生产网站上使用 ElasticSearch。
我在一个 EC2 实例上安装了 ElasticSearch。使用 ElasticSearch 几个月后,现在实例的 CPU 在高峰时间已经达到 100%,查询变得非常慢。但在非高峰时间,CPU 使用率只有 10%。
我知道我可以使用自动扩展功能在实例 CPU 使用率达到一定高水平的情况下启动新实例。借助 AWS 自动扩展功能和 Elastic Load Balancer,我已经在我的 Web 服务器中使用了此功能。但我可以使用 ElasticSearch 来做到这一点吗?我应该从哪里开始?
答案1
完整的答案值得一读,但关键点如下:
- 移动和重新分配分片会占用大量资源。因此,动态添加或删除服务器会给系统带来负担。
- 您应该已经拥有 2 个 ElasticSearch 节点。这样,它的性能会更好,并且数据更安全。
- 删除或添加服务器时,您无法上下调整分片数量。这意味着,当您从 2 台服务器减少到 1 台服务器时,您会突然拥有大量未分配的分片。
话虽如此,我的 ES 服务器实际上处于 Auto-Scale 状态。但我将其设置为始终保持相同数量的服务器;它只是为了确保始终有两台服务器可用,而不是为了扩大或缩小规模。
我的建议是,设置两个 t2.small 或 t2.micro 服务器作为您的服务器,而不是只设置一个服务器。让两个服务器一直运行。然后,当您知道在给定的时间段内(比如一周左右)流量会很高时,停止一个服务器,增加其实例类型(您可以在不更改服务器的任何其他方面的情况下执行此操作),然后重新启动该服务器。如果您按顺序执行此操作并确保集群恢复到绿色状态,那么您可以增加第二台服务器的大小,并且您的用户不会遇到任何服务中断。
TLDR:基于负载的自动扩展是不是推荐用于 ElasticSearch 服务器。移动到一对小型实例(位于负载平衡器后面),如果您可以预测负载,请根据需要单独扩大每个服务器的大小。