Elasticsearch: Gagal terhubung ke port localhost 9200 - Sambungan ditolak


110

Ketika saya mencoba menghubungkan ke Elasticsearch menggunakan curl http://localhost:9200itu berfungsi dengan baik.

Tapi ketika saya menjalankannya, curl http://IpAddress:9200muncul kesalahan yang mengatakan

Gagal terhubung ke port localhost 9200: Sambungan ditolak

Bagaimana cara mengatasi kesalahan ini?


Jika Anda sudah mengatur network.host: localhost di file elasticsearch.yml maka Anda dapat mencoba menambahkan protokol http dalam permintaan:curl -X GET "http://localhost:9200"
Xxx Xxx

Setidaknya menggunakan Elasticsearch 7.8.0 di Windows 10, cukup hapus komentar network.host di file elasticsearch.yml berfungsi untuk saya.
DLyons

Jawaban:


81

Secara default, ini harus mengikat ke semua alamat lokal. Jadi, dengan asumsi Anda tidak memiliki masalah lapisan jaringan dengan firewall, satu-satunya pengaturan ES yang menurut saya perlu diperiksa adalah network.bind_hostdan memastikannya tidak disetel atau disetel ke 0.0.0.0atau ::0atau ke alamat IP yang benar untuk jaringan Anda.

Pembaruan: per komentar di ES 2.3 Anda harus mengatur network.hostsebagai gantinya.


11
Saya harus secara eksplisit mengatur network.bind_hostnilainya, membiarkannya tidak disetel adalah masalah saya.
joe

bagaimana cara mengatur network.bind_host secara eksplisit di windows?
Rizwan Patel

Apakah Anda yakin ini aman? Menurut saya yang benar adalah akses hanya dari server lokal.
Liko

Nah, dalam banyak kasus ini aman. Tapi ya, itulah mengapa klausul untuk "alamat IP yang benar untuk jaringan Anda" ada.
Andrew White

3
Seperti yang dinyatakan di bawah ini, "network.bind_host" sekarang menjadi "network.host" untuk
elasticsearch

78

Edit /etc/elasticsearch/elasticsearch.ymldan tambahkan baris berikut:

network.host: 0.0.0.0

Ini akan "menghapus" parameter ini dan akan mengizinkan koneksi dari IP lain.


1
Ini berhasil untuk saya, terima kasih! Namun di Mac saya, file konfigurasi terletak di /Applications/elasticsearch-2.1.1/config/elasticsearch.yml, dan parameter yang harus saya edit adalah network.host, bukan network.bind_host.
bjornte

8
di elasticsearch 2.2 parameter disebut network.host
Orr

file /etc/elasticsearch/elasticsearch.yml ini harus ada dalam container Docker?
Ashish Karpe

2
Ini memecahkan untuk saya, saya menggunakan elasticsearch-6.0.0 yang berjalan di dalam container docker. Setelah konfigurasi diubah, sekarang saya dapat mengakses dengan curl http://172.17.0.2:9200. Anda akan mengenali bahwa alamat ip buruh pelabuhan yang umum digunakan.
truthadjustr

1
network.host: 0.0.0.0 - tidak membantu, tetapi pengecualian ini saya dapatkan dari cerebro
Mindaugas K.

29

Mencoba semuanya di halaman ini, dan hanya instruksi dari sini yang membantu.

di /etc/default/elasticsearch, pastikan ini tidak dikomentari:

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

pastikan /var/lib/elasticsearchdimiliki oleh pengguna elasticsearch:

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

1
Punya masalah yang sama dan solusinya adil chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/dan tidak dikomentariSTART_DAEMON=true
Estevex

1
bagi saya, solusi ini + sudo systemctl restart elasticsearchseperti yang dijawab oleh @kalanit, memecahkan masalah
Sabre

1
Ini adalah satu-satunya solusi yang membantu saya di Ubuntu 16.04.
Snehal

21

Dalam kasus saya, pencarian elastik dimulai. Tapi masih punya

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

Perintah berikut tidak berhasil

sudo service elasticsearch restart

Untuk membuatnya berhasil, saya harus lari

sudo systemctl restart elasticsearch

Kemudian semuanya baik-baik saja.


1
Masalah yang saya dapatkan persis sama dengan masalah Anda, dan solusi Anda berhasil untuk saya. Terima kasih banyak!
shaosh

6
Saya juga harus melakukannya sudo systemctl enable elasticsearch.
pemohon maksimal

Saya mendapat masalah yang sama, tetapi tidak mengerti mengapa systemctlbekerja dan layanan tidak?
Luv33preet

@ Luv33preet systemctl didukung oleh systemd dan merupakan program yang sama sekali berbeda
haff

Memulai kembali layanan berhasil bagi saya di Ubuntu 16.04 dan pencarian elastis 1.74
racl101

19

Mengapa Anda tidak memulai dengan baris perintah ini:

