我正在尝试配置logstash以将我的elasticsearch集群作为使用多播的节点加入,以避免在logstash配置中配置特定主机。
我对 elasticsearch 的配置基本上是:
transport.tcp.port: 9300
http.port: 9200
cluster.name: myclustername
discovery.zen.minimum_master_nodes: 1
discovery.zen.ping.timeout: 30s
discovery.zen.ping.multicast.enabled: true
discovery.zen.ping.multicast.group: 239.193.200.01
discovery.zen.ping.multicast.port: 54328
在 logstash 方面,我有以下配置:
output {
elasticsearch {
host => "239.193.200.01"
cluster => "myclustername"
protocol => "node"
}
}
我的弹性搜索群集正在使用多播成功发现,这意味着多播IP正在按预期工作,但从该配置我得到以下日志输出:
log4j, [2014-06-05T05:51:44.001] WARN: org.elasticsearch.transport.netty: [logstash-aruba-30825-2014] exception caught on transport layer [[id: 0xe33ea7dd]], closing connection
java.net.SocketException: Network is unreachable
at sun.nio.ch.Net.connect0(Native Method)
at sun.nio.ch.Net.connect(Net.java:465)
at sun.nio.ch.Net.connect(Net.java:457)
如果我从配置中删除主机密钥,我会收到输出日志:
log4j, [2014-06-05T06:07:45.500] WARN: org.elasticsearch.discovery: [logstash-aruba-31431-2014] waited for 30s and no initial state was set by the discovery
imeout(org/elasticsearch/action/support/master/TransportMasterNodeOperationAction.java:180)
at org.elasticsearch.cluster.service.InternalClusterService$NotifyTimeout.run(org/elasticsearch/cluster/service/InternalClusterService.java:492)
at java.util.concurrent.ThreadPoolExecutor.runWorker(java/util/concurrent/ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(java/util/concurrent/ThreadPoolExecutor.java:615)
我在这里做错了什么?我想我的logstash配置错了,但我确定是什么。
答案 0 :(得分:1)
根据Logstash 1.4.1文档(http://logstash.net/docs/1.4.1/outputs/elasticsearch),您可以在Logstash进程的$ PWD目录中创建elasticsearch.yml文件,以确保它配置了相同的多播详细信息。
我假设Elasticsearch集群可以使用多播成功地看到对方,并且没有一些网络问题阻止了这一点。检查http://your-es-host:9200/_cluster/health?pretty=true
确保节点数量符合预期。
使用$JAVA_OPTS
将弹性搜索变量设置为jvm是另一种可能性:
export JAVA_OPTS="-Des.discovery.zen.ping.multicast.group=224.2.2.4 \
-Des.discovery.zen.ping.multicast.port=54328 \
-Des.discovery.zen.ping.multicast.enabled=true"
答案 1 :(得分:0)
其他选项是使用elasticsearch_http
,我遇到了同样的问题,现在效果很好。