Elasticsearch: 9200 localhost bağlantı noktasına bağlanılamadı - Bağlantı reddedildi


110

Elasticsearch'e bağlanmayı denediğimde curl http://localhost:9200iyi çalışıyor.

Ama çalıştırdığımda curl http://IpAddress:9200bir hata veriyor diyor ki

9200 localhost bağlantı noktasına bağlanılamadı: Bağlantı reddedildi

Bu hata nasıl çözülür?


Elasticsearch.yml dosyasında network.host: localhost'u zaten ayarladıysanız , http protokolünü isteğe eklemeyi deneyebilirsiniz:curl -X GET "http://localhost:9200"
Xxx Xxx

En azından Windows 10'da Elasticsearch 7.8.0 kullanıldığında, elasticsearch.yml dosyasındaki network.host'un yorumunu kaldırmak benim için çalışıyor.
DLyons

Yanıtlar:


82

Varsayılan olarak tüm yerel adreslere bağlanmalıdır. Yani, sen varsayarak sadece ben çek düşünebildiğin ayarı ES, güvenlik duvarları ile bir ağ katmanı sorunu olduğunu yoksa network.bind_hostve o da ayarlanmamış ya ayarlı olduğundan emin olun 0.0.0.0veya ::0veya ağınız için doğru IP adresine.

Güncelleme: ES 2.3'teki yorum başına network.hostbunun yerine ayarlamalısınız .


11
network.bind_hostDeğeri açıkça ayarlamam gerekiyordu , bu benim sorunumdu.
joe

network.bind_host pencerelerde açıkça nasıl ayarlanır?
Rizwan Patel

Bunun güvenli olduğundan emin misin? Bence hak sadece yerel sunucudan erişim.
Liko

Çoğu durumda bu güvenlidir. Ama evet, bu yüzden "ağınız için doğru IP adresi" fıkrası var.
Andrew White

3
Aşağıda belirtildiği gibi "network.bind_host" artık
elasticsearch

79

Düzen /etc/elasticsearch/elasticsearch.ymlve aşağıdaki satırı ekleyin:

network.host: 0.0.0.0

Bu, bu parametrenin "ayarını kaldıracak" ve diğer IP'lerden bağlantılara izin verecektir.


1
Bu benim için çalıştı, teşekkürler! Ancak Mac'imde, yapılandırma dosyası konumunda bulunuyor /Applications/elasticsearch-2.1.1/config/elasticsearch.ymlve düzenlemem gereken parametre network.hostdeğil network.bind_host.
bjornte

8
elasticsearch 2.2'de parametrenin adı network.host
Orr

bu /etc/elasticsearch/elasticsearch.yml dosyası Docker konteynerinde olmalı mı?
Ashish Karpe

2
Bu benim için çözer, docker container içinde çalışan elasticsearch-6.0.0 kullanıyorum. Yapılandırma değişikliğinden sonra artık adresinden erişebilirim curl http://172.17.0.2:9200. Bunun yaygın olarak kullanılan docker ip adresleme olduğunu fark edeceksiniz.
truthadjustr

1
network.host: 0.0.0.0 - yardım etmeyin, ama bu istisna cerebro'dan
Mindaugas K.

29

Bu sayfadaki her şeyi denedim ve yalnızca buradan gelen talimatlar yardımcı oldu.

içinde /etc/default/elasticsearch, bunların yorumsuz olduğundan emin olun:

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 kullanıcısına ait olduğundan emin olun :

chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/

1
Aynı sorunu chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/START_DAEMON=true
yaşadım

1
benim için, bu çözüm + sudo systemctl restart elasticsearch@kalanit tarafından yanıtlandı, sorunu çözdü
Sabre

1
Ubuntu 16.04'te bana yardımcı olan tek çözüm bu.
Snehal

21

Benim durumumda elasticsearch başlatıldı. Ama yine de vardı

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

Aşağıdaki komut başarısız oldu

sudo service elasticsearch restart

Çalışması için onun yerine koşmam gerekiyordu

sudo systemctl restart elasticsearch

Sonra her şey yolunda gitti.


1
Karşılaştığım sorun sizinkiyle tamamen aynı ve çözümünüz bende işe yarıyor. Çok teşekkürler!
shaosh

6
Ben de yapmalıydım sudo systemctl enable elasticsearch.
max pleaner

Ben de aynı sorunu yaşadım ama neden systemctlişler ve hizmetin olmadığını anlayamadım ?
Luv33preet

@ Luv33preet systemctl systemd tarafından desteklenmektedir ve tamamen farklı bir programdır
haff

Hizmeti yeniden başlatmak benim için Ubuntu 16.04 ve elastik arama 1.74
racl101

19

Neden bu komut satırıyla başlamıyorsun:

$ sudo service elasticsearch status

Yaptım ve aldım:

"There is insufficient memory for the Java Runtime..."

Sonra /etc/elasticsearch/jvm.optionsdosyayı düzenledim :

...

################################################################

# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

#-Xms2g
#-Xms2g

-Xms512m
-Xmx512m