$ sudo service elasticsearch status

Saya melakukannya dan mendapatkan:

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

Kemudian saya mengedit /etc/elasticsearch/jvm.optionsfile:

...

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

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

#-Xms2g
#-Xms2g

-Xms512m
-Xmx512m

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

...

Ini bekerja seperti pesona.


Tampaknya ini memberikan informasi yang sama dengan jawaban 22 Maret bu @ Jefferson.macedo. Jawaban baru seharusnya tidak hanya menulis ulang detail yang ada, tetapi juga memberikan informasi baru dan berguna.
AdrianHHH

17

Tidak ada solusi yang diusulkan di sini yang berhasil untuk saya, tetapi yang akhirnya berhasil adalah menambahkan yang berikut ini ke elasticsearch.yml

network:
  host: 0.0.0.0
http:
  port: 9200

Setelah itu, saya memulai ulang layanan dan sekarang saya dapat curlmelakukannya dari dalam VM dan dari luar. Untuk beberapa alasan aneh, saya harus mencoba beberapa varian curlpanggilan yang berbeda di dalam VM sebelum berhasil:

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

Catatan: Saya menggunakan Elasticsearch 5.5 di Ubuntu 14.04


1
Anda adalah penyelamat. Ini adalah satu-satunya hal yang berhasil bagi saya setelah membaca berbagai posting berbeda.
Yu Chen

1
ya, sangat membantu ini adalah satu-satunya hal yang berhasil untuk saya juga!
osehgol

Terima kasih, saya mencoba solusi Anda dan berhasil. Yang menurut saya aneh, karena saya hanya perlu menghapus komentar nomor port. Saya berpikir bahwa baris yang dikomentari seperti nilai default yang telah ditentukan
zwep

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

pastikan server dimulai. Saya telah melihat masalah ini ketika mesin virtual saya memiliki RAM yang terlalu kecil dan es tidak dapat dimulai.

sudo systemctl status elasticsearch

di atas akan menunjukkan kepada Anda jika es memang sedang berjalan.


4
Lihat stackoverflow.com/questions/29447434/… untuk bantuan dalam menyelesaikan masalah ini.
Ryan Miller

8

Untuk masalah ini, saya harus menggunakan: sudo /usr/share/elasticsearch/bin/elasticsearch start

untuk bisa mendapatkan sesuatu di port 9200/9300 (sudo netstat -ntlp) dan respons ke:

curl -XGET http://localhost:9200


1
Terima kasih. Ini untuk ElasticSearch 1. ~ versi.
MontrealDevOne

memeriksa status, pesan kesalahan tidak membantu. hanya ketika menjalankan file bin secara manual itu memberikan pesan kesalahan yang benar.
sulaiman sudirman

6

Edit elasticsearch.ymldan tambahkan baris berikut

http.host: 0.0.0.0

network.host: 0.0.0.0 tidak berhasil


3

Buka Dockerfile bawah elasticsearch folder dan memperbarui "network.host = 0.0.0.0" dengan "network.host = 127.0.0.1" . Kemudian mulai ulang penampung. Periksa koneksi Anda dengan 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"
}

3

Saya memiliki masalah yang sama menolak koneksi pada port 9200. Periksa status layanan elasticsearch dengan perintah sudo service elasticsearch status. Jika itu menampilkan kesalahan dan Anda membaca apa pun yang berhubungan dengan Java, mungkin masalahnya adalah memori jvm Anda. Anda dapat mengeditnya di /etc/elasticsearch/jvm.options. Untuk mesin memori RAM 1GB di lingkungan Amazon, saya tetap menggunakan konfigurasi saya:

-Xms128m
-Xmx128m

Setelah mengatur itu dan memulai ulang layanan elasticsearch, itu berfungsi seperti pesona. Pemeriksaan Nmap dan UFW (jika Anda menggunakan firewall lokal) juga berguna.


1
Inilah yang melakukannya untuk saya. Konfigurasi saya memiliki 1g untuk keduanya, dan instance AWS (t2.micro) tidak dapat mengalokasikan banyak memori untuk itu. Perintah start dan restart gagal secara diam-diam, tetapi perintah status merinci kesalahannya.
Greg Charles

2

Saya mengalami masalah serupa.

Inilah cara saya menyelesaikannya

Jalankan perintah layanan di bawah ini untuk memulai ElasticSearch

sudo service elasticsearch start

ATAU

sudo systemctl start elasticsearch

Jika Anda masih mendapatkan kesalahan

curl: (7) Gagal terhubung ke port localhost 9200: Koneksi ditolak

Jalankan perintah layanan di bawah ini untuk memeriksa status ElasticSearch

sudo service elasticsearch status

ATAU

sudo systemctl status elasticsearch

Jika Anda mendapatkan respon ( Aktif: aktif (berjalan) ) seperti di bawah ini maka Anda ElasticSearch aktif dan berjalan

