2013-08-28 19 views
5

Üçüncü taraf bir sunucudan sorgulamaya çalıştığım varsayılan bir elasticsearch yüklemem var. Ancak, varsayılan olarak bu engellenmiş gibi görünüyor.Elasticsearch'e uzaktan erişim izni verme

Herkes, elasticsearch'ü farklı bir sunucudan sorgulayabilmem için nasıl yapılandırabileceğimi söyleyebilir mi?

Herhangi bir yardım çok takdir edilecektir.

James varsayılan olarak herhangi bir kısıtlama yoktur

cevap

1

. Elasticsearch REST API uç noktasına uzaktan erişmek için, elasticsearch'in kurulu olduğu sunucuda aşağıdaki değişikliklerin yapılması gerekir.

  • Elasticsearch Yapılandırma Değişikliği Güncelleme tüm IPv4 bağlanma Örneğin elasticsearch belgelerinde sağlanan yönergelere uygun olarak elasticsearch.yml içinde network.host mülkiyet, yerel makinedeki ağa aşağıdaki gibi değişiklik giderir. anasistem: 0.0.0.0

  • Güvenlik Duvarı Kuralları Güncelleştirme Bağlantı noktası 9200'e erişebilmek için Linux güvenlik duvarını güncelleyin. Güvenlik duvarına kural eklemek için lütfen Linux belgelerinize başvurun. Örneğin

duvarı-cmd $ sudo güvenlik duvarı-cmd --zone = kamu --permanent --add portlu = 9200/tcp kullanmak CentosOS tüm sunucularına erişimi (kamu) izin vermek başarı $ sudo firewall-cmd --reload başarı

Not: Üretim ortamında halka açık erişim engellenir. Kısıtlı bir erişim tercih edilmelidir.

1

, ElasticSearch portu 9200 bir standart HTTP API maruz.

Üçüncü taraf sunucusundan şunları yapabilirsiniz: curl http://es_hostname:9200/?

+0

Damien - sen ayin var. varsayılan kısıtlama yoktur. – naren

+1

**, ** IPv4 için bir kısıtlamadır. Standart API yerel testler için para cezası veriyor. Uzaktan testler değil. –

+0

ES> 2.0'dan yeni bir kısıtlama var, network.host'u şimdi yapılandırabilirsiniz ("_local_" ve "_site_" gibi). – Damien

2

Düzenleme: Sisso aşağıda onun yorumunda bahseder gibi, Elasticsearch 2,0 olarak en az varsayılan olarak localhost'a bağlanır. Daha fazla bilgi için bkz. https://www.elastic.co/guide/en/elasticsearch/reference/2.0/modules-network.html.


olarak Damien varsayılan olarak ES portuna 9200 tüm erişimi sağlar onun cevabını bahseder. Aslında, ES kaynağına kimlik doğrulama sağlamak için harici araçları kullanmanız gerekir - bir webapp öneki gibi bir şey veya Basic Auth açıkken basit bir basit nginx. Uzak bir sisteme erişmesini engelleyebilir

şeyler (muhtemelen bu biliyorum):

  • ağ yapılandırma sorunlarını bağlantı noktasında
  • ES konak güvenlik duvarı, gelen istekleri, dışarıya yönelik 9200
  • uzak ana güvenlik duvarı ES ana bilgisayarına ve/veya bağlantı noktasına 9200
  • ES, yanlış IP adresine bağlanacak şekilde yapılandırılmıştır (varsayılan olarak, tüm kullanılabilir IP'lere bağlanır)

En iyi tahminim? Uzak ana bilgisayardan ES ana bilgisayara bağlanabildiğinizi kontrol edin, ardından her iki sistemde de güvenlik duvarını kontrol edin. Daha fazla teşhis edemezseniz, belki de ES posta listesinde (https://groups.google.com/forum/#!forum/elasticsearch) veya IRC kanalında (#reenearch in Freenode) birileri yardımcı olabilir. Config/elasticsearch.yml dosyasında, network.host: 0.0.0.0 değerini girin.

+2

Bunun hala doğru olduğunu düşünmüyorum. Geçerli sürüm sadece localhost'a bağlanır. Http://www.elastic.co/guide/en/elasticsearch/reference/2.0/modules-network.html – Sisso

3

Ayrıca ElasticSearch bağlantı noktanız için (9200 ByDefault) Güvenlik Duvarı Gelen Kuralı ekleyin. Biri varsayılan düğümle uzaktan erişim izni vermek ElasticSearch Sürüm 2.3.0

1

çalışmış, settings\elasticsearch.yml olmalıdır:

network.host: 0.0.0.0 
http.port: 9200 

Davam üç örneği lazım. Her bir örnek için, kullanılan port aralığını da belirtmek gerekir. elasticsearch yüklü ve sadece localhost'a bağlanan varsayılan olarak herhangi bir yapılandırma değişikliği olmadan çalıştırılır

network.host: 0.0.0.0 
http.port: 9200-9202