弹性搜索 - Ubuntu - 连接被拒绝

Elastic Search - Ubuntu - Connection Refused

我已经在 Ubuntu 14.04 上安装了 elastic 2.2。我保留了 elastic 的默认初始设置,并且可以从该系统访问弹性实例 localhost:9200。

现在,当我尝试通过另一个系统使用服务器的 IP/DNS 名称时:

curl -XGET "http://<IP_ADDRESS_UBUNTU_SERVER>:9200"

我得到一个错误:

Failed to connect to <IP_ADDRESS_UBUNTU_SERVER> port 9200: Connection refused

我尝试更改 elasticsearch.yml 文件中的几个参数并将其设置为:

network.host: 0.0.0.0
http.port: 9200

但这并没有解决问题。我设置了与拒绝连接相同的错误。事实上,设置上述参数并尝试使用 localhost:9200 从服务器访问也会出现连接超时错误。

现在配置是什么,我需要设置这个弹性实例才能从外部访问?

编辑: 我尝试将 Ubuntu 服务器的 IP 地址设置为 network.host,但我在日志文件中看到以下错误:

BindTransportException[Failed to bind to [9300-9400]]; nested: ChannelException[Failed to bind to: /10.173.1.176:9400]; nested: BindException[Cannot assign requested address];
        at org.elasticsearch.transport.netty.NettyTransport.bindToPort(NettyTransport.java:477)
        at org.elasticsearch.transport.netty.NettyTransport.bindServerBootstrap(NettyTransport.java:439)
        at org.elasticsearch.transport.netty.NettyTransport.doStart(NettyTransport.java:320)
        at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:68)
        at org.elasticsearch.transport.TransportService.doStart(TransportService.java:170)
        at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:68)
        at org.elasticsearch.node.Node.start(Node.java:252)
        at org.elasticsearch.bootstrap.Bootstrap.start(Bootstrap.java:221)
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:287)
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35)
Caused by: org.jboss.netty.channel.ChannelException: Failed to bind to: /10.173.1.176:9400
        at org.jboss.netty.bootstrap.ServerBootstrap.bind(ServerBootstrap.java:272)
        at org.elasticsearch.transport.netty.NettyTransport.onPortNumber(NettyTransport.java:459)
        at org.elasticsearch.common.transport.PortsRange.iterate(PortsRange.java:69)
        at org.elasticsearch.transport.netty.NettyTransport.bindToPort(NettyTransport.java:455)
        ... 9 more
Caused by: java.net.BindException: Cannot assign requested address
        at sun.nio.ch.Net.bind0(Native Method)
        at sun.nio.ch.Net.bind(Net.java:433)
        at sun.nio.ch.Net.bind(Net.java:425)
        at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
        at org.jboss.netty.channel.socket.nio.NioServerBoss$RegisterTask.run(NioServerBoss.java:193)
        at org.jboss.netty.channel.socket.nio.AbstractNioSelector.processTaskQueue(AbstractNioSelector.java:391)
        at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:315)
        at org.jboss.netty.channel.socket.nio.NioServerBoss.run(NioServerBoss.java:42)
        at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
        at org.jboss.netty.util.internal.DeadLockProofWorker.run(DeadLockProofWorker.java:42)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

这是由于配置文件中的错误造成的。我没有遵守 YAML 指南,而是盲目地遵循弹性帮助文档。

必须以 YML 格式指定网络和端口,如下所示:

network:
  host: 0.0.0.0
http:
  port: 9200

之后重启弹性服务。如果出现问题,参考elastic日志文件,查看实例是否绑定了上述IP和9200端口,也可以查看listening IP/port (netstat -l -n) 。必须有一个条目,如:

tcp 0 0 0.0.0.0:9200 0.0.0.0:* LISTEN 

希望这对您有所帮助并祝您搜索愉快..

除了在 config.yml 中正确处理之外,如果您正在编写自己的单元文件,您将需要通过在单元文件中设置一些设置来通过启动检查(不仅仅是在 sysctl.conf).所以在 /lib/systemd/system/elasticsearch.service

确保在指示部分中有这些设置:

[Unit]
LimitMEMLOCK=infinity

[Service]
LimitNOFILE=65536