我在群集中使用两个ES节点(ES版本1.0.1),我需要澄清以下内容:
当我启动应用程序并连接到两个节点时,我可以看到两个节点都提供的请求,但是当我停止服务器之一时,它会抛出异常而其他节点仍然有效但50%的请求仍然会出现异常而整个流量不是转移到运行节点。
我有以下群集配置: 第一节点:
discovery.zen.minimum_master_nodes: 1
node.data: true
discovery.zen.ping.unicast.hosts: ["product-elasticsearch-1","product-elasticsearch-2"]
node.master: true
couchbase.maxConcurrentRequests: 1024
2nd Node
discovery.zen.minimum_master_nodes: 1
node.data: true
discovery.zen.ping.unicast.hosts: ["product-elasticsearch","product-elasticsearch-2"]
node.master: false
couchbase.maxConcurrentRequests: 1024
以下是传输客户端的代码:
settings = ImmutableSettings.settingsBuilder().put("cluster.name", clusterName)
.put("es.http.timeout",timeout)
.put("client.transport.ping_timeout",pingTimeout)
.put("es.http.retries",retries)
.build();
for (String host : hostList) {
transportAddressList.add(new InetSocketTransportAddress(host,port));
}
Collections.shuffle(transportAddressList);
// Using Transport Client
trasportClient = new TransportClient(settings).addTransportAddresses(transportAddressList.toArray(addressArray));
当我停止一个ES流程时,为什么运行节点不能提供所有请求,有人可以告诉我吗?
答案 0 :(得分:0)
如果只有该节点正在运行,这可能会导致问题。
希望有所帮助
答案 1 :(得分:0)
感谢您的回复。所以另一个观察/解决方案是,如果我们在主 - 主模式下运行,其中node.master:对于两个ES节点都是真的,这意味着如果其中一个节点发生故障,那么其他节点将起作用。但是如果我们在主从模式下运行两个ES节点,其中对于从节点.master为false而master为down,则slave将无法在没有master的情况下工作。有没有什么办法可以让我们在主机关闭时让主从模型只与奴隶一起工作?