我在Amazon VPC中设置了Elasticsearch和Kibana,其中两个Elasticsearch实例(形成一个群集)保留在私有子网中,其他节点中的Kibana / nginx位于公共子网中。我可以检查群集健康状况,这很好 -
{
"cluster_name" : "es-cluster",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 2,
"number_of_data_nodes" : 2,
"active_primary_shards" : 0,
"active_shards" : 0,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0
}
当我从kibana节点执行curl -XGET http://es_node1:9200
和curl -XGET http://es_node2:9200
时,它工作正常,其中es_node1和es_node2是elasticsearch集群的两个节点。但是当我在浏览器中打开Kibana仪表板时,我得到了 -
Error Could not contact Elasticsearch at http://xxxx:9200. Please ensure that Elasticsearch is reachable from your system.
在Kibana的config.js
文件中,我尝试过设置弹性搜索实例的私有IP或私有DNS名称,但它不起作用。请注意,可以使用命令行中的curl从Kibana节点访问elasticsearch节点。
当我在VPC外面进行相同的设置时,一切正常。我怀疑问题是,除非弹性搜索集群公开(即放在公共子网中),否则Kibana会继续显示该错误。
答案 0 :(得分:1)
是的,你的怀疑是正确的。
Kibana是一个完全客户端应用程序。这意味着客户端(即最终用户浏览器)需要能够访问elasticsearch集群。