2016-02-26 1 views
0

Je tente de démarrer elasticsearch et de configurer son schéma sur Vagrantfile. Mais, quand je mets le fichier schema json en utilisant curl sur Vagrantfile, l'erreur "connection refused" se produit, mais elasticsearch a démarré avec succès.curl à Elasticsearch "connection refused" sur Vagrantfile

boucle -X PUT http://192.168.33.20:9200/test --data binaire @/synced_folder/schema.json

[message d'erreur]

0curl: (7) Échec de la connexion à 192.168.33.20:9200; Connexion refusée

※ Après errante jusqu'à terminée, cette commande est réussie. concrètement ...

ssh sudo 192.168.33.20

et

boucle -X PUT http://192.168.33.20:9200/test --data binaire @/synced_folder/schéma. json

Ce n'est pas une erreur et le schéma est configuré avec succès.

{ "reconnu": true}

Mais, je veux configurer schéma sur le processus "Vagrant up". Pourquoi l'erreur "connection refused" se produit-elle sur Vagrantfile?

[Vagrantfile]

VAGRANTFILE_API_VERSION = "2" 

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 
config.vm.box = "bento/centos-7.1" 
config.vm.box_url = "https://atlas.hashicorp.com/bento/boxes/centos-7.1" 
config.vm.network :private_network, ip: "192.168.33.20" 
config.vm.synced_folder "./", "/synced_folder" 
config.vm.provision "shell", path: "./script.sh" 
end 

[script.sh]

#!/bin/sh 

#install java 
yum -y install java 

#install and start elasticsearch 
rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch 
cp /synced_folder/elasticsearch.repo /etc/yum.repos.d 
yum -y install elasticsearch 
sed -i '/# network.host: 192.168.0.1/a\network.host: 192.168.33.20' /etc/elasticsearch/elasticsearch.yml 
cd /usr/share/elasticsearch 
#Japanese morphological analysis plugin 
bin/plugin install analysis-kuromoji 
service elasticsearch start 

#configure index 
curl -X PUT http://192.168.33.20:9200/test --data-binary @/synced_folder/schema.json 

[/synced_folder/schema.json]

{"mappings":{"comment_data":{"properties":{"comment":{"type":"string","store":"yes","index":"analyzed"},"date":{"type":"date","store":"yes"},"vps":{"type":"float","store":"yes"}}}}} 
+0

désactiver le pare-feu si son fonctionnement ('sudo systemctl désactiver firewalld') et voir si cela aide –

+0

Merci! Je pense tout d'abord que "firewalld" est la cause et l'a essayé, mais ce n'était pas la cause. – masataka

+0

Pourriez-vous vérifier la réponse 'telnet 192.168.33.20 9200'? On dirait que le port n'est pas accessible. –

Répondre

2

je pourrais résoudre ce problème. J'ai trouvé que elasticsearch commençait réellement quelques secondes après le début du service. J'ajoute donc un processus d'attente à un script shell. Merci!

while true; 
do 
    echo "waiting Elasticsearch..." 
    curl -X -s GET http://192.168.33.20:9200 
    if [ $? -eq "0" ]; then 
     echo "Elasticsearch started!" 
     break 
    fi 
    sleep 1s 
done 
+0

Oh ... mec ... m'a sauvé #vagrant # ubuntu-14.04 #bash #shell – Relic