虽然http请求可用,但Elasticsearch无法连接到master

时间:2017-02-18 05:28:06

标签: elasticsearch

我使用三台服务器来证明Elasticsearch的集群功能。 这是我的服务器之一'关键配置:

  • Server1 :(公共地址:115.159.157.163)

    cluster.name: czqofnju
    node.name: qiang_server
    network.host: 0.0.0.0
    discovery.zen.ping.unicast.hosts: ["115.159.156.116", "182.254.212.194"]
    

服务器的公共IP地址为115.159.157.163。但是当启动elasticsearch时,它的日志显示它绑定到私有地址

[2017-02-18T10:36:14,491][INFO ][o.e.t.TransportService   ] 
[qiang_server] publish_address {10.105.197.255:9300}, bound_addresses {10.105.197.255:9300}

然后,当我尝试使用其他服务器连接到此服务器时,它会显示:

[2017-02-18T11:31:05,664][WARN ][o.e.d.z.ZenDiscovery     ]
[dbc_server] failed to connect to master 
[{qiang_server}{GYT635GNSaqOpBdQK4ZcGg}{O1sDFagITmWFnXRBf-uweA}{10.105.197.255}{10.105.197.255:9300}], retrying... 
org.elasticsearch.transport.ConnectTransportException: [qiang_server][10.105.197.255:9300] connect_timeout[30s]

此服务器的密钥配置如下:

  • Server2 :(公共地址:182.254.212.194)

    cluster.name: czqofnju
    node.name: dbc_server
    network.host: 0.0.0.0
    discovery.zen.ping.unicast.hosts: ["115.159.157.163"]
    

如果我尝试向Server1发送HTTP请求,它可以响应。

现在我的问题是:为什么server2可以访问server1并获取它的私有地址:10.105.197.255及其节点名称:qiang_server,但仍然无法连接到server1?

据我所知,10.105.197.255是私有地址,但server2找到了server1,为什么他们仍然无法加入?

以下是我的一些尝试,都失败了: 显然10.105.197.255是私有地址, 我已尝试过像network.host这样的其他配置

  1. 网站:仍为同一地址

  2. 115.159.157.163:这是我服务器的公共地址,而异常暗示无法绑定到请求地址

  3. 全球:结果异常"找不到正在运行的全球范围(公共)地址"

      System: CentOS 7.2 4
      JVM: OpenJDK 1.8.0_121
      Elasticsearch: 5.2.1
    

    任何建议都会有所帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

请确认您使用的是该公共IP地址的NAT。如果是这样,则不支持您的设置。

验证:

ip a

如果您在列出的接口上没有看到您的公共IP地址,那么您正在使用NAT。这就是为什么你的network.host: 115.159.157.163无法绑定。

Source

如果您使用像AWS这样的云提供商,则应根据云提供商设置VPC或其他任何内容,并使elasticsearch绑定到其他节点可访问的私有IP地址,以形成簇。然后将弹性IP(公共IP)绑定到主机以进行外部HTTP访问。