● elasticsearch.service - Elasticsearch Dimuat: dimuat (/usr/lib/systemd/system/elasticsearch.service; dinonaktifkan; preset vendor: aktif) Aktif: aktif (berjalan) sejak Sabtu 2019-09-21 11:22:21 WAT; 3 detik lalu

Anda kemudian dapat menguji apakah node Elasticsearch Anda berjalan dengan mengirimkan permintaan HTTP ke port 9200 di localhost menggunakan perintah di bawah ini:

curl http://localhost:9200

Jika tidak, jika Anda mendapatkan respons dengan respons yang berbeda, Anda mungkin harus melakukan debug lebih lanjut untuk memperbaikinya, tetapi menjalankan perintah di bawah ini, akan membantu Anda mendeteksi peringatan apa yang menahan layanan ElasticSearch dari awal.

sudo service elasticsearch status

ATAU

sudo systemctl status elasticsearch

Jika Anda ingin menghentikan layanan ElasticSearch , cukup jalankan perintah layanan di bawah ini;

sudo service elasticsearch stop

ATAU

sudo systemctl stop elasticsearch

N / B: Anda mungkin harus menjalankan perintah sudo service elasticsearch status ATAU sudo systemctl status elasticsearch setiap kali menemukan kesalahan, untuk memberi tahu status layanan ElasticSearch .

Ini juga berlaku untuk Kibana , jalankan perintah sudo service kibana status ATAU sudo systemctl status kibana setiap kali Anda menemukan kesalahan, untuk memberi tahu status layanan Kibana .

Itu saja.

Saya harap ini membantu.


1

Dalam hal ini, pertama-tama Anda perlu memeriksa versi java menggunakan perintah di bawah ini:

java -version

setelah menjalankan perintah ini Anda mendapatkan sesuatu seperti ini:

versi java "1.7.0_51" OpenJDK Runtime Environment (rhel-2.4.5.5.el7-x86_64 u51-b31) OpenJDK 64-Bit Server VM (build 24.51-b03, mode campuran)

lalu gunakan perintah ini:

update-alternatives --config java

dan pilih versi di bawah ini

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

Enter untuk menyimpan pilihan saat ini [+], atau ketik nomor pilihan: 2

curl -XGET http://127.0.0.1:9200

1

2 sen saya,

Saya baru saja mengikuti prosedur instal di Digital Ocean, ternyata paket yang tersedia di repo tidak up-to-date, saya menghapus semuanya dan mengikuti prosedur penginstalan langsung dari Elastic Search dan semuanya berfungsi sekarang, pada dasarnya perilaku di luar kotak aktif a localhost menunjuk ke 9200. Hal / masalah yang sama ditemukan dengan Kibana, solusi bagi saya juga, untuk menghapus semuanya dan hanya mengikuti prosedur mereka, Semoga ini menghemat dua jam (waktu yang saya habiskan untuk mencari tahu cara mengatur ELK!)

en


1

Perbarui jdk Anda ke versi minimum terbaru untuk elasticsearch Anda.


1

Ubah network.bind menjadi 0.0.0.0 dan http: port menjadi 9200. Alamat bind 0.0.0.0 berarti semua alamat IPv4 pada mesin lokal. Jika sebuah host memiliki dua alamat IP, 192.168.1.1 dan 10.1.2.1, dan server yang berjalan pada host mendengarkan 0.0.0.0, itu akan dapat dijangkau di kedua IP tersebut.


1

Jika Anda mengalami kesalahan Sambungan ditolak , cukup jalankan perintah di bawah ini untuk memeriksa status layanan ElasticSearch

sudo service elasticsearch status

Ini akan membantu Anda menguraikan status layanan ElasticSearch dan apa yang harus dilakukan.



0

Setelah menggunakan beberapa jawaban di atas, jangan lupa bahwa setelah penginstalan apt, reboot total mungkin dilakukan.


0

Hanya untuk menambahkan ini, saya telah menemukan banyak dokumen melalui google yang mengatakan untuk mengatur network.host ke localhost.

Melakukan hal itu memberi saya koneksi terkenal yang ditolak. Anda harus menggunakan alamat IP (127.0.0.1), bukan FQDN.

Jeff


0

Pastikan bahwa port 9200terbuka untuk kasus saya, itu adalah contoh amazon jadi ketika saya membukanya di grup keamanan saya, perintah curl berfungsi.


0

Menonaktifkan SELinux berhasil untuk saya, meskipun saya tidak menyarankannya - saya melakukannya hanya untuk PoC


0

Masalah saya adalah saya tidak dapat bekerja dengan localhostsaya perlu mengaturnya ke alamat IP localhost

network.bind_host: 127.0.0.1


0

Dalam kasus saya, masalahnya ada pada versi java, yang saya instal open-jdk 11sebelumnya. Itu menciptakan masalah saat memulai layanan. Saya mengubahnya open-jdk 8dan itu mulai bekerja

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.