Logstash集群输出到Elasticsearch集群而不进行多播

时间:2014-05-14 04:44:58

标签: elasticsearch multicast high-availability logstash discovery

我想运行logstash - >具有高可用性的elasticsearch并不能找到实现它的简单方法。请查看我如何看待并纠正我:

目标:

  • 每台运行elasticsearch的5台机器合并为一个集群。
  • 每台运行logstash服务器的5台计算机,并将数据流传输到elasticsearch集群。
  • N台机器正在监控每个正在运行的伐木工人并将数据流式传输到logstash服务器。

约束:

  • 它应该在PaaS(CoreOS / Docker)上运行,因此需要多播 发现不起作用。

解决方案:

  • Lumberjack允许指定要将数据转发到的logstash服务器列表。如果此服务器出现故障,Lumberjack将随机选择目标服务器并切换到另一台服务器。它有效。
  • 我可以使用zookeeper发现插件来构建elasticsearch集群。它有效。
  • 通过多播,每个logstash服务器都会发现并加入elasticsearch集群。没有多播,它允许我指定一个弹性搜索主机。但它不是高可用性。我想输出到群集,而不是一个可以关闭的主机。

问题:

  • 为logstash的嵌入式弹性搜索添加zookeeper发现插件是否现实?怎么样?
  • 这个问题是否有更简单(自然)的解决方案?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以在Logstash容器中运行单独的(非嵌入式)Elasticsearch实例,但配置Elasticsearch不要存储数据,也可以将它们设置为主节点。

node.data: false
node.master: true

然后,您可以将Zookeeper插件添加到所有Elasticsearch实例,以便它们构成群集。

Logstash然后将http记录到本地Elasticsearch,后者找出5个数据存储节点中的实际索引数据的位置。

或者,此Q解释了如何使用嵌入式版本的Elasticsearch进行插件Logstash output to Elasticsearch on AWS EC2