2014-11-24 54 views
1

設置: 2節點,Ec2Snitch
1節點UP 54.1xx.1xx.1xx

1節點關閉54.1xx.2xx.1xx [故意]
Cassandra從一個關閉的節點請求數據?

KEYSPACE NetworkTopology複製的因子2 (兩者節點有數據)

現在我測試讀取一致性級別一。

Im getting「所有主機嘗試查詢失敗。第一個主機嘗試了,54.1xx.2xx.1xx:主機認爲是DOWN,請參閱innerErrors。」
獲取此關閉的節點。

爲什麼我得到這個異常?不應該Cassandra服務自動升級的節點的所有請求? [我期待卡桑德拉來處理它]

或者我們應該處理的是一個DN(Down Normal)的節點 我該如何處理?

如果我手動讓Down節點向上,我會得到所有的迴應,否則我會得到上述錯誤的總前四分之一請求。

+0

你在使用什麼客戶端,客戶端知道哪些節點? – 2014-11-24 13:53:39

+0

Im使用DataStax Node.js驅動程序用於Cassandra' var reader = new cassandra.Client({'54 .1xx.1xx.1xx.compute-1.amazonaws.com','54 .1xx.1xx.1xx。 compute-1.amazonaws.com'], queryOptions:{ 一致性:cassandra.types.consistencies.any, }, \t策略:{負載平衡:新cassandra.policies.loadBalancing.DCAwareRoundRobinPolicy(localDc,remoteNodes)}, '' – mehnaazm 2014-11-25 07:14:14

+0

您可以在client.connect後檢查哪些節點是發現的節點,並在發現時檢查是否有問題:'client.hosts.keys()' – jorgebg 2014-11-25 09:22:26

回答

1

Cassandra的DataStax Node.js驅動程序中的默認負載平衡策略是TokenAwarePolicy with DCAwareRoundRobinPolicy as child policy。 默認情況下,DCAwareRoundRobinPolicy設置爲使用0個遠程節點。

如果本地節點出現故障,您可以將其更改爲使用每個遠程數據中心的1個節點。

var localDc = "east1"; 
var remoteNodes = 1; 
var options = { 
    policies: {loadBalancing: new DCAwareRoundRobinPolicy(localDc, remoteNodes)} 
}; 
var client = new Client(options); 
+0

我仍然得到相同的異常。 – mehnaazm 2014-11-25 07:10:43

+0

如果我的請求是連續的,我能夠通過所有的請求。 但即時通訊錯誤,如果我在for循環中執行請求,即時通訊節點天真想要測試多個閱讀 – mehnaazm 2014-11-27 07:55:12