2012-09-05 19 views
7

Si è verificato un problema "me.prettyprint.hector.api.exceptions.HUnavailableException:: potrebbero non essere presenti repliche sufficienti per gestire il livello di coerenza." quando ho RF = 1, Read Consistency Level = 1 e uno dei nodi in 6 node ring/cluster è inattivo. Tutte le mie letture stanno fallendo con questa eccezione. Qualche idea? Idealmente, solo le letture che cercano i dati nel nodo che è inattivo dovrebbero fallire e tutte le altre letture dovrebbero avere successo?Disponibilità di Cassandra

+0

Vedi lo stesso problema con cqlsh? Hector sta cercando di essere troppo intelligente e fa il proprio rilevamento di disponibilità. – jbellis

+0

Sì. Ho provato CQLSH anche lo stesso numero –

risposta

4

Ci potrebbe essere un paio di possibilità:

  • Si sta eseguendo una query multi-fila (get_range, get_indexed_slices, multiget, o gli equivalenti CQL) che richiede più nodi di essere all'altezza
  • Il cluster è sbilanciato, con il nodo verso il basso che possiede la maggior parte dell'anello; una cattiva configurazione multi-CC potrebbe anche produrre qualcosa di simile
  • Il tuo cluster non era in uno stato buono per cominciare, dove alcuni nodi non ne vedono altri. Assicurarsi che l'anello nodetool mostri lo stesso output quando si esegue su ciascun nodo nel cluster

Se nessuna di queste cause è la causa, ricontrollare che si specifica correttamente il livello di coerenza con Hector e cqlsh.

3

Ho visto qualcosa di simile quando ho configurato erroneamente le mie impostazioni di replica, in particolare ho avuto i datacenter errati denominati om la strategia di replica. Controlla i tuoi DC (supponendo che tu stia usando NetworkTopologyStrategy).

Se non si conosce già i nomi DC, in una shell su uno dei nodi gestiscono:

$ nodetool -h localhost ring 
Address   DC   Rack  Status State Load   Owns Token          
                       141784319550391000000000000000000000000  
172.26.233.135 Cassandra rack1  Up  Normal 25.75 MB  16.67% 0           
172.26.233.136 Cassandra rack1  Up  Normal 26.03 MB  16.67% 28356863910078200000000000000000000000  
172.26.233.137 Cassandra rack1  Up  Normal 27.19 MB  16.67% 56713727820156400000000000000000000000  
172.26.233.138 Cassandra rack1  Up  Normal 26.78 MB  16.67% 85070591730234600000000000000000000000  
172.26.233.139 Solr  rack1  Up  Normal 24.47 MB  16.67% 113427455640313000000000000000000000000  
172.26.233.140 Solr  rack1  Up  Normal 26.66 MB  16.67% 141784319550391000000000000000000000000 

Si può vedere abbiamo due DC, Cassandra e Solr (questo è un cluster DSE) .

In cassandra-cli:

use Keyspace1; 
describe; 

CLI stamperà le opzioni strategiche:

Keyspace: Catalog: 
    Replication Strategy: org.apache.cassandra.locator.NetworkTopologyStrategy 
    Durable Writes: true 
    Options: [DC1:3] 
... 

Abbiamo un mis-match. Cassandra sta cercando un datacenter denominato DC1, quindi l'UnavailableException. Dobbiamo aggiornare le opzioni di replica in modo che corrispondano ai DC effettivi nel nostro cluster. Nella CLI, aggiorna le opzioni strategiche per il tuo spazio delle chiavi usando i nomi dei data center:

update keyspace Keyspace1 with strategy_options = {Cassandra:3,Solr:2}; 
+0

Nel mio caso, avevo copiato lo schema cassandra dall'ambiente di produzione (che aveva due data center) all'ambiente QA (che aveva un unico centro dati). Dopo aver corretto lo schema per indicare un centro dati, il problema è stato risolto. – zafar142003

Problemi correlati