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

时间:2015-11-12 16:06:47

标签: elasticsearch logstash kibana elastic-stack

我希望设置一个ELK堆栈,并有三个服务器来执行此操作。虽然我找到了大量关于如何实际安装,配置elasticsearch,logstash和kibana的文档和教程,但我发现有关如何在服务器上设置软件以最大限度地提高性能的信息。例如,在所有三个实例上设置elasticsearch,logstash和kibana,或者在两个实例上安装elasticsearch并在第三个实例上安装logstash和kibana会更好吗?

与该问题相关,如果我的群集中有多个弹性搜索服务器,我是否需要一个负载均衡器来向他们传播请求,或者我可以将数据发送到一个服务器,它会相应地分发它吗?

1 个答案:

答案 0 :(得分:7)

您的机器尺寸也很重要。拥有8GB RAM的三台机器与64GB或更多的机器有很大不同......

Kibana只占用很少的资源。 Logstash更加耗费CPU。 Elasticsearch更重RAM。

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

这两个或三个节点将是"数据"节点,因此如果您向它们抛出查询或索引请求,它们可能需要将请求移动到其他服务器(具有数据的服务器等)。请求还有一个" reduce"阶段,其中来自每个节点的数据在返回之前被组合。拥有一个较小的"客户"节点 - 查询和索引请求的位置 - 有助于此。当然,你需要两个,以使它们多余。

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

因此,我们很快就可以使用7台机器。不是你想听到的,对吗?

如果您坚定地限制在3台计算机上,那么您希望在上述三种计算机上运行elasticsearch。你需要在其余部分做鞋拔。

两个上面的logstash,一个上有kibana?然后你对kibana有一个单一的失败点。

这三个上的logstash和三个上的kibana怎么样?负载将分布在各处,因此希望每个服务器的增量都很小。并且,如果机器足够坚固,那应该没问题。

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

一般建议将1/2系统RAM(最多约31GB)分配给elasticsearch,其余部分留给操作系统。如果你要在同一台机器上运行logstash和kibana,你想要降低它(可能是40%?),给logstash一些(15%?)并将其余部分留给操作系统。

显然,你的机器尺寸很重要。