【发布时间】:2019-07-30 00:57:54
【问题描述】:
我有一个 Logstash 的基本 HA 设置 - 两个独立的 AWS 可用区中的两个相同的节点。每个节点都运行一个管道,该管道从数据库集群中提取数据集,然后将其输出到下游的 ELasticSearch 集群以进行索引。这适用于一个 Logstash 节点,但是由于每个节点分别跟踪 :sql_last_value,并行运行的两个节点将相同的数据两次发送到 ES 以进行索引。由于我在两个节点上使用与文档 ID 相同的 ID,因此所有重复的数据都会简单地更新,而不是插入两次。换句话说,每个数据集有 1 次插入和 1 次更新。显然,这不是很有效,并且会给 ELK 资源带来不必要的负担。随着额外 Logstash 节点的添加,情况变得更糟。
有没有人知道应该如何设置并行 Logstash 节点的更好方法,这样如果之前的另一个节点已经提取了相同的数据集,每个节点就不会提取相同的数据集?一个穷人的解决方案可能是在 Logstash 节点之间创建一个共享的 NFS 文件夹,并让每个节点在那里写入 :sql_last_value,但我不确定这种设置可能会遇到什么样的副作用,尤其是在较高负载下。谢谢!
【问题讨论】:
-
看起来您在 2015 年的功能请求中找到了答案。github.com/elastic/logstash/issues/2632
-
不,我不知道我找到了答案。仍然从每个 logstash 节点向 ES 发送重复数据。
-
我相信答案是有一个 4 年前的功能请求尚未得到解决。
-
我看不出这有什么资格作为答案。
-
这不是一个答案 - 这是一个评论。但是,它确实可以作为指向显示答案当前状态的信息的指针,并且可能有一天——如果你是一个真正的乐观主义者——显示解决方案。如果其他人在这里找到您的问题,他们将获得比没有链接时更多的信息。
标签: elasticsearch logstash elastic-stack logstash-jdbc