elasticsearch 在三台服务器上设置ELK堆栈的最佳方法,elasticsearch,logstash,kibana,elastic-stack,elasticsearch,Logstash,Kibana,Elastic Stack" /> elasticsearch 在三台服务器上设置ELK堆栈的最佳方法,elasticsearch,logstash,kibana,elastic-stack,elasticsearch,Logstash,Kibana,Elastic Stack" />

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

elasticsearch 在三台服务器上设置ELK堆栈的最佳方法,elasticsearch,logstash,kibana,elastic-stack,elasticsearch,Logstash,Kibana,Elastic Stack,我正在寻找建立一个麋鹿堆栈,并有三个服务器这样做。虽然我找到了大量关于如何实际安装和配置elasticsearch、logstash和kibana的文档和教程,但关于如何跨服务器设置软件以最大限度提高性能的信息却很少。例如,在所有三个实例上设置elasticsearch、logstash和kibana是否更好,或者在两个实例上安装elasticsearch,在第三个实例上安装logstash和kibana是否更好 与这个问题相关的是,如果我的集群中有多个elasticsearch服务器,我是否需

我正在寻找建立一个麋鹿堆栈,并有三个服务器这样做。虽然我找到了大量关于如何实际安装和配置elasticsearch、logstash和kibana的文档和教程,但关于如何跨服务器设置软件以最大限度提高性能的信息却很少。例如,在所有三个实例上设置elasticsearch、logstash和kibana是否更好,或者在两个实例上安装elasticsearch,在第三个实例上安装logstash和kibana是否更好


与这个问题相关的是,如果我的集群中有多个elasticsearch服务器,我是否需要一个负载平衡器来向它们分发请求,或者我是否可以将数据发送到一个服务器,然后它将相应地分发这些数据?

您的机器的大小也很重要。三台内存为8GB的机器与三台内存为64GB或以上的机器有很大不同

Kibana只需要很少的资源。Logstash的CPU占用量更大。Elasticsearch的内存更重

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

这两个或三个节点将是“数据”节点,因此如果您向它们抛出查询或索引请求,它们可能需要将请求移动到不同的服务器(包含数据的服务器等)。请求还有一个“减少”阶段,其中来自每个节点的数据在返回之前被合并。拥有一个更小的“客户机”节点——查询和索引请求的所在地——有助于实现这一点。当然,你会想要两个,让它们成为多余的

Logstash是最好的多线程运行方式,所以有多个CPU供您使用是很好的。拥有一台冗余/负载平衡的日志存储机器也不错。Kibana也可以在这些机器上运行

所以,我们很快就有了7台机器。不是你想听的,对吧

如果您被严格限制在3台机器上,您可能希望在上述三台机器上运行elasticsearch。你需要把剩下的塞进鞋里

Logstash在2号,kibana在1号?那么你就有了kibana的单一失败点

三个都是logstash,三个都是kibana怎么样?负载将分布在各个服务器上,因此希望每个服务器都有一个小的增量。而且,如果机器足够结实,应该可以

我在一个集群中有运行logstash的机器

一般建议将1/2的系统RAM(高达~31GB)分配给elasticsearch,剩下的留给操作系统。如果你打算在同一台机器上运行logstash和kibana,你会想把它降低到40%,给logstash一些(15%),剩下的留给操作系统


显然,机器的尺寸在这里很重要。

谢谢,阿兰!这正是我想要的反馈!我只能启动三台机器(每台16 GB的RAM),但幸运的是,每天索引的数据量在启动时也不应该太大。在这三台机器上安装elasticsearch、logstash和kibana似乎是最好的选择,所以在设置好这三台机器之后,我需要添加一个负载平衡器来分发请求?此外,logstash实例是独立的,每个实例都运行自己的管道,还是在一个实例出现故障时,它们进行通信以分发任务?是的,您需要一个负载平衡器来分发负载和处理故障。logstash管道是不同的(因此请注意度量{}或已用{}之类的过滤器)。由于logstash实例是独立的,如果我们定期运行操作来检索和索引数据,这不是一个问题吗?例如,如果我们想使用jdbc输入插件定期查询数据库中的数据并将其索引到elasticsearch中,我们不想在所有实例上运行该插件,因为我们将多次索引相同的数据。另一方面,如果我们只在一个实例上运行该操作,如果该实例失败,另一个实例将无法执行该任务。正如您所描述的,当您提取数据时,您将遇到复杂问题。我明白了,这本身可能值得再问一个问题。谢谢你的帮助!这是非常有益的。