2015-10-31 18 views
8

Elasticsearch 2.0'ı bir Vagrant VM'de çalıştırmaya çalışıyorum. 1.7 için kullandığım yöntem artık çalışmıyor, bu yüzden yöntemimi güncellemeye çalışıyorum. Sanal makineye ES 2.0 yüklenebilir ve sanal makine içinde iyi çalışıyor gibi görünüyor, ancak sanal makinenin dışından erişemiyorum. Bu, VM'nin bir sebepten ötürü, bir sebepten dolayı bağlantı noktası 9200 portu değil. Bu yüzden yanlış yaptığımı anlamaya çalışıyorum.Vagrant VM'de Elasticsearch 2.0 uygulamasına ana bilgisayardan erişilemiyor

Verilen bu Vagrantfile:

Vagrant.configure(2) do |config| 

    config.vm.box = "hashicorp/precise64" 
    config.vm.hostname = "ES-2.0.0" 
    config.vm.provision :shell, path: "bootstrap.sh" 
    config.vm.network :forwarded_port, host: 9200, guest: 9200 
    config.vm.synced_folder "/Users/sloan/code", "/srv/code" 

    config.vm.provider "virtualbox" do |v| 
    v.memory = 2048 
    v.cpus = 1 
    v.name = config.vm.hostname.to_s 
    end 

end 

benim bootstrap.sh çalışıyor eski:

#!/usr/bin/env bash 

sudo apt-get update 
sudo apt-get upgrade 

# install openjdk-7 
sudo apt-get purge openjdk* 
sudo apt-get -y install openjdk-7-jdk 

# install curl 
sudo apt-get -y install curl 

# install Elasticsearch 1.7.3 
wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.3.tar.gz -O elasticsearch.tar.gz 
tar -xf elasticsearch.tar.gz 
rm elasticsearch.tar.gz 
sudo mv elasticsearch-* elasticsearch 
sudo mv elasticsearch /usr/local/share 

# set up ES as service 
curl -L http://github.com/elasticsearch/elasticsearch-servicewrapper/tarball/master | tar -xz 
sudo mv *servicewrapper*/service /usr/local/share/elasticsearch/bin/ 
rm -Rf *servicewrapper* 
sudo /usr/local/share/elasticsearch/bin/service/elasticsearch install 
sudo ln -s 'readlink -f /usr/local/share/elasticsearch/bin/service/elasticsearch' /usr/local/bin/rcelasticsearch 

# start ES service 
sudo service elasticsearch start 

# enable cors (to be able to use Sense) 
sudo echo "http.cors.enabled: true" >> /usr/local/share/elasticsearch/config/elasticsearch.yml 
# enable dynamic scripting 
sudo echo "script.disable_dynamic: false" >> /usr/local/share/elasticsearch/config/elasticsearch.yml 

sudo service elasticsearch restart 

Ben anlamda çalıştığını anlamına konak OS (OS X 10.9.5) O Sadece iyi bir şekilde curl olabilir:

es173 > curl localhost:9200 
{ 
    "status" : 200, 
    "name" : "Gibbon", 
    "cluster_name" : "elasticsearch", 
    "version" : { 
    "number" : "1.7.3", 
    "build_hash" : "05d4530971ef0ea46d0f4fa6ee64dbc8df659682", 
    "build_timestamp" : "2015-10-15T09:14:17Z", 
    "build_snapshot" : false, 
    "lucene_version" : "4.10.4" 
    }, 
    "tagline" : "You Know, for Search" 
} 

Bu yeni sürümükullandığımda

#!/usr/bin/env bash 

sudo apt-get update 
sudo apt-get upgrade 

# install curl 
sudo apt-get -y install curl 

# install openjdk-7 
sudo apt-get purge openjdk* 
sudo apt-get -y install openjdk-7-jdk 

wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - 
echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list 
sudo apt-get update && sudo apt-get install elasticsearch 

sudo update-rc.d elasticsearch defaults 95 10 
sudo /etc/init.d/elasticsearch start 

# enable cors (to be able to use Sense) 
sudo echo "http.cors.enabled: true" >> /etc/elasticsearch/elasticsearch.yml 
# enable dynamic scripting 
sudo echo "script.disable_dynamic: false" >> /etc/elasticsearch/elasticsearch.yml 

sudo /etc/init.d/elasticsearch restart 

işe ETMEZ: Ben Elasticsearch belgeleri (her zaman zorlu bir görev) izlemeye çalışan tarafından pişirilen. VM içindeyken, curl localhost:9200 beklendiği gibi çalışır, ancak ana OS aldığım: Burada ne

es200 > curl localhost:9200 
curl: (52) Empty reply from server 

