curl http://localhost:9200
を使用してElastic Searchに接続しようとしたとき、うまく機能しています。
しかし、私がcurl http://IpAddress:9200
を実行するとき、それはconnection refused port 9200
を言っているエラーを投げています。
このエラーを解決するには?
デフォルトでは全てのローカルアドレスにバインドするべきです。したがって、ファイアウォールに関するネットワーク層の問題がないと仮定すると、私が確認できるES設定はnetwork.bind_Host
であり、それが設定されていないか、0.0.0.0
または::0
、あるいはネットワークの正しいIPアドレスに設定されていることを確認してください。 。
更新:ES 2.3のコメントによると、代わりにnetwork.Host
を設定する必要があります。
/etc/elasticsearch/elasticsearch.yml
を編集して次の行を追加します。
network.Host:0.0.0.0
これはこのパラメータを「設定解除」し、他のIPからの接続を許可します。
このページのすべてを試してみましたが、 here の指示だけが役に立ちました。
/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/elasticsearch
がelasticsearchユーザーによって所有されていることを確認してください。
chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/
私の場合はelasticsearchが開始されました。しかしまだ持っていた
curl: (7) Failed to connect to localhost port 9200: Connection refused
次のコマンドは失敗しました
Sudo service elasticsearch restart
それを機能させるために、私は代わりに走らなければなりませんでした
Sudo systemctl restart elasticsearch
それからそれはすべてうまくいきました。
このコマンドラインから始めないでください。
$ 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
################################################################
...
これは魅力のように働きました。
ここで提案されている解決策はどれも私にとってはうまくいきませんでしたが、結局それがうまくいったのはelasticsearch.yml
に以下を追加することでした
network:
Host: 0.0.0.0
http:
port: 9200
その後、サービスを再起動し、VM内と外部の両方からサービスをcurl
にすることができます。奇妙な理由で、curl
呼び出しのいくつかの異なる変種inside the VMを試す前に試す必要がありました。
curl localhost:9200
curl http://localhost:9200
curl 127.0.0.1:9200
注:Ubuntu 14.04でElasticsearch 5.5を使用しています
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が実際に実行されているかどうかは上記のとおりです。
この問題では、私は使用しなければなりませんでした:Sudo /usr/share/elasticsearch/bin/elasticsearch start
ポート9200/9300(Sudo netstat -ntlp)で何かを取得できるようにするには
curl -XGET http://localhost:9200
私は9200ポートでの接続を拒否する同じ問題を抱えていました。コマンドSudo service elasticsearch status
でelasticsearchサービスのステータスを確認します。エラーが発生していて、Javaに関連するものを読んでいる場合、おそらく問題はあなたのjvmメモリにあります。 /etc/elasticsearch/jvm.options
で編集できます。 Amazon環境の1GB RAMメモリマシンの場合、私は自分の設定を次の場所に保持しました。
-Xms128m
-Xmx128m
それを設定し、elasticsearchサービスを再起動した後、それは魅力的に働きました。 NmapおよびUFW(ローカルファイアウォールを使用している場合)チェックも便利です。
elasticsearchフォルダの下のDockerfileを開き、"network.Host = 0.0.0.0"を"network.Host = 127.0"に更新します。 0.1 "。次にコンテナを再起動します。カールで接続を確認してください。
$ 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"
}
elasticsearch.yml
を編集して、次の行を追加します
http.Host: 0.0.0.0
network.Host: 0.0.0.0
は機能しませんでした
Network.bindを0.0.0.0に、http:portを9200に変更します。バインドアドレス0.0.0.0は、ローカルマシン上のすべてのIPv4アドレスを意味します。ホストに192.168.1.1と10.1.2.1という2つのIPアドレスがあり、そのホスト上で稼働しているサーバーが0.0.0.0で待機している場合、それらのIPの両方で到達可能です。
この場合、まず最初に下記のコマンドを使用して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
現在の選択を維持するには[+]を入力するか、選択番号を入力します。2
curl -XGET http://127.0.0.1:9200
私の2セント、
Digital Oceanのインストール手順に従ったところです。どうやらレポジトリで利用可能なパッケージは最新ではない、私はすべてを削除してElastic Searchから直接インストール手順を実行しました。 Kibanaで見つかったものと同じ問題/問題は、私にとっての解決策でもあり、すべてを削除してその手順に従うだけでした。これによって誰かが2時間節約できることを願っています
en
SELinuxを無効にすることは私には役に立ちましたが、私はそれをお勧めしません - 私はPoCのためだけにそれをしました
Elasticsearchのjdkを最新の最小バージョンに更新してください。
私の問題は私はlocalhostのIPアドレスに設定する必要があるlocalhost
で動作することができませんでしたでした
network.bind_Host: 127.0.0.1
私の場合は9200
ポートがAmazonインスタンスであることを確認してください。そのため、セキュリティグループで開いたときにcurlコマンドが機能しました。
上記の答えのいくつかを利用した後、aptインストールの後に、完全な再起動が順番になっているかもしれないことを忘れないでください。
これを付け加えるために、私は、network.Hostをlocalhostに設定するというグーグルを通じて多くのドキュメントに出会いました。
そうすることは私に悪名高い接続を拒否しました。 FQDNではなく、IPアドレス(127.0.0.1)を使用する必要があります。
ジェフ