无法连接到我的代理弹性搜索节点

时间:2017-09-30 10:10:35

标签: elasticsearch nginx go proxy

我遇到从Go客户端连接到es节点的问题。

我在设置基本身份验证的nginx代理后面有弹性搜索。 除了内存之外,所有设置都是ES中的默认设置。

通过浏览器它可以很好地工作,但不是通过这个客户端: https://github.com/olivere/elastic

我阅读了文档,并说它使用/ _nodes / http api进行连接。现在这可能是我做错了的地方,因为那个api的响应看起来像这样:

{
  "_nodes" : {
    "total" : 1,
    "successful" : 1,
    "failed" : 0
  },
  "cluster_name" : "elasticsearch",
  "nodes" : {
    "u6TqFjAvRBa3_4FndfKh4w" : {
      "name" : "u6TqFjA",
      "transport_address" : "127.0.0.1:9300",
      "host" : "127.0.0.1",
      "ip" : "127.0.0.1",
      "version" : "5.6.2",
      "build_hash" : "57e20f3",
      "roles" : [
        "master",
        "data",
        "ingest"
      ],
      "http" : {
        "bound_address" : [
          "[::1]:9200",
          "127.0.0.1:9200"
        ],
        "publish_address" : "127.0.0.1:9200",
        "max_content_length_in_bytes" : 104857600
      }
    }
  }
}

我猜我必须将IP设置为我的实际IP /域(我的域名就像es01.somedomain.com)

那么我如何正确配置弹性系统以便我的客户端可以连接?

我的nginx配置文件与此类似:https://www.elastic.co/blog/playing-http-tricks-nginx

编辑:我通过在客户端的选项中设置elastic.SetSniff(false)找到了一个临时解决方案,但我认为这意味着我无法水平扩展ES。所以还在寻找替代方案。

1 个答案:

答案 0 :(得分:1)

您正在寻找HTTP options,特别是http.publish_hosthttp.publish_port,它们应设置为代理ES节点的Nginx服务器的可公开访问的地址和端口。

请注意,对于传输,Elasticsearch在127.0.0.1:9300上进行侦听,您将无法在其他主机上形成包含节点的群集。可以使用transport options类似地配置传输。