如果主节点出现故障,Elasticsearch如何切换到另一个节点?

时间:2016-03-02 05:30:24

标签: elasticsearch

在我的生产环境中,我有一个双节点集群,每个节点都位于不同的物理盒子上。一个节点位于IP为172.21.0.21的机器上,另一个节点位于172.21.0.22。

在我的开发环境(仅限一台笔记本电脑)中,我有以下可用的Java代码:

client = TransportClient.builder().settings(settings)
        .build()
        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));

现在我需要在生产环境中运行我的应用程序。我的Java代码中使用哪个IP地址与ES(2.2.0)通信?如果应用程序所遇到的节点失败,我的应用程序如何切换到另一个节点?

2 个答案:

答案 0 :(得分:3)

您只需添加希望客户端连接的所有IP地址:

client = TransportClient.builder().settings(settings)
        .build()
        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("172.21.0.21"), 9300))
        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("172.21.0.22"), 9300));

如果其中一个失败,客户端将尝试列表中的其他人,并最终连接回备份后失败的那个。

答案 1 :(得分:2)

TransportClient类中有一个方法,其中包含transport addresses

列表
public TransportClient addTransportAddresses(TransportAddress... transportAddress) 

如果需要,可以使用它。