2015-11-30 32 views
0

我試圖讓Netflix open source solution Edda與Elasticsearch一起使用。我知道我已經正確安裝了Edda,因爲我可以成功將它與MongoDB配合使用作爲後端。我更喜歡使用Elasticsearch,所以我可以得到Kibana的好處,而不是寫我自己的前端。所以我現在在AWS的同一臺服務器上運行Edda和Elasticsearch(試圖讓它工作)。 Elasticsearch是操作:Elasticsearch&NetFlix Edda - NoNodeAvailableException:沒有可用的節點

{ 
    "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> 

我沒有指定一個clustername,所以它假設默認的'elasticseach'。

所以,當我運行埃達輪詢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版本存在問題。

我錯過了可能很簡單的事情。

在此先感謝您的幫助。

問候 Neilos

回答

0

我已經想通了,在埃達使用的Java客戶端設置,如果你安裝該版本Elasticsearch它的使用的這是在設定的build.gradle elasticsearch,版本0.90.0作品。顯然,這是Elasticsearch的一個非常舊的版本,你不可能想要使用它。如果您在此文件中更改版本號,則由於路徑損壞(缺少程序集)而嘗試編譯時,它會失敗。我正在權衡是否值得嘗試解決這些彙編問題以使其與最新版本的Elasticsearch一起工作,或者選擇使用不需要任何代碼更改就可以工作但僅提供REST Api功能的MongoDB。至少問題解決了。

相關問題