在三台服务器上设置ELK堆栈的最佳方式
Optimal way to set up ELK stack on three servers
我希望建立一个 ELK 堆栈并拥有三个服务器来执行此操作。虽然我找到了大量关于如何实际安装和配置 elasticsearch、logstash 和 kibana 的文档和教程,但我发现关于如何在我的服务器上设置软件以最大限度地提高性能的信息却很少。例如,在所有三个实例上设置 elasticsearch、logstash 和 kibana 会更好,还是在两个实例上安装 elasticsearch 并在第三个实例上安装 logstash 和 kibana?
关于那个问题,如果我的集群中有多个 elasticsearch 服务器,我是否需要一个负载均衡器来向它们传播请求,或者我可以将数据发送到一个服务器,它会相应地分配它吗?
机器的大小也很重要。三台 8GB RAM 的机器与三台 64GB 或更多内存的机器有很大不同...
Kibana 占用的资源很少。 Logstash 更重 CPU。 Elasticsearch 的 RAM 更重。
对于 elasticsearch 集群,您通常需要每个分片的副本以实现冗余。这通常使用两台服务器来完成。如果您有第三个 elasticsearch 服务器,那么您将获得 IO 提升(将数据的两个副本写入三个服务器可降低负载)。此外,偶数个服务器可能会混淆哪个是主服务器,因此三个服务器将有助于防止 "split brain" 问题。
那两个或三个节点将是 "data" 个节点,因此如果您向它们发出查询或索引请求,它们可能需要将请求移至另一台服务器(包含数据的服务器等) .一个请求也有一个 "reduce" 阶段,来自每个节点的数据在返回之前被合并。拥有一个较小的 "client" 节点——查询和索引请求所在的节点——有助于实现这一点。当然,你想要两个,让它们变得多余。
Logstash 是最好的 运行 多线程,所以拥有多个 cpu 是很好的。拥有一台 redundant/load-balanced logstash 机器也不错。 Kibana 也可以 运行 在这些机器上。
所以,我们很快就达到了 7 台机器。不是你想听到的,对吧?
如果您严格限制在 3 台机器上,您会想要 运行 如上所述在所有三台机器上进行 elasticsearch。剩下的你需要鞋拔。
两个 Logstash,一个 kibana?然后你有一个 kibana 的单点故障。
logstash 全部三个,kibana 全部三个怎么样?负载将分布在周围,因此希望每台服务器都有一个小的增量。而且,如果机器足够强大,应该没问题。
我在一个集群中有机器 运行 logstash,
一般建议将 1/2 的系统 RAM(最多 ~31GB)分配给 elasticsearch,将其余部分留给操作系统。如果你要在同一台机器上 运行 logstash 和 kibana,你会想降低它(可能是 40%?),给 logstash 一些(15%?),剩下的留给 OS.
显然,机器的大小在这里很重要。
我希望建立一个 ELK 堆栈并拥有三个服务器来执行此操作。虽然我找到了大量关于如何实际安装和配置 elasticsearch、logstash 和 kibana 的文档和教程,但我发现关于如何在我的服务器上设置软件以最大限度地提高性能的信息却很少。例如,在所有三个实例上设置 elasticsearch、logstash 和 kibana 会更好,还是在两个实例上安装 elasticsearch 并在第三个实例上安装 logstash 和 kibana?
关于那个问题,如果我的集群中有多个 elasticsearch 服务器,我是否需要一个负载均衡器来向它们传播请求,或者我可以将数据发送到一个服务器,它会相应地分配它吗?
机器的大小也很重要。三台 8GB RAM 的机器与三台 64GB 或更多内存的机器有很大不同...
Kibana 占用的资源很少。 Logstash 更重 CPU。 Elasticsearch 的 RAM 更重。
对于 elasticsearch 集群,您通常需要每个分片的副本以实现冗余。这通常使用两台服务器来完成。如果您有第三个 elasticsearch 服务器,那么您将获得 IO 提升(将数据的两个副本写入三个服务器可降低负载)。此外,偶数个服务器可能会混淆哪个是主服务器,因此三个服务器将有助于防止 "split brain" 问题。
那两个或三个节点将是 "data" 个节点,因此如果您向它们发出查询或索引请求,它们可能需要将请求移至另一台服务器(包含数据的服务器等) .一个请求也有一个 "reduce" 阶段,来自每个节点的数据在返回之前被合并。拥有一个较小的 "client" 节点——查询和索引请求所在的节点——有助于实现这一点。当然,你想要两个,让它们变得多余。
Logstash 是最好的 运行 多线程,所以拥有多个 cpu 是很好的。拥有一台 redundant/load-balanced logstash 机器也不错。 Kibana 也可以 运行 在这些机器上。
所以,我们很快就达到了 7 台机器。不是你想听到的,对吧?
如果您严格限制在 3 台机器上,您会想要 运行 如上所述在所有三台机器上进行 elasticsearch。剩下的你需要鞋拔。
两个 Logstash,一个 kibana?然后你有一个 kibana 的单点故障。
logstash 全部三个,kibana 全部三个怎么样?负载将分布在周围,因此希望每台服务器都有一个小的增量。而且,如果机器足够强大,应该没问题。
我在一个集群中有机器 运行 logstash,
一般建议将 1/2 的系统 RAM(最多 ~31GB)分配给 elasticsearch,将其余部分留给操作系统。如果你要在同一台机器上 运行 logstash 和 kibana,你会想降低它(可能是 40%?),给 logstash 一些(15%?),剩下的留给 OS.
显然,机器的大小在这里很重要。