我有一个 Logstash 的基本 HA 设置——两个不同的 AWS 可用区中有两个相同的节点。每个节点都运行一个管道,该管道从数据库集群中提取数据集,然后将其输出到下游的 ELasticSearch 集群以进行索引。这适用于一个 Logstash 节点,但两个并行运行的节点将相同的数据两次发送到 ES 以进行索引,因为每个节点都是:sql_last_value
单独跟踪的。由于我在两个节点上使用与文档 ID 相同的 ID,因此所有重复的数据都会被简单地更新,而不是被插入两次。换句话说,每个数据集有 1 次插入和 1 次更新。显然,这不是很有效,并且会给 ELK 资源带来不必要的负担。随着额外 Logstash 节点的添加,情况变得更糟。
有谁知道应该如何设置并行 Logstash 节点的更好方法,因此如果每个节点已经被另一个先前的节点提取,则每个节点不会提取相同的数据集?一个穷人的解决方案可能是在 Logstash 节点之间创建一个共享的 NFS 文件夹,并让每个节点都:sql_last_value
在那里写入,但我不确定使用此设置可能会遇到什么样的副作用,尤其是在较高负载下。谢谢!