2015-05-26 50 views
3

我是Cassandra的一名完全新手,我只是設置它並與它一起玩,並使用cqlsh測試不同的場景。Cassandra錯誤:「無法完成請求:一個或多個節點不可用。」

我現在有2個數據中心是這樣的4個節點(當然是正確的IP地址):

a.b.c.d=DC1:RACK1 a.b.c.d=DC1:RACK1 a.b.c.d=DC2:RACK1 a.b.c.d=DC2:RACK1

默認= DCX:RACKX

一切似乎目前爲止有意義,除了我故意關閉了一個節點以查看結果行爲,並且我注意到我無法再在其餘節點上查詢/插入數據它會導致「無法完成請求:一個或多個節點不可用」。

我得到一個節點不可用(我故意這麼做),但是不是分佈式數據庫的一個要點是繼續支持功能,即使某些節點停機?爲什麼要讓一個節點完全停止一切?

我錯過了什麼?

任何幫助將不勝感激!

回答

2

是否有可能您的密鑰空間中的replication factor值不是大於1?例如:

CREATE KEYSPACE "Excalibur" WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'dc1' : 2, 'dc2' : 2};

將配置您的密鑰空間,使數據複製到每個dc1和dc2數據中心的2個節點。

如果您的複製因子是1,並且節點發生故障,擁有您正在查詢的數據,您將無法檢索數據,並且C *將因不可用的錯誤而快速失敗。一般情況下,如果C *檢測到無法滿足consistency level來處理您的查詢,它將快速失敗。

+0

謝謝安迪!就是這樣。現在有意義 – user3376961

3

假設一個節點仍應允許您查詢羣集,但您需要考慮的幾件事情是正確的。

我假設「nodetool狀態」返回該DC預期的結果(即「UN」爲UP節點,「DN」,爲被擊落節點)

檢查以下內容:

  • 連接的一致性級別(默認爲ONE)
  • KEYSPACE複製策略和因子(默認是簡單的,機架/ DC不知情)
    • 在cqlsh 「形容密鑰空間」

請注意,如果您一直在使用複製因子,則需要在節點上運行「nodetool repair」。

更多讀物here

+0

謝謝布萊克!這是複製因素。 – user3376961

相關問題