Elasticsearch:localhostポート9200への接続に失敗しました-接続が拒否されました


110

Elasticsearchに接続してみたところ、問題 curl http://localhost:9200なく動作しました。

しかし、実行するcurl http://IpAddress:9200とエラーがスローされます

localhostポート9200への接続に失敗しました:接続が拒否されました

このエラーを解決するには?


すでに設定されている場合network.host:localhostの elasticsearch.ymlファイルに、あなたは、要求にhttpプロトコルを追加しようとすることができますcurl -X GET "http://localhost:9200"
XXXのXXXの

少なくともWindows 10でElasticsearch 7.8.0を使用している場合、elasticsearch.ymlファイルのnetwork.hostのコメントを外すだけで機能します。
DLyons

回答:


81

デフォルトでは、すべてのローカルアドレスにバインドする必要があります。したがって、ファイアウォールにネットワークレイヤーの問題がないと仮定すると、私が確認できると思われる唯一のES設定はnetwork.bind_host、それが設定されてい0.0.0.0ない::0か、またはネットワークの正しいIPアドレスに設定されていることを確認することです。

更新:ES 2.3のコメントごとに、network.host代わりに設定する必要があります。


11
network.bind_host値を明示的に設定する必要があり、未設定のままにしておくことが私の問題でした。
joe

Windowsでnetwork.bind_hostを明示的に設定するにはどうすればよいですか?
Rizwan Patel

これは安全ですか?権利はローカルサーバーからのアクセスのみだと思います。
リコ

まあ、ほとんどの場合、これは安全です。しかし、そうです、「ネットワークの正しいIPアドレス」の条項があるのはそのためです。
アンドリューホワイト

3
以下に示すように、「network.bind_host」は
elasticsearch

78

/etc/elasticsearch/elasticsearch.yml次の行を編集して追加します。

network.host:0.0.0.0

これにより、このパラメーターが「設定解除」され、他のIPからの接続が許可されます。


1
これはうまくいきました、ありがとう!しかし、私のMacでは、設定ファイルはに/Applications/elasticsearch-2.1.1/config/elasticsearch.ymlあり、編集する必要があったパラメーターはnetwork.hostでしたnetwork.bind_host
ビョルンテ2016年

8
elasticsearch 2.2にパラメータがnetwork.hostと呼ばれている
オア

この/etc/elasticsearch/elasticsearch.ymlファイルはDockerコンテナにある必要がありますか?
Ashish Karpe 2017年

2
これは私のために解決します、私はdockerコンテナー内で実行されているelasticsearch-6.0.0を使用しています。設定変更後、でアクセスできるようになりましたcurl http://172.17.0.2:9200。あなたはそれが一般的に使用されるドッカーのIPアドレス指定であることを認識します。
TruthAdjuster 2017

1
network.host:0.0.0.0-助けにはなりませんが、この例外は私がcerebroから取得しています
Mindaugas K.

29

このページのすべてを試しましたが、ここからの指示のみが役に立ちました。

/etc/default/elasticsearch、これらがコメント化されていないことを確認します。

START_DAEMON=true
ES_USER=elasticsearch
ES_GROUP=elasticsearch
LOG_DIR=/var/log/elasticsearch
DATA_DIR=/var/lib/elasticsearch
WORK_DIR=/tmp/elasticsearch
CONF_DIR=/etc/elasticsearch
CONF_FILE=/etc/elasticsearch/elasticsearch.yml
RESTART_ON_UPGRADE=true

/var/lib/elasticsearchelasticsearchユーザーが所有していることを確認します。

chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/

1
同じ問題があり、解決策はchown -R elasticsearch:elasticsearch /var/lib/elasticsearch/コメントがありSTART_DAEMON=true
ませんでし

1
私にとって、この解決策+ sudo systemctl restart elasticsearch@kalanitによって回答されたように、問題を解決しました
Sabre

1
これは、Ubuntu 16.04で私を助けた唯一のソリューションです。
スネハル

21

私の場合、elasticsearchが開始されました。しかし、まだ持っていた

curl: (7) Failed to connect to localhost port 9200: Connection refused

次のコマンドは失敗しました

sudo service elasticsearch restart

それを機能させるために、代わりに走らなければなりませんでした

sudo systemctl restart elasticsearch

その後、すべてうまくいきました。


1
私が得た問題はあなたのものとまったく同じであり、あなたの解決策は私にとってうまくいきます。どうもありがとう!
shaosh 2016

6
私もしなければなりませんsudo systemctl enable elasticsearchでした。
max pleaner 2017

同じ問題が発生しましたが、なぜsystemctl機能しサービスが機能しないのか理解できませんでしたか?
Luv33preet

