エラーが発生しています:Pumaがこのエラーをキャッチしました:開くことに失敗しましたTCP localhost:9200への接続(接続拒否-"localhost"ポート9200のconnect(2))(Faraday :: ConnectionFailed) in my Rails ubuntu 14.04のアプリケーション。
以下は、ターミナルでの私の弾性検索の出力です:
prashanth@prashanth-OptiPlex-390:~$ Sudo service elasticsearch restart
* Starting Elasticsearch Server prashanth@prashanth-OptiPlex-390:~$ Sudo service elasticsearch start
* Starting Elasticsearch Server * Already running. [ OK ]
prashanth@prashanth-OptiPlex-390:~$ curl -X GET 'http://localhost:9200'
curl: (7) Failed to connect to localhost port 9200: Connection refused
prashanth@prashanth-OptiPlex-390:~$
ここに/etc/elasticsearch/elasticsearch.yml
ファイルの私の弾性検索設定があります
network.Host: 127.0.0.1
transport.tcp.port: 9200
http.port: 9200
エラーの説明:
Puma caught this error: Failed to open TCP connection to localhost:9200 (Connection refused - connect(2) for "localhost" port 9200) (Faraday::ConnectionFailed)
/home/prashanth/.rvm/rubies/Ruby-2.3.1/lib/Ruby/2.3.0/net/http.rb:882:in `rescue in block in connect'
/home/prashanth/.rvm/rubies/Ruby-2.3.1/lib/Ruby/2.3.0/net/http.rb:879:in `block in connect'
/home/prashanth/.rvm/rubies/Ruby-2.3.1/lib/Ruby/2.3.0/timeout.rb:91:in `block in timeout'
/home/prashanth/.rvm/rubies/Ruby-2.3.1/lib/Ruby/2.3.0/timeout.rb:101:in `timeout'
/home/prashanth/.rvm/rubies/Ruby-2.3.1/lib/Ruby/2.3.0/net/http.rb:878:in `connect'
/home/prashanth/.rvm/rubies/Ruby-2.3.1/lib/Ruby/2.3.0/net/http.rb:863:in `do_start'
/home/prashanth/.rvm/rubies/Ruby-2.3.1/lib/Ruby/2.3.0/net/http.rb:852:in `start'
/home/prashanth/.rvm/rubies/Ruby-2.3.1/lib/Ruby/2.3.0/net/http.rb:1398:in `request'
/home/prashanth/.rvm/gems/Ruby-2.3.1/gems/faraday-0.10.1/lib/faraday/adapter/net_http.rb:83:in `perform_request'
/home/prashanth/.rvm/gems/Ruby-2.3.1/gems/faraday-0.10.1/lib/faraday/adapter/net_http.rb:41:in `block in call'
/home/prashanth/.rvm/gems/Ruby-2.3.1/gems/faraday-0.10.1/lib/faraday/adapter/net_http.rb:88:in `with_net_http_connection'
/home/prashanth/.rvm/gems/Ruby-2.3.1/gems/faraday-0.10.1/lib/faraday/adapter/net_http.rb:33:in `call'
/home/prashanth/.rvm/gems/Ruby-2.3.1/gems/faraday-0.10.1/lib/faraday/rack_builder.rb:139:in `build_response'
/home/prashanth/.rvm/gems/Ruby-2.3.1/gems/faraday-0.10.1/lib/faraday/connection.rb:377:in `run_request'
/home/prashanth/.rvm/gems/Ruby-2.3.1/gems/elasticsearch-transport-5.0.0/lib/elasticsearch/transport/transport/http/faraday.rb:23:in `block in perform_request'
/home/prashanth/.rvm/gems/Ruby-2.3.1/gems/elasticsearch-transport-5.0.0/lib/elasticsearch/transport/transport/base.rb:257:in `perform_request'
/home/prashanth/.rvm/gems/Ruby-2.3.1/gems/elasticsearch-transport-5.0.0/lib/elasticsearch/transport/transport/http/faraday.rb:20:in `perform_request'
/home/prashanth/.rvm/gems/Ruby-2.3.1/gems/elasticsearch-transport-5.0.0/lib/elasticsearch/transport/client.rb:128:in `perform_request'
投稿した設定で、HTTPおよびTCPポートには同じポート番号が割り当てられています
network.Host: 127.0.0.1
transport.tcp.port: 9200
http.port: 9200
transport.tcp.port
を変更して再試行することをお勧めします。
既にポート9300が使用されていない限り、デフォルトを使用してみてください。
network.Host: 127.0.0.1
transport.tcp.port: 9300
http.port: 9200
それでも問題が解決しない場合は、ファイアウォールプログラムのポートを開く必要があります。 Ubuntuでは、これはおそらくUFWです。
サービススクリプトにステータス関数がある場合、Elasticsearchインスタンスが正常に起動したかどうかがわかります。これに失敗した場合、ps aux
を使用して、実行中かどうかを判断できます。
$ Sudo service elasticsearch status
または
$ ps aux | grep elasticsearch
同様の質問で指摘されているように、cURLはElasticsearchが実行されていないときに接続拒否エラーを発生させることがあります(ソース: Faraday :: ConnectionFailed、Connection refused-connect(2)for "localhost" port 9200 Error Ruby on Rails )。
Dockerをお持ちですか?私にとって唯一の解決策は、Dockerを完全にアンインストールすることでした。それ以外の場合、問題はdockerが使用するポートに関するものだと思います。
私のようにalotを使用しない場合は、削除するだけで大丈夫です。