回答:
デフォルトでは、すべてのローカルアドレスにバインドする必要があります。したがって、ファイアウォールにネットワークレイヤーの問題がないと仮定すると、私が確認できると思われる唯一のES設定はnetwork.bind_host
、それが設定されてい0.0.0.0
ない::0
か、またはネットワークの正しいIPアドレスに設定されていることを確認することです。
更新:ES 2.3のコメントごとに、network.host
代わりに設定する必要があります。
network.bind_host
値を明示的に設定する必要があり、未設定のままにしておくことが私の問題でした。
/etc/elasticsearch/elasticsearch.yml
次の行を編集して追加します。
network.host:0.0.0.0
これにより、このパラメーターが「設定解除」され、他のIPからの接続が許可されます。
/Applications/elasticsearch-2.1.1/config/elasticsearch.yml
あり、編集する必要があったパラメーターはnetwork.host
でしたnetwork.bind_host
。
curl http://172.17.0.2:9200
。あなたはそれが一般的に使用されるドッカーのIPアドレス指定であることを認識します。
このページのすべてを試しましたが、ここからの指示のみが役に立ちました。
で/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/
chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/
コメントがありSTART_DAEMON=true
sudo systemctl restart elasticsearch
@kalanitによって回答されたように、問題を解決しました
私の場合、elasticsearchが開始されました。しかし、まだ持っていた
curl: (7) Failed to connect to localhost port 9200: Connection refused
次のコマンドは失敗しました
sudo service elasticsearch restart
それを機能させるために、代わりに走らなければなりませんでした
sudo systemctl restart elasticsearch
その後、すべてうまくいきました。
sudo systemctl enable elasticsearch
でした。
systemctl
機能しサービスが機能しないのか理解できませんでしたか?
次のコマンドラインから始めませんか。
$ 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
その後、サービスを再起動しcurl
、VM内と外部の両方からサービスを開始できるようになりました。奇妙な理由で、VM 内でいくつかの異なるバリアントのcurl
呼び出しを試してから、それが機能するようにしました。
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
あなたの開き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"
}
同じ問題が9200ポートでの接続を拒否しました。コマンドを使用してelasticsearchサービスのステータスを確認しsudo service elasticsearch status
ます。エラーが表示されていて、Javaに関連するものを読んでいる場合、問題はおそらくあなたのjvmメモリにあります。で編集できます/etc/elasticsearch/jvm.options
。Amazon環境の1GB RAMメモリマシンの場合、次の設定を保持しました。
-Xms128m
-Xmx128m
それを設定してelasticsearchサービスを再起動した後、それは魅力のように機能しました。NmapおよびUFW(ローカルファイアウォールを使用している場合)のチェックも役立つはずです。
同様の問題が発生しました。
これが私がそれを解決した方法です
以下のサービスコマンドを実行して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をサービスを。
それで全部です。
これがお役に立てば幸いです。
この場合、まず以下のコマンドを使用して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
お勧めしませんが、SELinuxの無効化は私にとってはうまくいきました-私はPoCのためだけにそれを行いました
私の場合、問題は、open-jdk 11
以前にインストールしたJavaバージョンにあります。サービスを開始するときに問題が発生すること。変更しopen-jdk 8
て機能し始めました
curl -X GET "http://localhost:9200"