@ Luv33preet systemctlはsystemdを使用しており、まったく別のプログラムです
haff

サービスを再
起動する

19

次のコマンドラインから始めませんか。

$ sudo service elasticsearch status

私はそれをして得ました:

"There is insufficient memory for the Java Runtime..."

次に、/etc/elasticsearch/jvm.optionsファイルを編集しました。

...

################################################################

# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

#-Xms2g
#-Xms2g

-Xms512m
-Xmx512m

################################################################

...

これは魅力のように働きました。


これは、3月22日の回答bu @ Jefferson.macedoと同じ情報を提供するようです。新しい答えは、既存の詳細を書き換えるだけでなく、新しい情報とusefil情報を提供する必要があります。
AdrianHHH

17

ここで提案された解決策はどれも私にとってはうまくいきませんでしたが、最終的にそれがうまくいったのは elasticsearch.yml

network:
  host: 0.0.0.0
http:
  port: 9200

その後、サービスを再起動しcurl、VM内と外部の両方からサービスを開始できるようになりました。奇妙な理由で、VM 内でいくつかの異なるバリアントのcurl呼び出しを試してから、それが機能するようにしました。

curl localhost:9200
curl http://localhost:9200
curl 127.0.0.1:9200

注:Ubuntu 14.04でElasticsearch 5.5を使用しています


1
あなたは命の恩人です。これは、さまざまな異なる投稿を読んだ後、私にとってうまくいった唯一のものです。
Yu Chen

1
うん、これは私にとってもうまくいった唯一のことです!
osehgol

ありがとう、私はあなたの解決策を試してみましたが、うまくいきました。ポート番号のコメントを外すだけだったので、これは奇妙だと思いました。コメントされた行は事前定義されたデフォルト値のようなものだと思いました
zwep

13
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)

サーバーが起動していることを確認してください。仮想マシンのRAMが小さすぎてesを起動できないときに、この問題が発生しました。

sudo systemctl status elasticsearch

上記は、esが実際に実行されているかどうかを示します。


4
この問題の解決に役立つ情報については、stackoverflow.com / questions / 29447434 /…ご覧ください。
Ryan Miller

8

この問題のために、私は使用しなければなりませんでした: sudo /usr/share/elasticsearch/bin/elasticsearch start

ポート9200/9300(sudo netstat -ntlp)で何かを取得できるようにするには、次のように応答します。

curl -XGET http://localhost:9200


1
ありがとう。これはElasticSearch 1.〜バージョン用です。
MontrealDevOne

ステータスを確認すると、エラーメッセージは役に立ちません。binファイルを手動で実行した場合にのみ、正しいエラーメッセージが表示されます。
sulaiman sudirman

6

elasticsearch.yml次の行を編集して追加します

http.host: 0.0.0.0

network.host: 0.0.0.0 うまくいきませんでした


3

あなたの開きDockerfileをelasticsearchフォルダおよび更新"network.host = 0.0.0.0""network.host = 127.0.0.1" 。次に、コンテナを再起動します。curlとの接続を確認してください。

$ curl http://docker-machine-ip:9200
{
  "name" : "vI6Zq_D",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "hhyB_Wa4QwSX6zZd1F894Q",
  "version" : {
    "number" : "5.2.0",
    "build_hash" : "24e05b9",
    "build_date" : "2017-01-24T19:52:35.800Z",
    "build_snapshot" : false,
    "lucene_version" : "6.4.0"
  },
  "tagline" : "You Know, for Search"
}

3

同じ問題が9200ポートでの接続を拒否しました。コマンドを使用してelasticsearchサービスのステータスを確認しsudo service elasticsearch statusます。エラーが表示されていて、Javaに関連するものを読んでいる場合、問題はおそらくあなたのjvmメモリにあります。で編集できます/etc/elasticsearch/jvm.options。Amazon環境の1GB RAMメモリマシンの場合、次の設定を保持しました。

-Xms128m
-Xmx128m

それを設定してelasticsearchサービスを再起動した後、それは魅力のように機能しました。NmapおよびUFW(ローカルファイアウォールを使用している場合)のチェックも役立つはずです。


1
これは私のためにそれをしたものです。私の構成では両方に1gがあり、AWSインスタンス(t2.micro)はそれに多くのメモリを割り当てることができませんでした。startコマンドとrestartコマンドはサイレントに失敗しましたが、statusコマンドがエラーの詳細を示しています。
グレッグチャールズ

2

同様の問題が発生しました。

これが私がそれを解決した方法です

以下のサービスコマンドを実行してElasticSearchを開始します

sudo service elasticsearch start

