簡體   English   中英

Elasticsearch&NetFlix Edda-NoNodeAvailableException:無可用節點

[英]Elasticsearch & NetFlix Edda - NoNodeAvailableException: No node available

我正在嘗試讓Netflix開源解決方案Edda與Elasticsearch一起使用。 我知道我已經正確安裝了Edda,因為我可以成功地將它與MongoDB作為后端一起使用。 我更喜歡使用Elasticsearch,這樣我可以獲得Kibana的好處,而不是編寫自己的前端。 因此,我目前正在AWS的同一台服務器上運行Edda和Elasticsearch(只是試圖使其工作)。 Elasticsearch是可操作的:

{
  "name" : "Arsenic",
  "cluster_name" : "elasticsearch",
  "version" : {
    "number" : "2.1.0",
    "build_hash" : "72cd1f1a3eee09505e036106146dc1949dc5dc87",
    "build_timestamp" : "2015-11-18T22:40:03Z",
    "build_snapshot" : false,
    "lucene_version" : "5.3.1"
  },
  "tagline" : "You Know, for Search"
}

並顯示它正在監聽:

netstat -tulpn | grep java
tcp        0      0 ::ffff:<myip>:9300    :::*                        LISTEN      2270/java
tcp        0      0 ::ffff:<myip>:9200    :::*                        LISTEN      2270/java

我的Java版本從1.7更新到1.8,因為我相信Elasticsearch的Java版本和服務器上運行的版本必須匹配。 我看不出1.8會引起問題的原因:

java -version
openjdk version "1.8.0_65"
OpenJDK Runtime Environment (build 1.8.0_65-b17)
OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)

這是我的edda屬性文件:

cat /home/ec2-user/edda/src/main/resources/edda.properties | grep elasticsearch
edda.datastore.current.class=com.netflix.edda.elasticsearch.ElasticSearchDatastore
edda.elector.class=com.netflix.edda.elasticsearch.ElasticSearchElector
edda.elasticsearch.cluster=elasticsearch
edda.elasticsearch.address=<myip>:9300
edda.elasticsearch.shards=5
edda.elasticsearch.replicas=0
# http://www.elasticsearch.org/guide/reference/api/index_/
edda.elasticsearch.writeConsistency=quorum
edda.elasticsearch.replicationType=async
edda.elasticsearch.scanBatchSize=1000
edda.elasticsearch.scanCursorDuration=60000
edda.elasticsearch.bulkBatchSize=0

在我的elasticsearch.yml文件中:

network.host: <myip>

我尚未指定集群名稱,因此它假定默認的'elasticseach'。

因此,當我運行Edda輪詢AWS並用它的數據填充elasticsearch時,我收到此錯誤:

[Collection aws.hostedZones] init: caught org.elasticsearch.client.transport.NoNodeAvailableException: No node available
        at com.netflix.edda.Collection$$anonfun$init$1.apply$mcV$sp(Collection.scala:471)
        at com.netflix.edda.Utils$$anon$1.act(Utils.scala:169)
        at scala.actors.Reactor$$anonfun$dostart$1.apply(Reactor.scala:224)
        at scala.actors.Reactor$$anonfun$dostart$1.apply(Reactor.scala:224)
        at scala.actors.ReactorTask.run(ReactorTask.scala:33)
        at scala.actors.ReactorTask.compute(ReactorTask.scala:63)
        at scala.concurrent.forkjoin.RecursiveAction.exec(RecursiveAction.java:160)
        at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
        at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
        at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
        at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

顯然,它無法連接到Elasticsearch集群,但集群名稱正確,據我所知,它正在偵聽正確的端口和IP地址,並且我認為Java版本沒有問題。

我想念的東西可能很簡單。

在此先感謝您的協助。

問候內洛斯

我已經弄清楚了,如果您安裝該版本的Elasticsearch,則Edda中使用的Java客戶端設置為使用build.gradle中設置的elasticsearch版本0.90.0。 顯然,這是Elasticsearch的非常舊的版本,您不太可能要使用。 如果更改此文件中的版本號,則由於路徑中斷(缺少程序集)而嘗試編譯時將失敗。 我正在權衡是否值得嘗試解決這些程序集問題以使其與最新版本的Elasticsearch一起使用,還是選擇使用MongoDB,該功能無需任何代碼更改即可工作,而僅提供REST Api功能。 至少問題已解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM