Я установил Elasticsearch и Kibana в Amazon VPC, где два экземпляра 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
}
Когда я делаю curl -XGET http://es_node1:9200
и curl -XGET http://es_node2:9200
из узла kibana, он работает нормально, где es_node1 и es_node2 - два узла кластера elasticsearch. Но когда я открываю панель управления Kibana в браузере, я получаю -
Error Could not contact Elasticsearch at http://xxxx:9200. Please ensure that Elasticsearch is reachable from your system.
В config.js
файле Kibana я попытался указать частный IP или частное DNS-имя экземпляра elasticsearch, но это не сработало. Обратите внимание, что узлы elasticsearch доступны из узла Kibana с помощью curl из командной строки.
Когда я делаю те же настройки вне VPC, все работает нормально. Я подозреваю, что проблема в том, что до тех пор, пока кластер elasticsearch не станет общедоступным (т.е. не будет помещен в общедоступную подсеть), Kibana будет продолжать показывать эту ошибку.