Elasticsearch : localhost 포트 9200에 연결하지 못했습니다. 연결이 거부되었습니다.


110

Elasticsearch를 사용하여 연결을 시도했을 때 curl http://localhost:9200제대로 작동합니다.

하지만 내가 실행 curl http://IpAddress:9200하면 오류가 발생합니다.

localhost 포트 9200에 연결하지 못했습니다. 연결이 거부되었습니다.

이 오류를 해결하는 방법은 무엇입니까?


elasticsearch.yml 파일에 이미 network.host : localhost 를 설정 한 경우 요청에 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 2016

이것이 안전한가요? 권한은 로컬 서버에서만 액세스하는 것 같습니다.
Liko 2014

글쎄, 대부분의 경우 이것은 안전합니다. 하지만 그렇기 때문에 "네트워크의 올바른 IP 주소"에 대한 조항이 있습니다.
Andrew White

3
elasticsearch 2.3 지금 "network.host"입니다 "network.bind_host"아래에 언급 한 바와 같이
bkunzi01

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.
bjornte

8
elasticsearch 2.2에서 매개 변수는 network.host라고합니다.
Orr

이 /etc/elasticsearch/elasticsearch.yml 파일이 Docker 컨테이너에 있어야합니까?
인 Ashish Karpe

2
이것은 나를 위해 해결됩니다. 도커 컨테이너 내부에서 실행되는 elasticsearch-6.0.0을 사용하고 있습니다. 구성 변경 후 이제 curl http://172.17.0.2:9200. 일반적으로 사용되는 docker ip 주소 지정임을 알 수 있습니다.
truthadjustr

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 응답으로는 문제 해결
세이버

1
이것은 Ubuntu 16.04에서 나를 도운 유일한 솔루션입니다.
Snehal

21

제 경우에는 elasticsearch가 시작되었습니다. 하지만 여전히

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

다음 명령이 실패했습니다.

sudo service elasticsearch restart

작동하려면 대신 실행해야했습니다.

sudo systemctl restart elasticsearch

그런 다음 모든 것이 잘되었습니다.


1
내가 얻은 문제는 귀하의 문제와 정확히 동일하며 귀하의 솔루션은 저에게 효과적입니다. 감사합니다!
shaosh

6
나는 또한해야했다 sudo systemctl enable elasticsearch.
max pleaner

동일한 문제가 발생했지만 왜 systemctl작동하고 서비스가 작동 하지 않는지 이해할 수 없습니까?
Luv33preet

@ Luv33preet systemctl는 systemd 탑재하고 완전히 다른 프로그램이다
하프

서비스를 다시 시작하면 Ubuntu 16.04 및 Elastic Search 1.74에서 작동했습니다
racl101

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

그 후 서비스를 다시 시작했고 이제 curlVM 내부와 외부 모두에서 서비스를 시작할 수 있습니다 . 이상한 이유로, 작동하기 전에 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이 너무 적어서 시작할 수 없을 때이 문제를 보았습니다.

sudo systemctl status elasticsearch

위의 내용은 es가 실제로 실행 중인지 보여줍니다.


4
이 문제를 해결하는 데 도움이 필요 하면 stackoverflow.com/questions/29447434/… 를 확인하십시오 .
라이언 밀러

8

이 문제에 대해서는 다음을 사용해야했습니다. sudo /usr/share/elasticsearch/bin/elasticsearch start

포트 9200/9300 (sudo netstat -ntlp)에서 무언가를 얻고 다음에 대한 응답을 얻을 수 있습니다.

curl -XGET http://localhost:9200


1
감사. 이것은 ElasticSearch 1. ~ 버전 용입니다.
MontrealDevOne

상태를 확인하면 오류 메시지가 도움이되지 않습니다. bin 파일을 수동으로 실행할 때만 올바른 오류 메시지가 표시됩니다.
술라이 서 더먼

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 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)는 그다지 많은 메모리를 할당 할 수 없었습니다. 시작 및 다시 시작 명령이 자동으로 실패했지만 상태 명령이 오류를 자세히 설명했습니다.
Greg Charles

2

비슷한 문제가 발생했습니다.

해결 방법은 다음과 같습니다.

아래 서비스 명령을 실행하여 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 가 활성화되어 실행 중입니다.

● elasticsearch.service-Elasticsearch로드 됨 :로드 됨 (/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를 서비스 .

이것은 또한 적용 키바 명령 실행, sudo service kibana status OR sudo systemctl status 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/ 자바

현재 선택 [+]을 유지하려면 Enter를 누르거나 선택 번호를 입력하십시오. 2

curl -XGET http://127.0.0.1:9200

1

내 2 센트,

방금 Digital Ocean의 설치 절차를 따랐습니다. 분명히 저장소에서 사용 가능한 패키지가 최신 상태가 아닙니다. 모든 항목을 삭제하고 Elastic Search에서 직접 설치 절차를 따랐으며 모든 것이 현재 작동하고 있습니다. 기본적으로 기본적으로 바로 사용할 수있는 동작이 켜져 있습니다. 9200을 가리키는 로컬 호스트. Kibana에서 발견 된 것과 동일한 것 / 문제, 저에게도 해결책은 모든 것을 제거하고 절차를 따르는 것이 었습니다. 이것이 누군가를 2 시간 절약하기를 바랍니다 (ELK 설정 방법을 알아내는 데 소요 된 시간!).

ko


1

elasticsearch에 대한 최신 최소 버전으로 jdk를 업데이트하십시오.


1

network.bind를 0.0.0.0으로, http : port를 9200으로 변경합니다. 바인드 주소 0.0.0.0은 로컬 시스템의 모든 IPv4 주소를 의미합니다. 호스트에 두 개의 IP 주소 (192.168.1.1 및 10.1.2.1)가 있고 호스트에서 실행중인 서버가 0.0.0.0에서 수신하는 경우 두 IP 모두에서 도달 할 수 있습니다.


1

연결 거부 오류 가 발생하면 아래 명령을 실행하여 ElasticSearch 서비스의 상태를 확인하십시오.

sudo service elasticsearch status

이렇게하면 ElasticSearch 서비스의 상태와 이에 대한 조치를 해독하는 데 도움이됩니다.



0

위의 답변 중 일부를 활용 한 후 적절한 설치 후 전체 재부팅이 필요할 수 있음을 잊지 마십시오.


0

이것을 추가하기 위해 Google을 통해 network.host를 localhost로 설정하는 많은 문서를 보았습니다.

그렇게함으로써 악명 높은 연결이 거부되었습니다. FQDN이 아닌 IP 주소 (127.0.0.1)를 사용해야합니다.

제프


0

9200내 경우에 포트 가 열려 있는지 확인하십시오 .Amazon 인스턴스 였으므로 보안 그룹에서 열 때 curl 명령이 작동했습니다.


0

SELinux를 비활성화하는 것은 저에게 효과적이지만 제안하지는 않지만 PoC를 위해 그렇게했습니다.


0

내 문제는 내가 localhostlocalhost의 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.