Elasticsearch를 사용하여 연결을 시도했을 때
curl http://localhost:9200
제대로 작동합니다.
하지만 내가 실행 curl http://IpAddress:9200
하면 오류가 발생합니다.
localhost 포트 9200에 연결하지 못했습니다. 연결이 거부되었습니다.
이 오류를 해결하는 방법은 무엇입니까?
Elasticsearch를 사용하여 연결을 시도했을 때
curl http://localhost:9200
제대로 작동합니다.
하지만 내가 실행 curl http://IpAddress:9200
하면 오류가 발생합니다.
localhost 포트 9200에 연결하지 못했습니다. 연결이 거부되었습니다.
이 오류를 해결하는 방법은 무엇입니까?
답변:
기본적으로 모든 로컬 주소에 바인딩되어야합니다. 그래서, 당신을 가정하는 것은 단지 내가 검사로 생각할 수있는 설정 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
. 일반적으로 사용되는 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이 너무 적어서 시작할 수 없을 때이 문제를 보았습니다.
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 가 활성화되어 실행 중입니다.
● 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
의 상태를 이야기하기 위해, 당신은 오류가 발생할 때마다 키바을 서비스를.
그게 다야.
이게 도움이 되길 바란다.
이 경우 먼저 아래 명령을 사용하여 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
내 2 센트,
방금 Digital Ocean의 설치 절차를 따랐습니다. 분명히 저장소에서 사용 가능한 패키지가 최신 상태가 아닙니다. 모든 항목을 삭제하고 Elastic Search에서 직접 설치 절차를 따랐으며 모든 것이 현재 작동하고 있습니다. 기본적으로 기본적으로 바로 사용할 수있는 동작이 켜져 있습니다. 9200을 가리키는 로컬 호스트. Kibana에서 발견 된 것과 동일한 것 / 문제, 저에게도 해결책은 모든 것을 제거하고 절차를 따르는 것이 었습니다. 이것이 누군가를 2 시간 절약하기를 바랍니다 (ELK 설정 방법을 알아내는 데 소요 된 시간!).
ko
9200
내 경우에 포트 가 열려 있는지 확인하십시오 .Amazon 인스턴스 였으므로 보안 그룹에서 열 때 curl 명령이 작동했습니다.
SELinux를 비활성화하는 것은 저에게 효과적이지만 제안하지는 않지만 PoC를 위해 그렇게했습니다.
제 경우에는 open-jdk 11
이전에 설치 한 Java 버전에 문제가 있습니다. 서비스를 시작하는 동안 문제가 발생합니다. 나는 그것을 변경하고 open-jdk 8
작동하기 시작했습니다.
curl -X GET "http://localhost:9200"