【问题标题】:Elasticsearch cluster connection via Java API when master node fails主节点失败时通过 Java API 连接 Elasticsearch 集群
【发布时间】:2017-01-25 11:48:25
【问题描述】:

我有一个 10 个节点的 Elasticsearch 集群。通过 Java API 连接到集群时,我只连接到主节点。

TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("masterNode"), 9300));

如果主节点发生故障,我的程序会自动连接到下一个主节点吗?如果初始主节点失败后我必须重新启动 Java 程序怎么办?

【问题讨论】:

    标签: elasticsearch elasticsearch-java-api


    【解决方案1】:

    对于 TransportClient 客户端,有一个 sniff 客户端设置:

    1. client.transport.sniff模式为falseclient只会尝试连接配置的IPs ,如:

      addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("masterNode"), 9300));

    2. client.transport.sniff模式为trueclient会首先连接配置的IPs,并通过 stats API 发现集群可用数据节点以动态添加新主机并删除旧主机。(注意:如果您的 cluster 与您的 client app > 网络不同,连接集群数据节点会有问题),如:

      设置设置 = Settings.settingsBuilder() .put("client.transport.sniff", true).build(); TransportClient 客户端 = new PreBuiltTransportClient(settings);

    所以作为您的问题,当 sniff 设置为 true 并且它们在同一网络下时,您连接的节点失败,它仍然可以连接到 集群强>.

    参考:https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.0/transport-client.html

    【讨论】:

    • sniff 设置的名称是什么,我将放在这里:Settings settings = Settings.builder().put().build();
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    • 2021-07-21
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 1970-01-01
    • 2020-09-12
    相关资源
    最近更新 更多