2015-03-25 23 views
5

Immaginate un caso in cui hoDisabilita ElasticSeach riequilibrio se un nodo è giù

  • 3 (AWS) nodi
  • Index (consente di chiamare amici) con 3 frammenti e 1 replica.

S1 (Indice amici frammento primario 1)

S2 (Indice amici frammento primario 2)

S3 (amici Indice frammento primario 3)

R1 (replica di Shard 1)

R2 (replica del frammento 2) R3 (replica del frammento 3)

Consente sa y che Nodo1 ha (S1 R2) ed è il master

Node2 trovi (S2 R3)
Node3 trovi (S3 R1)

Ora, se a causa di errore di connessione nodo 2 scende.

bilanciamento del carico accadrà e Nodo 1 promuoverà la replica (R2) come replica primaria e nuovo (R2) viene creato nel Node3

Infine dopo bilanciamento del carico sarà come

Node1 ha (S1 S2, R3)
Node3 trovi (S3 R1, R2)

Durante questa ri bilanciamento operazioni pesanti IO accadere e la salute elasticsearch diventerà rosso -> giallo quindi verde.

Il mio requisito è che se il nodo 2 è inattivo, i nodi non devono riequilibrare. Sono OK se i risultati sulla query mostrano risultati solo da frammenti S1 e S3. E quando il nodo 2 è tornato di nuovo, non dovrebbe avvenire alcun bilanciamento.

risposta

2

È possibile eseguire questa operazione disabilitando l'allocazione shard.

curl -XPUT localhost:9200/_cluster/settings -d '{"transient":{"cluster.routing.allocation.enable": "none"}}' 

Se si desidera attivare l'assegnazione spalle:

curl -XPUT localhost:9200/_cluster/settings -d '{"transient":{"cluster.routing.allocation.enable": "all"}}' 
+0

Yea Chris! Penso di aver bisogno di scrivere uno script per controllare i nodi tutto il tempo. Se inattivo disabilita l'assegnazione shard else abilitarlo indietro .. – Cyril