一尘不染

在三台服务器上设置ELK堆栈的最佳方法

elasticsearch

我正在寻找建立一个ELK堆栈,并拥有三台服务器。虽然我找到了大量有关如何实际安装和配置elasticsearch,logstash和kibana的文档和教程,但我发现有关如何在服务器上设置软件以最大限度地提高性能的信息较少。例如,最好在所有三个实例上设置elasticsearch,logstash和kibana,或者在两个实例上安装elasticsearch并在第三个实例上安装logstash和kibana?

与此问题相关,如果我的集群中有多台Elasticsearch服务器,我是否需要一个负载均衡器来将请求分发给它们,还是可以将数据发送到一台服务器,并将其相应地分发?


阅读 294

收藏
2020-06-22

共1个答案

一尘不染

您的计算机的大小也很重要。三台具有8GB RAM的计算机与三台具有64GB或更多RAM的计算机…

Kibana占用的资源很少。Logstash占用较多CPU。Elasticsearch的RAM较多。

对于Elasticsearch集群,通常需要每个分片的副本以实现冗余。通常是使用两个服务器来完成的。如果您拥有第三台Elasticsearch服务器,那么您将获得IO提升(将数据的两个副本写入三个服务器可降低负载)。另外,偶数个服务器可能会混淆哪个是主服务器,因此三个服务器将有助于防止“脑裂”问题。

这两个或三个节点将是“数据”节点,因此,如果向它们抛出查询或索引请求,它们可能需要将请求移至另一台服务器(带有数据的服务器等)。请求还具有“减少”阶段,其中来自每个节点的数据在返回之前被合并。拥有一个较小的“客户端”节点(查询和索引请求可以到达的节点)可以帮助实现这一点。当然,您需要两个,以使其冗余。

Logstash最好是在多线程上运行,因此拥有多个可专用的CPU很好。拥有冗余/负载平衡的logstash机器也很好。Kibana也可以在这些机器上运行。

因此,我们最多可以拥有7台计算机。不是您想听的,对吗?

如果您严格限于三台计算机,则如上所述,您希望对所有三台计算机运行elasticsearch。您需要在其他地方穿鞋拔子。

Logstash在两个上,kibana在一个上?这样,kibana就会出现单点故障。

三者的logstash和三者的kibana怎么样?负载将分布在周围,因此希望每个服务器的负载增量很小。而且,如果机器足够坚固,应该没问题。

我在一个群集中运行logstash的计算机,

一般建议是为Elasticsearch分配1/2的系统RAM(最大31GB),其余部分留给操作系统。如果要在同一台计算机上运行logstash和kibana,则希望将其降低(可能降至40%?),为logstash分配一些(15%?),然后将其余部分留给操作系统。

显然,机器的大小在这里很重要。

2020-06-22