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'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?
Yanıtlar:
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 .
network.bind_hostDeğeri açıkça ayarlamam gerekiyordu , bu benim sorunumdu.
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.
/Applications/elasticsearch-2.1.1/config/elasticsearch.ymlve düzenlemem gereken parametre network.hostdeğil network.bind_host.
curl http://172.17.0.2:9200. Bunun yaygın olarak kullanılan docker ip adresleme olduğunu fark edeceksiniz.
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/
chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/START_DAEMON=true
sudo systemctl restart elasticsearch@kalanit tarafından yanıtlandı, sorunu çözdü
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.
sudo systemctl enable elasticsearch.
systemctlişler ve hizmetin olmadığını anlayamadım ?
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ı.
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
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.
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
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"
}
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.
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.
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
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
Elasticsearch için jdk'nizi en son minimum sürüme güncelleyin.
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.
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.
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ı.
SELinux'u devre dışı bırakmak benim için çalıştı, bunu önermesem de - bunu sadece PoC için yaptım
Sorunum, çalışamadığım localhostiçin localhost'un IP adresine ayarlamam gerektiğiydi.
network.bind_host: 127.0.0.1
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ı
curl -X GET "http://localhost:9200"