公司使用ES5.2.2版本,5台机器构建的ES集群,对外挂了个LVS,设置了一个域名 abc:5500,希望业务访问通过abc这个域名,这样ES集群自身的增减对业务不产生任何影响。但是目前发现,当LVS去掉ES里某台机器时,业务本身还是能连到去掉的那台机器上。我们怀疑是不是因为ES 的rest客户端是长连接的原因?不知道应该怎么避免这种情况,以及改后是否会对性能有影响?希望有朋友能帮忙解答
我们的业务创建ES客户端的代码如下:
httphost = "abc.5500';
RestClient client =
RestClient.builder(httphost)
.setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {
@Override
public RequestConfig.Builder customizeRequestConfig(
RequestConfig.Builder requestConfigBuilder) {
return requestConfigBuilder.setConnectTimeout(connTimeout1)
.setSocketTimeout(readTimeout1);
}
}).setMaxRetryTimeoutMillis(retryTimeout1).build();
执行查询的代码如下:
response = client.performRequest("GET", path.toString(), params);
我们的业务创建ES客户端的代码如下:
httphost = "abc.5500';
RestClient client =
RestClient.builder(httphost)
.setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {
@Override
public RequestConfig.Builder customizeRequestConfig(
RequestConfig.Builder requestConfigBuilder) {
return requestConfigBuilder.setConnectTimeout(connTimeout1)
.setSocketTimeout(readTimeout1);
}
}).setMaxRetryTimeoutMillis(retryTimeout1).build();
执行查询的代码如下:
response = client.performRequest("GET", path.toString(), params);
2 个回复
blackprint
赞同来自:
medcl - 今晚打老虎。
赞同来自:
es的RESTclient会自动嗅探集群节点,不过你代码里面好像没有使用,你的LVS是DR模式么?
LVS使用NAT模式,只能通过lvs代理访问,业务直接连不上es的节点。