################################################################

...

Bu harika çalıştı.


Bu, 22 Mart cevabı bu @ Jefferson.macedo ile aynı bilgiyi veriyor gibi görünüyor. Yeni bir cevap sadece mevcut ayrıntıları yeniden yazmakla kalmamalı, yeni ve kullanışlı bilgiler sağlamalıdır.
AdrianHHH

17

Burada önerilen çözümlerden hiçbiri benim için işe yaramadı, ancak sonunda işe yarayan şey aşağıdakileri eklemekti elasticsearch.yml

network:
  host: 0.0.0.0
http:
  port: 9200

Bundan sonra servisi yeniden başlattım ve şimdi curlhem VM içinden hem de dışarıdan yapabiliyorum. Garip bir nedenden ötürü, çalışmadan önce VM içinde bir curlaramanın birkaç farklı çeşidini denemek zorunda kaldım :

curl localhost:9200
curl http://localhost:9200
curl 127.0.0.1:9200

Not: Elasticsearch 5.5'i Ubuntu 14.04'te kullanıyorum


1
Sen bir hayat kurtarıcısın. Bu, çeşitli farklı gönderileri okuduktan sonra benim için çalışan tek şeydi.
Yu Chen

1
evet, çok yardımcı oldu bu benim için de işe yarayan tek şey!
osehgol

Teşekkürler, çözümünüzü denedim ve işe yaradı. Garip buldum, çünkü bağlantı noktası numarasını geri almak zorunda kaldım.
Yorumlanan

13
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)

sunucunun başlatıldığından emin olun. Sanal makinem çok az RAM'e sahipken ve es başlayamadığında bu sorunu gördüm.

sudo systemctl status elasticsearch

yukarıdakiler size es gerçekten çalışıp çalışmadığını gösterecektir.


4
Check out stackoverflow.com/questions/29447434/... bu sorunun out tasnif yardım için.
Ryan Miller

8

Bu problem için şunu kullanmalıydım: sudo /usr/share/elasticsearch/bin/elasticsearch start

9200/9300 (sudo netstat -ntlp) bağlantı noktalarından bir şeyler alabilmek ve şunlara bir yanıt verebilmek için:

curl -XGET http://localhost:9200


1
Teşekkürler. Bu ElasticSearch 1. ~ sürümleri içindir.
MontrealDevOne

durumu kontrol etmek, hata mesajı yardımcı olmuyor. yalnızca bin dosyasını manuel olarak çalıştırırken doğru hata mesajı veriyor.
sulaiman sudirman

6

Düzen elasticsearch.ymlve aşağıdaki satırı ekleyin

http.host: 0.0.0.0

network.host: 0.0.0.0 için çalışmadı


3

Senin aç Dockerfile altında elasticsearch klasörüne ve güncelleme "network.host = 0.0.0.0" ile "network.host = 127.0.0.1" . Ardından kabı yeniden başlatın. Curl ile bağlantınızı kontrol edin.

$ 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 bağlantı noktasında bağlantıları reddederken aynı sorunu yaşadım. Elasticsearch servis durumunu komutla kontrol edin sudo service elasticsearch status. Bir hata veriyorsa ve Java ile ilgili herhangi bir şey okursanız, muhtemelen sorun jvm belleğinizdir. İçinde düzenleyebilirsiniz /etc/elasticsearch/jvm.options. Amazon ortamında 1 GB RAM bellek makinesi için yapılandırmamı şu şekilde tuttum:

-Xms128m
-Xmx128m

Bunu ayarladıktan ve elasticsearch servisini yeniden başlattıktan sonra, bir cazibe gibi çalıştı. Nmap ve UFW (yerel güvenlik duvarı kullanıyorsanız) denetimi de yararlı olmalıdır.


1
Bunu benim için yaptı. Yapılandırmam her ikisi için de 1g'ye sahipti ve AWS örneği (t2.micro) ona bu kadar bellek ayıramadı. Başlatma ve yeniden başlatma komutları sessizce başarısız oldu, ancak durum komutu hatanın ayrıntılarını verdi.
Greg Charles

2

Benzer bir sorun yaşadım.

İşte nasıl çözdüm

ElasticSearch'ü başlatmak için aşağıdaki servis komutunu çalıştırın

sudo service elasticsearch start

VEYA

sudo systemctl start elasticsearch

Hala hatayı alıyorsanız

curl: (7) 9200 localhost bağlantı noktasına bağlanılamadı: Bağlantı reddedildi

ElasticSearch'ün durumunu kontrol etmek için aşağıdaki servis komutunu çalıştırın

sudo service elasticsearch status

VEYA

sudo systemctl status elasticsearch

Aşağıdaki gibi bir yanıt alırsanız ( Aktif: aktif (çalışıyor) ) o zaman ElasticSearch aktif ve çalışıyor demektir

● elasticsearch.service - Elasticsearch Yüklendi: yüklendi (/usr/lib/systemd/system/elasticsearch.service; devre dışı; satıcı ön ayarı: etkin) Aktif: Sat 2019-09-21 11:22:21 WAT'tan beri aktif (çalışıyor) ; 3 sn. Önce

