2014-07-17 87 views
1

我使用羣二ES節點(ES版本1.0.1),我需要作以下澄清:elasticsearch聚類問題

當我啓動應用程序並將其連接到兩個節點,我可以看到雙方服務的請求節點,但是當我停止其中一臺服務器時,它會拋出異常並且其他節點仍然工作,但是50%的請求仍然會得到異常,並且整個流量不會轉移到正在運行的節點上。集羣

我有以下配置: 1節點:

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

你打算放下哪一個?第二個節點具有以下屬性: node.master:false

如果只有該節點正在運行,則可能會導致問題。

希望它有幫助

+0

感謝您的回覆。所以另一個觀察是,如果我們以master-master模式運行,其中node.master:對於兩個ES節點都是true,它表示如果其中一個節點發生故障,則其他節點將工作。但是,如果我們在主 - 從模式下運行兩個ES節點,其中slave node.master爲false且master爲down,則它將不起作用。主控制器關閉時,我們可以使主從模式工作嗎? – user3684987

+0

我認爲沒有辦法做到這一點。 elasticsearch中沒有明確的主從模式。存在子節點,數據節點和主節點角色,其中子節點表示它既沒有主數據角色,也沒有數據角色。 –

0

感謝您的回覆。因此,另一個觀察/解決方案是,如果我們以master-master模式運行,其中node.master:對於兩個ES節點均爲true,這表示如果其中一個節點發生故障,則其他節點將工作。但是,如果我們在主從模式下運行兩個ES節點,其中對於從節點.master而言,主節點處於關閉狀態,則在沒有主節點的情況下,從節點將無法工作。主站關閉時,有什麼方法可以使主 - 從模型僅與從站協同工作?