1

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

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

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

4

1 回答 1

0

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

  1. client.transport.sniff模式为false客户端只会尝试连接配置的IP,如:

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

  2. client.transport.sniff模式为true客户端将首先连接到配置的IP,并通过stats API 发现集群可用的数据节点以动态添加新主机和删除旧主机。(注意:如果您的集群与您的客户端应用程序有不同的网络,连接到集群数据节点会有问题),如:

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

因此,作为您的问题,当嗅探设置为并且它们位于同一网络下时,您连接的节点失败,它仍然可以连接到集群

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

于 2017-01-25T12:13:23.200 回答