我有一个包含10个节点的Elasticsearch集群。通过Java API连接到集群时,我只连接到主节点。
TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("masterNode"), 9300));
如果主节点出现故障,我的程序会自动连接到下一个主节点吗?如果我必须在初始主节点失败后重新启动Java程序,该怎么办?
答案 0 :(得分:0)
对于 TransportClient 客户端,客户端有嗅探设置:
client.transport.sniff 模式 false ,客户端只会尝试连接已配置的 IP < / strong>,as:
addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(“masterNode”),9300));
client.transport.sniff 模式为 true ,客户端将首先连接到已配置的 IP ,以及统计信息 API,以发现群集可用数据节点,以动态添加新主机并删除旧主机。(注意:如果您的群集与您的客户端应用有不同的网络,连接到群集数据节点会有问题),如:
设置设置= Settings.settingsBuilder() .put(“client.transport.sniff”,true).build(); TransportClient客户端=新的PreBuiltTransportClient(设置);
您的问题是,当嗅探设置为真并且它们位于同一网络中时,您的连接节点发生故障,它仍然可以连接到群集强>
参考:https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.0/transport-client.html