请教个关于logstash output 到es protocol的问题

Logstash | 作者 can | 发布于2014年12月23日 | 阅读数:4972

今日做了个粗略的测试,发现我只起一个logstash时,protocol为http和node的效率基本一致,但是当我起10几个进程时,node就明显不如http了。不知是为何?然后http貌似只能host指定单台es ip?但是考虑到如果只指定一个ip,那这台机器挂了数据就进不到es了。。。transport貌似可以指定多个ip,但是却报这个错Exception in thread ">output" org.elasticsearch.client.transport.NoNodeAvailableException: No node available,估计是哪里没弄好。。。群里问了下,发现这个问题好多人也一知半解,所以来这边发个帖子,希望各位大神不吝赐教,也给后来人点参考。先行谢过了!!!
已邀请:

can

赞同来自: Rubricate

感谢@wood大神的指点,我这里总结下哈!
理论上来说,transport没有http的header带来的额外处理开销,所以速度应该要比http快。
node protocol和transport protocol的区别,主要就是node的话,logstash会成为一个ES node加入集群,理论上性能比transport protocol更好,因为数据少一层转发。但是集群规模大了后,node protocol有一定副作用。 因为每个node上都有集群的状态信息,集群大了后,任何集群状态信息的改变都会在所有node同步,node数量越多,同步的代价越高
关于ES nodes过多可能导致的集群水平扩展问题可以参照这里:
http://www.elasticsearch.org/g ... .html
ES的transport protocol支持多个host,只是logstash的插件不支持,官网java client api有demo,依葫芦画瓢,改下logstash的ES插件就可以了:
http://www.elasticsearch.org/g ... .html
下面是http与transport比较的讨论帖,有兴趣的也可以看看,多了解了解:
http://elasticsearch-users.115 ... .html
差不多就这些了,希望对后面的同学有帮助!

can

赞同来自:

由于不能发站外链接,所以以上所有链接中的http中间都有个空格。

stab - freshman

赞同来自:

node之前遇到一个问题,就是不再同一网段内,无法加入到集群,所以访问不到数据,而transport没有这个问题。

要回复问题请先登录注册