2013-06-20 1 views
8

Secondo la documentazione elasticsearch, la regola per il livello write_consistency quorum è:undestanding il write_consistency e la regola del quorum di elasticsearch

quorum (> Repliche/2 + 1)

Utilizzando ES 0.19.10, su un installazione con 16 schegge/3 repliche otterremo 16 frammenti primari 48 repliche

Running 2 nodi, avremo 16 (primario) + 16 (repliche) = 32 frammenti attivi.

Perché la regola del numero di partecipanti sia soddisfatta, quorum> 48/2 + 1 = 25 frammenti attivi.

Ora, il test dimostra che il livello write_consistency non è soddisfatto (le operazioni di scrittura scadono) finché non vengono eseguiti 3 nodi. Questo tipo di ha senso, dal momento che potremmo avere un cervello diviso tra gruppi di 2 nodi ciascuno in questa configurazione, ma non capisco come dovrebbe funzionare questa regola? Sto usando i numeri sbagliati qui?

+0

Sembra che la coerenza di scrittura sia impostata su tutti. Controlla se le tue scritture hanno "coerenza": tutte – chaos

+0

^Intendevo su ogni singola richiesta di indice. – chaos

risposta

5

conteggio shard primario in realtà non importa, quindi ho intenzione di sostituirlo con N.

Se si dispone di un indice con N schegge e 2 repliche, ci sono tre frammenti del gruppo di replica. Ciò significa che il quorum è due: il principale più una delle repliche. Sono necessari due shard attivi, che in genere significano due macchine attive, per soddisfare il parametro di coerenza di scrittura

Un indice con N shards e 3 repliche ha quattro frammenti nel gruppo di replica (primario + 3 repliche), quindi un quorum è tre .

Un indice con N shards e 1 replica è un caso speciale, poiché non è possibile avere un quorum con solo due frammenti. Con una sola replica, Elasticsearch richiede solo un singolo frammento attivo (ad esempio il primario), pertanto l'impostazione quorum è identica all'impostazione one per questa particolare disposizione.

Alcune note:

  • 0,19 è molto vecchio, si dovrebbe assolutamente, assolutamente, l'aggiornamento positivamente. Non riesco nemmeno a contare quante correzioni di bug e miglioramenti delle prestazioni sono stati aggiunti da quel rilascio :)

  • La coerenza di scrittura è semplicemente un controllo del gateway. Prima di eseguire la richiesta di indicizzazione, il nodo eseguirà un polling per vedere se viene soddisfatta la coerenza in scrittura. Se lo è, tenta di eseguire l'indice e spingere la replica. Questo non garantisce che le repliche avranno successo ... potrebbero facilmente fallire e lo vedrai nella risposta. È semplicemente un meccanismo per arrestare il processo di indicizzazione se l'impostazione di coerenza non è soddisfatta.

  • Una configurazione "completamente replicata" con due nodi è 1 frammento primario + 1 replica. Ogni nodo ha un set completo di dati. Non c'è motivo di avere più repliche, dal momento che ES rifiuta di mettere le copie degli stessi dati sulla stessa macchina (non ha senso, non aiuta HA). L'incapacità di indicizzare è solo un effetto collaterale della coerenza della scrittura, ma segnala un problema più grande con la configurazione :)