在我的生产环境中,我有一个双节点集群,每个节点都位于不同的物理盒子上。一个节点位于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)通信?如果应用程序所遇到的节点失败,我的应用程序如何切换到另一个节点?
答案 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)
如果需要,可以使用它。