Daha sonra Elasticsearch düğümünüzün çalışıp çalışmadığını, aşağıdaki komutu kullanarak localhost üzerindeki 9200 numaralı bağlantı noktasına bir HTTP isteği göndererek test edebilirsiniz :

curl http://localhost:9200

Aksi takdirde, farklı bir yanıt alırsanız, düzeltmek için daha fazla hata ayıklamanız gerekebilir, ancak aşağıdaki komutun çalıştırılması, ElasticSearch hizmetinin başlatılmasını engelleyen uyarıları tespit etmenize yardımcı olacaktır .

sudo service elasticsearch status

VEYA

sudo systemctl status elasticsearch

ElasticSearch hizmetini durdurmak istiyorsanız , aşağıdaki servis komutunu çalıştırmanız yeterlidir;

sudo service elasticsearch stop

VEYA

sudo systemctl stop elasticsearch

N / B: ElasticSearch hizmetinin durumunu belirtmek için, hatayla her karşılaştığınızda sudo service elasticsearch status VEYA komutu çalıştırmanız gerekebilir .sudo systemctl status elasticsearch

Bu aynı zamanda Kibana için de geçerlidir , Kibana hizmetinin durumunu söylemek için, hatayla her karşılaştığınızda sudo service kibana status OR komutunu çalıştırın .sudo systemctl status kibana

Bu kadar.

Umarım bu yardımcı olur.


1

Bu durumda, öncelikle aşağıdaki komutu kullanarak java sürümünü kontrol etmeniz gerekir:

java -version

bu komutu çalıştırdıktan sonra şuna benzer bir şey elde edersiniz:

java sürümü "1.7.0_51" OpenJDK Çalışma Zamanı Ortamı (rhel-2.4.5.5.el7-x86_64 u51-b31) OpenJDK 64-Bit Sunucu VM (derleme 24.51-b03, karma mod)

sonra şu komutu kullanın:

update-alternatives --config java

ve aşağıdaki sürümü seçin

* + 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

Geçerli seçimi korumak için girin [+] veya seçim numarasını yazın: 2

curl -XGET http://127.0.0.1:9200

1

2 sentim,

Digital Ocean'daki kurulum prosedürünü yeni takip ettim, görünüşe göre depolarda bulunan paket güncel değil, her şeyi sildim ve doğrudan Elastic Search'ten kurulum prosedürünü izledim ve şimdi her şey çalışıyor, temelde kutudan çıkma davranışı açık 9200'ü gösteren bir localhost. Kibana'da bulunan aynı şey / sorun, benim için çözüm de her şeyi kaldırmak ve sadece prosedürlerini takip etmekti, Umarım bu birisini iki saat kurtarır (ELK'yi nasıl kuracağımı bulmak için harcadığım zaman!)

en


1

Elasticsearch için jdk'nizi en son minimum sürüme güncelleyin.


1

Network.bind değerini 0.0.0.0 ve http: portu 9200 olarak değiştirin. Bağlama adresi 0.0.0.0, yerel makinedeki tüm IPv4 adresleri anlamına gelir. Bir ana bilgisayarın 192.168.1.1 ve 10.1.2.1 olmak üzere iki IP adresi varsa ve ana bilgisayarda çalışan bir sunucu 0.0.0.0'da dinliyorsa, bu IP'lerin her ikisinde de erişilebilir olacaktır.


1

Bağlantı reddedildi hatasıyla karşılaşırsanız, ElasticSearch hizmetinin durumunu kontrol etmek için aşağıdaki komutu çalıştırmanız yeterlidir.

sudo service elasticsearch status

Bu, ElasticSearch hizmetinin durumunu ve bu konuda ne yapmanız gerektiğini anlamanıza yardımcı olacaktır.



0

Yukarıdaki cevaplardan bazılarını kullandıktan sonra, uygun bir kurulumdan sonra, tamamen yeniden başlatmanın sırayla olabileceğini unutmayın.


0

Bunu eklemek için, google aracılığıyla network.host'u localhost'a ayarlamayı söyleyen birçok dokümana rastladım.

Bunu yapmak bana rezil bağlantı reddetti. Bir FQDN değil, bir IP adresi (127.0.0.1) kullanmalısınız.

Jeff


0

Durumum için bağlantı noktasının 9200açık olduğundan emin olun, bu bir amazon örneğiydi, bu nedenle güvenlik grubumda açtığımda curl komutu çalıştı.


0

SELinux'u devre dışı bırakmak benim için çalıştı, bunu önermesem de - bunu sadece PoC için yaptım


0

Sorunum, çalışamadığım localhostiçin localhost'un IP adresine ayarlamam gerektiğiydi.

network.bind_host: 127.0.0.1


0

Benim durumumda sorun java sürümünde, open-jdk 11daha önce yükledim . Hizmeti başlatırken sorun yaratan budur. Ben değiştirdim open-jdk 8ve çalışmaya başladı

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.