在我的环境中,elasticsearch位于只打开标准端口(80,443等)的服务器上。所有其他港口都有防火墙。我目前在端口80上有一个反向代理,它将所有elasticsearch HTTP请求重新路由到elasticsearch的http端口。
我还想将TCP请求重新路由到elasticsearch的{{3}},以便我的本地客户端可以直接将elasticsearch作为客户端节点进行查询。 transport port最近允许TCP负载平衡,这是我想要利用的,但是我在使系统工作时遇到了一些麻烦。这是我的nginx.conf文件(删除了HTTP上下文以隔离问题):
worker_processes 1;
events {
worker_connections 1024;
}
stream {
server {
listen 80;
proxy_pass 127.0.0.1:9300;
}
}
我的客户端节点设置为与mydomain.com:80通信,因此理想情况下应将所有流量路由到内部传输端口。但是,我收到以下例外情况:org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available
我的客户端节点或tcp代理还需要配置其他东西吗?
一些其他信息。我将Elasticsearch的传输端口从9300更改为8030,这是一个打开的端口。当我相应地将我的nginx.conf更改为proxypass到127.0.0.1:8030
时,我的本地客户端节点开始工作,并得到了对我的查询的适当响应。
所以问题似乎是如果我的代理传递到已经打开的端口,它可以工作,但如果端口关闭(9300),代理传递失败。有谁知道为什么会这样,以及如何解决它?如果可能的话,我更愿意坚持使用9300端口。