问题描述
目前,我们有3个独立的环境,带有4个Elasticsearch集群。此外,我们有2个不同的用例,我们在其中搜索客户数据的相似性,并在其中搜索日志。
建议阅读Elasticsearch文档和在线视频讨论,以针对您的用例优化集群,因此从技术上来说,我们应该4 x 2 = 8
个单独的集群。可以基于生产集群和非生产集群将某些集群分组在一起。但是实际上我们是一个很小的团队,只有不到10个人,在大多数集群中都没有分配数据,因此在所有集群中运行3 x master nodes
太昂贵了。
即使Elastic似乎建议每个用例使用一个集群,以便您可以优化索引和分片大小IMO,我相信,如果我们只有1个集群,或者至少出现故障,我们将获得更好的性能和稳定性。到2(prod和nonprod)。我们还将减少维护费用,因为我在每个环境中都收到CloudWatch警报,有一些保存的对象需要从一个环境中转移到另一个环境,并且我已经成为负责处理所有这一切的人,最终导致分配努力。
因此,我的问题是,即使应根据用例对集群进行最佳实践的调整,当您的数据仅是几个GiB时,这仍然有意义吗?考虑到管理上的开销,以及与没有主节点的微集群的稳定性之间的权衡?
解决方法
ES群集由节点(最重要的是数据节点和主节点)组成,它并非只能在群集级别进行优化,而是可以根据用例轻松调整索引和分片级别。
在您的情况下,由于您没有太多数据,因此只有2个env(prod和non-prod env。)是很有意义的,这样可以避免集群管理的开销,并采用最佳做法,例如拥有3个主节点来提高性能。可用性原因。
当根据索引所切断的数据和用例进行优化时,您可以进行优化,例如对于读取大量的索引,有意义的是拥有更多的副本,而对于索引繁重的操作,则可能需要将refresh_interval(def 1 sec)增加到更高的值。
请参考improve search performance和improve indexing speed来调整索引,还可以尝试free cluster analyzer tool在集群和节点中查找错误的配置。