または

sudo systemctl start elasticsearch

それでもエラーが発生する場合

curl:(7)localhostポート9200への接続に失敗:接続が拒否されました

以下のサービスコマンドを実行して、ElasticSearchのステータスを確認します

sudo service elasticsearch status

または

sudo systemctl status elasticsearch

以下のような応答(Active:active(running))が返された場合、ElasticSearchはアクティブで実行中です

●elasticsearch.service-Elasticsearch Loaded:ロード済み(/usr/lib/systemd/system/elasticsearch.service;無効;ベンダープリセット:有効) アクティブ:土2019-09-21 11:22:21 WAT以降アクティブ(実行中)3秒前

次に、以下のコマンドを使用してlocalhostのポート9200にHTTPリクエストを送信することにより、Elasticsearchノードが実行されていることをテストできます。

curl http://localhost:9200

そうでない場合、別の応答が返される場合は、さらにデバッグして修正する必要があるかもしれませんが、以下のコマンドを実行すると、ElasticSearchサービスの開始を妨げている警告を検出するのに役立ちます。

sudo service elasticsearch status

または

sudo systemctl status elasticsearch

ElasticSearchサービスを停止する場合は、以下のサービスコマンドを実行するだけです。

sudo service elasticsearch stop

または

sudo systemctl stop elasticsearch

N / B:あなたがコマンドを実行する必要がありますsudo service elasticsearch status OR sudo systemctl status elasticsearchの状態伝えるために、エラーが発生した都度ElasticSearchのサービスを。

これもに適用されKibanaのコマンドを実行し、sudo service kibana status OR sudo systemctl status kibanaの状態伝えるために、エラーが発生した都度Kibanaをサービスを。

それで全部です。

これがお役に立てば幸いです。


1

この場合、まず以下のコマンドを使用してJavaバージョンを確認する必要があります。

java -version

このコマンドを実行すると、次のようになります。

javaバージョン "1.7.0_51" OpenJDKランタイム環境(rhel-2.4.5.5.el7-x86_64 u51-b31)OpenJDK 64ビットサーバーVM(ビルド24.51-b03、混合モード)

次に、次のコマンドを使用します。

update-alternatives --config java

以下のバージョンを選択してください

* + 1 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.51-2.4.5.5.el7.x86_64/jre/bin/java 2 /usr/java/jdk1.8.0_73/jre/bin/ java

Enterキーを押して現在の選択を維持するか[+]、または選択番号を入力してください:2

curl -XGET http://127.0.0.1:9200

1

私の2セント、

Digital Oceanでのインストール手順を実行したところ、どうやらリポジトリで利用可能なパッケージが最新ではないようです。すべてを削除して、Elastic Searchから直接インストール手順を実行したところ、すべてが正常に機能し、基本的にそのままの動作がオンになっています9200を指すローカルホスト。同じこと/問題がKibanaで見つかりました。私にとっての解決策も、すべてを削除して手順に従うだけです。これにより、誰かが2時間節約できることを願っています(ELKのセットアップ方法を考え出すのに費やした時間です)。

en


1

elasticsearchのjdkを最新の最小バージョンに更新します。


1

network.bindを0.0.0.0に、http:portを9200に変更します。バインドアドレス0.0.0.0は、ローカルマシン上のすべてのIPv4アドレスを意味します。ホストに2つのIPアドレス192.168.1.1と10.1.2.1があり、ホスト上で実行されているサーバーが0.0.0.0で待機している場合、両方のIPで到達可能です。


1

接続拒否エラーが発生した場合は、以下のコマンドを実行してElasticSearchサービスのステータスを確認してください

sudo service elasticsearch status

これは、ElasticSearchサービスの状態を解読し、それをどうするかを支援します。



0

上記の回答のいくつかを利用した後、aptのインストール後、完全な再起動が必要になる場合があることを忘れないでください。


0

これを追加するために、network.hostをlocalhostに設定するように言った多くのドキュメントをgoogleを通じて見つけました。

そうすることで、悪名高い接続が拒否されました。FQDNではなく、IPアドレス(127.0.0.1)を使用する必要があります。

ジェフ


0

9200私の場合はポートが開いていることを確認してください。これはAmazonインスタンスでしたので、セキュリティグループで開いたときにcurlコマンドが機能しました。



0

私の問題は私がlocalhostそれをlocalhostのIPアドレスに設定する必要があると一緒に作業することができなかったことでした

network.bind_host: 127.0.0.1


0

私の場合、問題は、open-jdk 11以前にインストールしたJavaバージョンにあります。サービスを開始するときに問題が発生すること。変更しopen-jdk 8て機能し始めました

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.