@IDE: Eclipse
@Language: Java
@Elasticsearch
问题描述:
今天在写一个接口去连接ES的时候出现了怎么都连接不上的情况,系统扔出HttpHostConnectException,并且给出的信息是:connect time out. 经过打断点,发现问题出在这一行代码上:
CloseableHttpResponse response = httpClient.execute(post);
我尝试了以下办法:
(1)延长timeout的时间--failed
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(50000).setConnectionRequestTimeout(10000)
.setSocketTimeout(50000).build();
post.setConfig(requestConfig);
.setConnectTimeout(50000).setConnectionRequestTimeout(10000)
.setSocketTimeout(50000).build();
post.setConfig(requestConfig);
(2)关闭本地的防火墙 -- failed
在认真检查了代码的逻辑顺序和应该设置的属性后仍然没有发现问题。然后无意间尝试了一下连接别的服务器,发现成功了。
于是觉得可能是要连接的服务器防火墙规则的问题
用Xshell登陆平台查看防火墙:iptables -nvL
并添加以下防火墙规则,允许accept 外部对9200端口的访问 :iptables -I INPUT -p tcp --dport 9200 -j ACCEPT