当我尝试使用连接到Elasticsearch时,
curl http://localhost:9200
它工作正常。
但是当我运行curl http://IpAddress:9200
它时会抛出一个错误说
无法连接到本地主机端口9200:连接被拒绝
如何解决这个错误?
当我尝试使用连接到Elasticsearch时,
curl http://localhost:9200
它工作正常。
但是当我运行curl http://IpAddress:9200
它时会抛出一个错误说
无法连接到本地主机端口9200:连接被拒绝
如何解决这个错误?
Answers:
默认情况下,它应该绑定到所有本地地址。因此,假设你没有使用防火墙在网络层的问题,唯一的ES设置我能想到是检查network.bind_host
并确保其未设置或设置为0.0.0.0
或::0
或正确的IP地址为您的网络。
更新:根据ES 2.3中的注释,您应该进行设置network.host
。
network.bind_host
值,而未设置是我的问题。
编辑/etc/elasticsearch/elasticsearch.yml
并添加以下行:
网络主机: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
。您将认识到这是常用的docker 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 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)无法连接到本地主机端口9200:连接被拒绝
运行以下服务命令以检查ElasticSearch的状态
sudo service elasticsearch status
要么
sudo systemctl status elasticsearch
如果您收到如下所示的响应(Active:active(running)),则表明ElasticSearch是active并且正在运行
●elasticsearch.service-Elasticsearch已加载:已加载(/usr/lib/systemd/system/elasticsearch.service;已禁用;供应商预设:已启用) 活动:活动(运行),自SAT 2019-09-21 11:22:21 WAT;3秒前
然后,您可以使用以下命令向本地主机上的端口9200发送HTTP请求,以测试您的Elasticsearch节点是否正在运行:
curl http://localhost:9200
否则,如果您得到不同的响应,则可能必须进一步调试以修复它,但是运行下面的命令将帮助您从开始检测哪些警告正在保留ElasticSearch服务。
sudo service elasticsearch status
要么
sudo systemctl status elasticsearch
如果要停止ElasticSearch服务,只需运行以下service命令;
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/爪哇
输入以保留当前选择[+],或键入选择号:2
curl -XGET http://127.0.0.1:9200
如果遇到“ 连接被拒绝”错误,只需运行以下命令以检查ElasticSearch服务的状态
sudo service elasticsearch status
这将帮助您了解ElasticSearch服务的状态及其处理方法。
确保9200
在我的情况下该端口是一个Amazon实例打开的,所以当我在安全组中打开该端口时,curl命令起作用。
禁用SELinux对我有用,尽管我不建议这样做-我只是为PoC做的
curl -X GET "http://localhost:9200"