侧边栏壁纸
  • 累计撰写 120 篇文章
  • 累计创建 281 个标签
  • 累计收到 11 条评论
标签搜索
隐藏侧边栏

无法通过9300端口连接远程es集群

骐骏
2019-01-30 / 0 评论 / 0 点赞 / 552 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2019-01-30,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
问题描述: 利用docker在远程主机上部署了一套es节点,在本地电脑上可以通过kibana连接成功,访问ip:9200可以访问成功,通过java客户端连接9300端口,操作失败报错内容为:
NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{o_MdofxbQCiafOWQNe0dVQ}{ip}{123.206.xxx.xxx:9300}] ]
解决:
1. 通过telnet ip 9300发现网络不通。elasticsearch连接远程服务器需要设置network.address参数。修改elasticsearch.yml将network.address设置为0.0.0.0
network.address: 0.0.0.0
增加该配置后,启动docker 报错:
max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
解决:
sudo sysctl -w vm.max_map_count=655360
并用以下命令查看是否修改成功
sysctl -a | grep “vm.max_map_count”
修改配置文件
sudo vim /etc/sysctl.conf
加入:
vm.max_map_count=262144
docker启动成功后,通过java客户端连接依然报错
NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{o_MdofxbQCiafOWQNe0dVQ}{ip}{123.206.xxx.xxx:9300}] ]
原来在java代码中使用嗅探技术,java客户端会去嗅探es集群中的所有节点以便客户端使用,但在嗅探时发生错误造成操作失败。ps:为什么会嗅探失败暂未解决。
解决:
修改java代码将嗅探关闭,采用手动添加节点的方式后操作成功。
java代码:
@PostConstruct
public void initialize() throws Exception {
    Settings esSettings = Settings.builder()
            .put("cluster.name", esClusterName)
            // TODO 关闭网络嗅探 ,自动嗅探时会报错 原因没搞明白
            .put("client.transport.sniff", false).build();
    client = new PreBuiltTransportClient(esSettings);
    String[] esHosts = esHost.trim().split(",");
    // 循环添加配置中的各个es节点
    for (String host : esHosts) {
        client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(host),
                esPort));
    }
}
0

评论区