eksik? Yeni sürüm portunun neden iletilmediğini kimse anlatabilir mi? Ben script.disable_dynamic: false şeyler kırarak olduğunu tespit ES günlük dosyası (cat /var/log/elasticsearch/elasticsearch.log) inceleyerek üzerine

+0

ES ağa özgü yapılandırmanın kurulumunuzda nasıl olduğunu bilmiyorum, ancak ilk bakacağım bu olurdu. Çünkü dokümantasyonda belirtilen 2.0'da büyük bir değişiklik var, şu anlama geliyor: 'Şu anda bir elasticsearch nodu birden fazla adrese bağlı olabilir, ancak sadece birini yayınlar. Bu daha önce böyle değildi. 2.0'da aynı şeyi yapmanın bir yolu, 'network.bind_host: 0' değerini ayarlamaktır. –

+0

Bu "elasticsearch.yml" içinde mi gidiyor? Denedim, yardım etmiş gibi görünmüyor. –

+0

"ES ağa özgü yapılandırmanın" kurulumda ne olduğunu nasıl anlarım? İki (şimdi üç) ayarı '/ etc/elasticsearch/elasticsearch.yml' öğesine eklemekten başka, varsayılan ayarları hiçbir şekilde değiştirmedim. –

cevap

8

:

[2015-10-31 19:58:54,428][INFO ][node      ] [Yuri Topolov] version[2.0.0], pid[9826], build[de54438/2015-10-22T08:09:48Z] 
[2015-10-31 19:58:54,428][INFO ][node      ] [Yuri Topolov] initializing ... 
[2015-10-31 19:58:54,537][INFO ][plugins     ] [Yuri Topolov] loaded [], sites [] 
[2015-10-31 19:58:54,630][INFO ][env      ] [Yuri Topolov] using [1] data paths, mounts [[/ (/dev/mapper/precise64-root)]], net usable_space [72.3gb], net total_space [78.8gb], spins? [possibly], types [ext4] 
[2015-10-31 19:58:58,668][ERROR][bootstrap    ] Guice Exception: java.lang.IllegalArgumentException: script.disable_dynamic is not a supported setting, replace with fine-grained script settings. 
Dynamic scripts can be enabled for all languages and all operations by replacing `script.disable_dynamic: false` with `script.inline: on` and `script.indexed: on` in elasticsearch.yml 
    at org.elasticsearch.script.ScriptService.<init>(ScriptService.java:146) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
    at <<<guice>>> 
    at org.elasticsearch.node.Node.<init>(Node.java:198) 
    at org.elasticsearch.node.NodeBuilder.build(NodeBuilder.java:145) 
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:170) 
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:270) 
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35) 

Benim sorun vardı sonra ayarı, ama başlangıçta yorumlardaki önerileri denemeden önce ve ekledi Yani ES başarısız oldu. Bu ayarı düzeltmek, orijinal sorunumu düzeltmedi, ancak çözümü engelliyordu. senin /etc/elasticsearch/elasticsearch.yml yapılandırma dosyasında

#!/usr/bin/env bash 

sudo apt-get update 
sudo apt-get upgrade 

# install curl 
sudo apt-get -y install curl 

# install openjdk-7 
sudo apt-get purge openjdk* 
sudo apt-get -y install openjdk-7-jdk 

# install ES 
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - 
echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list 
sudo apt-get update && sudo apt-get install elasticsearch 
sudo update-rc.d elasticsearch defaults 95 10 

# either of the next two lines is needed to be able to access "localhost:9200" from the host os 
sudo echo "network.bind_host: 0" >> /etc/elasticsearch/elasticsearch.yml 
sudo echo "network.host: 0.0.0.0" >> /etc/elasticsearch/elasticsearch.yml 

# enable cors (to be able to use Sense) 
sudo echo "http.cors.enabled: true" >> /etc/elasticsearch/elasticsearch.yml 
sudo echo "http.cors.allow-origin: /https?:\/\/localhost(:[0-9]+)?/" >> /etc/elasticsearch/elasticsearch.yml 

# enable dynamic scripting 
sudo echo "script.inline: on" >> /etc/elasticsearch/elasticsearch.yml 
sudo echo "script.indexed: on" >> /etc/elasticsearch/elasticsearch.yml 

sudo /etc/init.d/elasticsearch start 
+0

, muhtemelen tüm etki alanlarını etkinleştirebilir ve bkz. Http.cors.allow-origin:/https?: \/\ /.*/ ' – keety

+0

Evet, tamam, işe yaradı. Teşekkürler. –

12

yüzden elasticsearchlocalhost erişilebilir dışında olduğunu network.host: 0.0.0.0 ayarlayın:

Neyse, işte benim için çalışıyor bootstrap.sh dosyasıdır. service elasticsearch restart yapmayı unutmayın.

+1

Elasticsearch'u sodus systemctl restart elasticsearch.service' ile 'systemd' ile yeniden başlatın. –