弹性搜索聚类问题

时间:2014-07-17 05:15:36

标签: java database elasticsearch elasticsearch-jdbc-river

我在群集中使用两个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流程时,为什么运行节点不能提供所有请求,有人可以告诉我吗?

2 个答案:

答案 0 :(得分:0)

你正打倒哪一个?第二个节点具有以下属性: node.master:false

如果只有该节点正在运行,这可能会导致问题。

希望有所帮助

答案 1 :(得分:0)

感谢您的回复。所以另一个观察/解决方案是,如果我们在主 - 主模式下运行,其中node.master:对于两个ES节点都是真的,这意味着如果其中一个节点发生故障,那么其他节点将起作用。但是如果我们在主从模式下运行两个ES节点,其中对于从节点.master为false而master为down,则slave将无法在没有master的情况下工作。有没有什么办法可以让我们在主机关闭时让主从模型只与奴隶一起工作?